家喻户晓,F1-score是通过混同矩阵算进去的

<img src="https://math.jianshu.com/math?formula=%5Ctext%20%7Bprecision%7D%20%3D%5Cfrac%7B%5Ctext%20%7BTP%7D%7D%7B%5Ctext%20%7BTP%7D%2B%5Ctext%20%7BFP%7D%7D%5C%5C%20%5Ctext%20%7Brecall%7D%20%3D%5Cfrac%7B%5Ctext%20%7BTP%7D%7D%7B%5Ctext%20%7BTP%7D%2B%5Ctext%20%7BFN%7D%7D" alt="\text {precision} =\frac{\text {TP}}{\text {TP}+\text {FP}}\ \text {recall} =\frac{\text {TP}}{\text {TP}+\text {FN}}" />

TP代表预测正类,预测正确,FN代表预测负类,然而预测谬误了.

这样就能计算某个类别的F1-score了.然而其实F1-score还能够应用TP,FN等定义来计算,这两个公式是一样的.

F1分数是一个按类计算的指标,这意味着如果你想计算一个蕴含多个类的数据集的总体F1分数,你须要以某种形式进行聚合。宏观和宏观F1分数是进行这种聚合的两种形式。

当计算多类(这里包含两类)的F1-score时个别又分为微F1和宏F1,也就是Micro和Macro.

Macro F1

ClassTPFPFNF1 score
010230.8
12010120.6
25110.8
Sum351316

比方下面的三类,计算失去别离的F1,而后多类的F1-score的如果应用macro形式计算间接计算平均值即可。

对于class 0,首先准确率为10/12=0.83,查全率为10/13=0.769,则F1为1.27654/1.699=0.798,取0.8,同理算出所有类别的F1.则Macro F1为Macro F1 score = (0.8+0.6+0.8)/3 = 0.73

Micro F1

Micro F1分数是应用真阳性(TP)、假阳性(FP)和假阴性(FN)的总数来计算,而不是针对每个类别独自计算。
ClassTPFPFNF1 score
010230.8
12010120.6
25110.8
Sum351316

相似下面的表格,计算Micro F1的话,间接套公式,Micro F1 score = 35 / (35 + 0.5 \* (13 + 16)) = 0.71,相当于把三类的数据当作一样的的了

FAQ

  1. 对于不均衡的数据集,Micro还是Macro F1得分更好

micro F1-score 在不均衡数据集上的体现比macro F1差。这是因为micro F1对每个观测值(样本)都具备等同的重要性,而macro F1是对每个类别都具备等同重要性。

也就是当某个类别中数据特地多,其余类别数据比拟少时,Micro F1会更多思考数据特地多的类.最终的分数覆盖了多数的体现,放大了大多数的体现。

  1. 为什么scikit学习分类报告中没有Micro平均值

当指标是单标签分类时,宏观均匀F1分数在分类报告中显示为accuracy。

这样做是因为在这种状况下,宏观均匀F1分数返回的值与accuracy雷同

3.micro 和macro F1 有什么区别

micro 和macro F1分数之间的要害区别在于它们在不均衡数据集上的行为。当类不均衡时,micro F1分数通常不会返回模型性能的主观衡量标准,而macro F1分数能够这样做。

总结

如果你有一个不均衡的数据集,那么你应该应用macroF1分数,因为即便类是偏斜的,这依然会反映实在的模型性能。然而,如果你有一个均衡的数据集,那么能够思考microF1分数,特地是如果与最终用户交换后果很重要的话。

参考资料

  1. Micro vs Macro F1 score, what’s the difference? (stephenallwright.com)

本文由mdnice多平台公布