我正在尝试了解分类器模型的评估指标。
找出 Hamming Loss 的必要性是什么?
我在互联网上阅读了一些文档,它们基本上将 Hamming Loss 与 Multi-classifier 相关联,但仍然无法真正理解为什么真的需要评估模型。
此外,对于不平衡二元分类器,汉明损失实际上只是 1 精度吗?
它带来了什么是 Precision、Recall、F1-Measure 无法做到的?
我正在尝试了解分类器模型的评估指标。
找出 Hamming Loss 的必要性是什么?
我在互联网上阅读了一些文档,它们基本上将 Hamming Loss 与 Multi-classifier 相关联,但仍然无法真正理解为什么真的需要评估模型。
此外,对于不平衡二元分类器,汉明损失实际上只是 1 精度吗?
它带来了什么是 Precision、Recall、F1-Measure 无法做到的?
由于汉明损失定义为
由于上述原因,在二进制情况下使用 HL 对我来说没有意义,它分别与准确性直接相关。然而,正如这里提到的,在多标签情况下,准确性是不明确的。
因此,与只能针对每个标签的独立二元分类器评估的精度/召回率/f1 相比, HL 为多标签情况提供了一个明确的单性能值。
汉明损失(HL) 为
错误标签占标签总数的比例
因此,对于二进制情况(不平衡或不平衡),您所写的 HL=1-Accuracy。
在考虑多标签用例时,您应该决定如何将准确性扩展到这种情况。汉明损失中选择的方法是给每个标签相同的权重。可以使用其他方法(例如,取最大值)。
由于汉明损失是为多类设计的,而 Precision、Recall、F1-Measure 是为二元类设计的,最好将最后一个与 Accuracy 进行比较。一般来说,没有一个神奇的指标是最适合所有问题的。在每个问题中,您都有不同的需求,您应该针对它们进行优化。
顺便说一句,特别是对于不平衡的问题,准确性是一个有问题的指标。有关详细信息,请参阅此处。
在多标签分类中,错误分类不再是绝对的错误或正确。包含实际类别子集的预测应该被认为比不包含任何类别的预测更好。资源
因此准确率不计算正确分类的数据实例,汉明损失计算预测期间类标签位串中产生的损失,它通过 实际标签和预测标签之间的异或(XOR)来计算,然后在整个数据集上取平均值。资源
案例 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。汉明损失值越小表示分类器越好。