我有一个包含 5 个类的数据集。大约 98% 的数据集属于第 5 类。第 1-4 类平均共享大约 2% 的数据集。但是,正确分类 1-4 类非常重要。
对于我的任务,准确性并不是衡量性能的好方法。我发现了很多关于不平衡二元分类任务指标的信息,但没有找到关于多类问题的信息。
对于这样的任务,我应该使用哪些性能指标?
- TP、TN、FP、FN
- 精确
- 灵敏度
- 特异性
- F分数
- ROC-AUC(微观、宏观、样本、加权)
我有一个包含 5 个类的数据集。大约 98% 的数据集属于第 5 类。第 1-4 类平均共享大约 2% 的数据集。但是,正确分类 1-4 类非常重要。
对于我的任务,准确性并不是衡量性能的好方法。我发现了很多关于不平衡二元分类任务指标的信息,但没有找到关于多类问题的信息。
对于这样的任务,我应该使用哪些性能指标?
对于不平衡的课程,我建议使用加权 F1 分数或平均 AUC/加权 AUC
让我们先看看二分类的 F1-Score。
F1 分数赋予较低的数字更大的权重。
例如,
现在,来到多类分类
假设我们有五个类,class_1、class_2、class_3、class_4、class_5
并且该模型对每个类都有以下结果。
每个类别的精度公式 = (True Positive for class)/(Count of predicted Positive for that class)
例如,class_1 的精度 =(class_1 的真阳性)/(class_1 的预测计数)
每个班级的召回公式 = (True Positive for class)/(Actual Positive for that class)
例如,class_1 的精度 =(class_1 的真阳性)/(class_1 的总实例)
F1 的公式: F1 是 Precision 和 Recall 的几何平均值,即
F1 = 2*(Precision*Recall)/(Precision+Recall)
Macro-F1 = Average(Class_1_F1 + Class_2_F1 + Class_3_F1 + Class_4_F1 + Class_5_F1)
Macro-Precision = Average(Class_1_Precision + Class_2_Precision + Class_3_Precision + Class_4_Precision + Class_5_Precision)
Macro-Recall = Average(Class_1_Recall + Class_2_Recall + Class_3_Recall + Class_4_Recall + Class_5_Recall)
宏计算的问题:在对宏 F1 进行平均时,我们给每个类赋予相等的权重。
加权 F1 分数:
我们不必这样做:在加权平均 F1 分数或加权 F1 中,我们通过该类的样本数对每个类的 F1 分数进行加权。
Weighted F1 Score = (N1*Class_1_F1 + N2*Class_2_F1 + N3*Class_3_F1 + N4*Class_4_F1 + N5*Class_5_F1)/(N1 + N2 + N3 + N4 + N5)
参考资料:https ://towardsdatascience.com/multi-class-metrics-made-simple-part-ii-the-f1-score-ebe8b2c2ca1