什么是汉明损失?我们会考虑将它用于不平衡二元分类器吗

机器算法验证 分类 模型评估
2022-04-05 03:08:44

我正在尝试了解分类器模型的评估指标。

找出 Hamming Loss 的必要性是什么?

我在互联网上阅读了一些文档,它们基本上将 Hamming Loss 与 Multi-classifier 相关联,但仍然无法真正理解为什么真的需要评估模型。

此外,对于不平衡二元分类器,汉明损失实际上只是 1 精度吗?

它带来了什么是 Precision、Recall、F1-Measure 无法做到的?

3个回答

由于汉明损失定义为

HL=1NLl=1Li=1NYi,lXi,l,
在哪里表示异或,Xi,l(Yi,l) 代表布尔值i-th 数据(预测)包含l-th 标签,对于二进制情况,它实际上等于 (1 - accuracy)(L=1)
HL=1Ni=1NYiXi=1Ni=1N1I(Xi,Yi)=1i=1NI(Xi,Yi)N=1Ac,
在哪里I(Xi,Yi)=1如果Xi=Yi否则为 0,Ac 表示准确度。

由于上述原因,在二进制情况下使用 HL 对我来说没有意义,它分别与准确性直接相关。然而,正如这里提到的,在多标签情况下,准确性是不明确的。

因此,与只能针对每个标签的独立二元分类器评估的精度/召回率/f1 相比, HL 为多标签情况提供了一个明确的单性能值。

明损失(HL) 为

错误标签占标签总数的比例

因此,对于二进制情况(不平衡或不平衡),您所写的 HL=1-Accuracy。

在考虑多标签用例时,您应该决定如何将准确性扩展到这种情况。汉明损失中选择的方法是给每个标签相同的权重。可以使用其他方法(例如,取最大值)。

由于汉明损失是为多类设计的,而 Precision、Recall、F1-Measure 是为二元类设计的,最好将最后一个与 Accuracy 进行比较。一般来说,没有一个神奇的指标是最适合所有问题的。在每个问题中,您都有不同的需求,您应该针对它们进行优化。

顺便说一句,特别是对于不平衡的问题,准确性是一个有问题的指标。有关详细信息,请参阅此处

在多标签分类中,错误分类不再是绝对的错误或正确。包含实际类别子集的预测应该被认为比不包含任何类别的预测更好。资源

因此准确率不计算正确分类的数据实例,汉明损失计算预测期间类标签位串中产生的损失,它通过 实际标签和预测标签之间的异或(XOR)来计算,然后在整个数据集上取平均值。资源

  • 实例数 = 2
  • 标签数 = 2

案例 1:实际与预测相同

Actual = [[0 1]         Predicted= [[0 1]
          [1 1]]                    [1 1]]

Actual XOR Predicted = [[0 0
                         0 0]]

from sklearn.metrics import hamming_loss
import numpy as np
print(hamming_loss(np.array([[0,1], [1,1]]), np.array([[0,1], [1,1]])))

HL= 0.0

案例 2:实际与预测完全不同

Actual = [[0 1]         Predicted= [[1 0]
          [1 1]]                    [0 0]]

Actual XOR Predicted = [[1 1
                         1 1]]

from sklearn.metrics import hamming_loss
import numpy as np
print('HL=',hamming_loss(np.array([[0,1], [1,1]]), np.array([[1,0], [0,0]])))

HL = 4/(2*2) = 1

案例 3:实际与预测的部分不同

Actual = [[0 1]         Predicted= [[0 0]
          [1 1]]                    [0 1]]

Actual XOR Predicted = [[0 1
                         1 0]]

from sklearn.metrics import hamming_loss
import numpy as np
print(hamming_loss(np.array([[0,1], [1,1]]), np.array([[0,0], [0,1]])))

HL = (1+1)/(2*2) = 0.5

汉明损失值的范围从 0 到 1。汉明损失值越小表示分类器越好。