看懂YOLOv7混淆矩阵的含义,正确计算召回率、精确率、误检率、漏检率
文章目录
- 1、准确率、精确率、召回率、误报率、漏报率概念及公式
- 1.1 准确率 Accuracy
- 1.2 精确率 Precision
- 1.3 召回率 Recall
- 1.4 F1-Score
- 1.5 误检率 false rate
- 1.6 漏检率 miss rate
- 2、YOLOv7混淆矩阵分析
1、准确率、精确率、召回率、误报率、漏报率概念及公式
- 重点参考博文:【机器学习】准确率、精确率、召回率、误报率、漏报率概念及公式
- 误报率、漏报率、准确率和召回率(虚警率、漏警率)
- 误报率和漏报率的关系:一般来说无法同时降低误报率和漏报率。举个例子来说,某门卫为了防止小偷进入小区,凡是过往人员都要盘查,这时漏报率为0,但是显著提高了误报率;反之如果门卫什么都不做,任由人员出入,那么这是漏报率就会提高,而误报率降低为0。
漏检率 + 召回率 = 1
,也就是召回率越高,漏检率越低
- 【积累】机器学习知识,看里面的
1.1.2 二分类问题
阳性(正)样例 P
和 阴性(负)样例 N
:
- 正样本预测为正样本的为True positive(TP)
- 正样本预测为负样本的为False negative(FN)
- 负样本预测为正样本的为False positive(FP)
- 负样本预测为负样本的为True negative(TN)
所以有:
P
=
T
P
+
F
N
N
=
F
P
+
T
N
P = TP + FN \\ N = FP + TN
P=TP+FNN=FP+TN
1.1 准确率 Accuracy
- 反映模型对整体样本判断正确的能力,值越大越好
- 但样本不平衡时,ACC 不能很好地评估模型性能
A c c = T P + T F T P + F P + T N + F N Acc = \frac{TP + TF}{TP + FP + TN + FN} Acc=TP+FP+TN+FNTP+TF
1.2 精确率 Precision
- 反映模型正确预测正样本精度的能力,值越大越好
- 也称精度,查准率,阳性预测值(positive predictive value, PPV)
- 即:衡量在所有预测为正样本的数据中,有多少是真正的正样本
P r e c i s i o n ( P P V ) = T P T P + F P Precision(PPV) = \frac{TP}{TP + FP} Precision(PPV)=TP+FPTP
1.3 召回率 Recall
- 反映模型正确预测正样本全度的能力,值越大越好
- 也称真阳性率(true positive rate, TPR),灵敏度,查全率
- 即:衡量在所有真实的正样本中,有多少被预测为正样本
R e c a l l ( T P R ) = T P T P + F N = T P P Recall(TPR) = \frac{TP}{TP + FN}=\frac{TP}{P} Recall(TPR)=TP+FNTP=PTP
1.4 F1-Score
- 是对精确率和召回率的加权求和
F 1 − S c o r e = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1-Score=\frac{2×Precision×Recall}{Precision+Recall} F1−Score=Precision+Recall2×Precision×Recall
1.5 误检率 false rate
- 反映模型正确预测正样本纯度的能力,值越小越好
- 又称虚警率、假阳性率(False Positive Rate)
- 即:在所有真实的负样本中,有多少被预测为正样本
F P R = F P T N + F P = F P N FPR=\frac{FP}{TN + FP}=\frac{FP}{N} FPR=TN+FPFP=NFP
1.6 漏检率 miss rate
- 反应模型正确预测负样本纯度的能力,值越小越好
- 又称错检率、漏警率、假阴性率(False Negative Rate)
- 即:在所有真实的正样本中,有多少被预测为负样本
漏检率 + 召回率 = 1
F N R = F N T P + F N = F N P FNR=\frac{FN}{TP+FN}=\frac{FN}{P} FNR=TP+FNFN=PFN
2、YOLOv7混淆矩阵分析
- 应该YOLO其他系列的也可以这样分析
- 图中格子里面的数字表示
比例
,其余重要的含义在图中已表示
例如,通过计算可以得到:对角线的值就表示的召回率,漏检率=1-Recall=0.4
类别 D 00 的召回率 = R e c a l l ( T P R ) = T P T P + F N = T P P = 0.60 0.60 + 0.01 + 0.39 = 0.6 类别 D 00 的漏检率 = F N R = F N T P + F N = F N P = 0.01 + 0.39 0.60 + 0.01 + 0.39 = 0.4 = 1 − R e c a l l 类别D_{00}的召回率=Recall(TPR) = \frac{TP}{TP + FN}=\frac{TP}{P}=\frac{0.60}{0.60+0.01+0.39}=0.6\\ 类别D_{00}的漏检率= FNR=\frac{FN}{TP+FN}=\frac{FN}{P}=\frac{0.01+0.39}{0.60+0.01+0.39}=0.4=1-Recall 类别D00的召回率=Recall(TPR)=TP+FNTP=PTP=0.60+0.01+0.390.60=0.6类别D00的漏检率=FNR=TP+FNFN=PFN=0.60+0.01+0.390.01+0.39=0.4=1−Recall
以D00类别来看:
- 该
列
除了对角线上的那个值以外,反映的是漏检率(漏检成了其他的类别) - 该
行
除了对角线上的那个值以外,反映的是误检率(误检成了其他的类别)
例如,第1列第3行
的值0.01
表示:漏检D00且认为是D20的概率是0.01
第2列第1行
的值0.01
表示:误检D00且认为是D10的概率是0.01