关于混淆矩阵中精读和召回率的计算

在进行二分类或多分类任务中为了直观的看出分类效果,以及为后续的错误分析做准备,需要计算整个分类的混淆矩阵,此中涉及到的是分类准确率和召回率的计算:
准确率(精度):预测正确值占预测为该类别总体的比例
召回率:预测正确值占该类别中所有预测值的比例
正对角线表示预测正确的值,其余值为预测错误的值

  • 二分类:
分类效果只有1和0之分,
关于混淆矩阵中精读和召回率的计算
文章图片

横轴为预测值,纵轴为真实值
准确率=(TP+TN)/(TP+FP+FN+TN)
召回率=TN/(TN+FN)
注:召回率只需要关注true label值为1时的值
  • 多分类:
当分类问题是二分问题是,混淆矩阵可以用上面的方法计算。当分类的结果多于两种的时候,混淆矩阵同时适用。
一下面的混淆矩阵为例,我们的模型目的是为了预测样本是什么动物,这是我们的结果:

【关于混淆矩阵中精读和召回率的计算】关于混淆矩阵中精读和召回率的计算
文章图片

通过混淆矩阵,我们可以得到如下结论:
Accuracy
在总共66个动物中,我们一共预测对了10 + 15 + 20=45个样本,所以准确率(Accuracy)=45/66 = 68.2%。
以猫为例,我们可以将上面的图合并为二分问题:
Precision
所以,以猫为例,模型的结果告诉我们,66只动物里有13只是猫,但是其实这13只猫只有10只预测对了。模型认为是猫的13只动物里,有1条狗,两只猪。所以,Precision(猫)= 10/13 = 76.9%
Recall
以猫为例,在总共18只真猫中,我们的模型认为里面只有10只是猫,剩下的3只是狗,5只都是猪。这5只八成是橘猫,能理解。所以,Recall(猫)= 10/18 = 55.6%
Specificity
以猫为例,在总共48只不是猫的动物中,模型认为有45只不是猫。所以,Specificity(猫)= 45/48 = 93.8%。
虽然在45只动物里,模型依然认为错判了6只狗与4只猫,但是从猫的角度而言,模型的判断是没有错的。
(这里是参见了Wikipedia,Confusion Matrix的解释,https://en.wikipedia.org/wiki/Confusion_matrix)
F1-Score
通过公式,可以计算出,对猫而言,F1-Score=(2 * 0.769 *0.556)/( 0.769 +0.556) = 64.54%
同样,我们也可以分别计算猪与狗各自的二级指标与三级指标值。

参考:https://blog.csdn.net/Orange_Spotty_Cat/article/details/80520839


    推荐阅读