对于二分类问题,可以将样例根据其真实类别和分类器类别划分为:
真正例(True Positive,TP):真实类别为正例,预测类别为正例。
假正例(False Positive,FP):真实类别为负例,预测类别为正例。
真负例(True Negative,TN):真实类别为负例,预测类别为负例。
假负例(False Negative,FN):真实类别为正例,预测类别为负例。
混淆矩阵(Confusion Matrix)如下表所示。
根据混淆矩阵我们可以用下列公式计算P、R、F值
准确率 p = T P T P + F P p=\frac{TP}{TP+FP} p=TP+FPTP
召回率 R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
F 1 = 2 ∗ P ∗ R P + R F1=\frac{2*P*R}{P+R} F1=P+R2∗P∗R
如果只有一个二分类混淆矩阵,可以用P、R、F指标进行评价,但是当我们在n个二分类混淆矩阵上要综合考察评价指标的时候就会用到宏平均和微平均。
宏平均(Macro-averaging),是先对每一个类统计指标值,然后再对所有类求算术平均值。
M a c r o _ P = 1 n ∑ i = 1 n P i Macro\_P=\frac{1}{n}\sum_{i=1}^nP_i Macro_P=n1∑i=1nPi
M a c r o _ R = 1 n ∑ i = 1 n R i Macro\_R=\frac{1}{n}\sum_{i=1}^nR_i Macro_R=n1∑i=1nRi
M a c r o _ F = 1 n ∑ i = 1 n F i Macro\_F=\frac{1}{n}\sum_{i=1}^nF_i Macro_F=n1∑i=1nFi
M a c r o _ F = 2 ∗ M a c r o _ P ∗ M a c r o _ R M a c r o _ P + M a c r o _ R Macro\_F=\frac{2*Macro\_P*Macro\_R}{Macro\_P+Macro\_R} Macro_F=Macro_P+Macro_R2∗Macro_P∗Macro_R
微平均(Micro-averging),是对数据集中的每一个实例不分类进行统计建立全局混淆矩阵,然后计算相应指标。
M i c r o _ P = ∑ i = 1 n T P i ∑ i = 1 n T P i + ∑ i = 1 n F P i Micro\_P=\frac{\sum_{i=1}^nTP_i}{\sum_{i=1}^nTP_i+\sum_{i=1}^nFP_i} Micro_P=∑i=1nTPi+∑i=1nFPi∑i=1nTPi
M i c r o _ R = ∑ i = 1 n T P i ∑ i = 1 n T P i + ∑ i = 1 n F N i Micro\_R=\frac{\sum_{i=1}^nTP_i}{\sum_{i=1}^nTP_i+\sum_{i=1}^nFN_i} Micro_R=∑i=1nTPi+∑i=1nFNi∑i=1nTPi
M i c r o _ F = 2 ∗ M i c r o _ P ∗ M i c r o _ R M i c r o _ P + M i c r o _ R Micro\_F=\frac{2*Micro\_P*Micro\_R}{Micro\_P+Micro\_R} Micro_F=Micro_P+Micro_R2∗Micro_P∗Micro_R
宏平均的计算方法独立于不同类别,将每个类别的P、R、F值单独计算出来,然后将所有类别的度量值直接平均,因此它将各个类别平等对待。
微平均会结合不同类别的贡献大小来计算平均值。
所以在多分类问题中,如果存在数据不平衡问题,则使用微平均得到的效果更加可信。
参考链接
https://www.cnblogs.com/robert-dlut/p/5276927.html
https://zhuanlan.zhihu.com/p/73054466