我有一个分类问题,我不知道如何对这个分类问题进行分类。根据我的理解,
多类分类问题是您具有多个互斥类,并且数据集中的每个数据点只能由一个类标记。例如,在水果的图像分类任务中,标记为苹果的水果数据点不能是橙色,而橙色不能是香蕉,依此类推。在这种情况下,每个数据点只能是Fruits类中的任何一个水果,因此会相应地进行标记。
...为...
多标签分类是一个问题,其中有多组互斥的类可以同时标记数据点。例如,在“汽车的图像分类”任务中,对于汽车类型,标记为轿车的汽车数据点不能是掀背车,掀背车不能是SUV等。同时,与汽车制造商一样,来自大众,福特,梅赛德斯等的汽车数据点也可以标记为一个。因此,在这种情况下,汽车数据点是从两组互斥类的不同集合中标记的。
如果我在这里以错误的方式思考,请纠正我的理解。
现在由于我的问题,我的多个类别的分类问题,让我们说A,B,C,D和E。在这里,每个数据点可以从集合中获得一个或多个类别,如下左所示:< / p>
|-------------|----------| |-------------|-----------------|
| X | y | | X | One-Hot-Y |
|-------------|----------| |-------------|-----------------|
| DP1 | A, B | | DP1 | [1, 1, 0, 0, 0] |
|-------------|----------| |-------------|-----------------|
| DP2 | C | | DP2 | [0, 0, 1, 0, 0] |
|-------------|----------| |-------------|-----------------|
| DP3 | B, E | | DP3 | [0, 1, 0, 0, 1] |
|-------------|----------| |-------------|-----------------|
| DP4 | A, C | | DP4 | [1, 0, 1, 0, 0] |
|-------------|----------| |-------------|-----------------|
| DP5 | D | | DP5 | [0, 0, 0, 1, 0] |
|-------------|----------| |-------------|-----------------|
I One-Hot对标签进行编码,如右上方所示。我的问题是:
谢谢您的回答!
答案 0 :(得分:0)
我可以使用什么损失函数(最好在PyTorch中)来训练 模型来优化一键编码输出
您可以使用torch.nn.BCEWithLogitsLoss(或MultiLabelSoftMarginLoss,因为它们等效),然后看看这是如何工作的。这是标准方法,其他可能性可能是MultilabelMarginLoss。
我们怎么称呼这种分类问题?多标签还是多类?
它是多标签的(因为可以同时存在多个标签)。在一键编码中:
[1, 1, 0, 0, 0], [0, 1, 0, 0, 1] - multilabel
[0, 0, 1, 0, 0] - multiclass
[1], [0] - binary (special case of multiclass)
multiclass不能有多个1
,因为所有其他标签都是互斥的。