当前位置: 代码迷 >> 综合 >> 一分钟看懂深度学习中的准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP
  详细解决方案

一分钟看懂深度学习中的准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP

热度:79   发布时间:2023-12-12 15:24:22.0

1. 真假阳性阴性

我们查体的时候,经常会听说检测结果呈”真阳性“、”假阴性“等说法。

  • 其中”真“、"假"说的是检查结果的对错。”真“意味着检测结果是正确的,"假"意味着检测结果是错误的。
  • ”阳性“、"阴性"说的是这次的检查结果。阳性,意味检测出了预定的目标。阴性,意味着没查出预定的目标。

一共四种组合:

检测结果 英文术语 含义
真阳性 true positive 正确地检测到阳性结果:即检测结果正确,并且结果呈现阳性
假阳性 false positive 错误地检测到阳性结果:即检测结果错误,并且结果呈现阳性
真阴性 true negative 正确地检测到阴性结果:即检测结果正确,并且结果呈现阴性
假阴性 false negative 错误地检测到阴性结果:即检测结果错误,并且结果呈现阴性

2. 准确率(Accuracy)

准确率(Accuracy)计算公式为:

a = T P + T N T P + T N + F P + F N a=\frac{TP+TN}{TP+TN+FP+FN} a=TP+TN+FP+FNTP+TN?

准确率,就是在全部预测中,正确预测结果占的比例。

3. 精度(Precision)

精度(Precision)计算公式为:

p = T P T P + F P p=\frac{TP}{TP+FP} p=TP+FPTP?

精度,就是在全部阳性预测中,正确预测结果占的比例。比如,你预报了10次下雨,结果只下了3次,你的预报精度就是 0.3,因为 T P = 3 , F P = 7 TP=3,FP=7 TP=3,FP=7

我平时很喜欢误报率这个指标,误报率这个说法很容易理解,一些工业标准常用这个概念,不知道为什么学术界不愿意用。误报率定义如下:
q = F P T P + F P = 1 ? p q=\frac{FP}{TP+FP}=1-p q=TP+FPFP?=1?p

精度与误报率正好相反的两个概念。比如,你预报了10次下雨,结果只下了3次,你的误报率就是 0.7。

4. 召回率(Recall)

召回率(Recall)计算公式为:

r = T P T P + F N = T P P r=\frac{TP}{TP+FN}=\frac{TP}P r=TP+FNTP?=PTP?

召回率,就是在全部阳性事件中,正确预测结果占的比例。比如,下了10次雨,结果你只正确预报了 2 次,你的预报的召回率就是 0.2,因为 T P = 2 , F N = 8 , P = 10 TP=2,FN=8,P=10 TP=2,FN=8,P=10

与召回率相反的概念是漏报率,定义如下:
s = F N T P + F N = F N P = 1 ? r s=\frac{FN}{TP+FN}=\frac{FN}P=1-r s=TP+FNFN?=PFN?=1?r

比如,下了10次雨,结果你只正确预报了 2 次,你的预报的漏报率就是 0.8,

5. ROC 曲线与平均精度 AP

精度 p 和召回率 r 是两个矛盾的测量指标。

如果我们希望精度提升,即,降低误报率,但是,这样一来就会提升漏报率,也就是召回率下降。反之亦然。同一个算法,其精度和召回率的关系大致可以用下面的图象来表示,下面的函数 p ( r ) p(r) p(r) 曲线称为 ROC 曲线。
在这里插入图片描述
最理想的情况是,精度 p 和召回率 r 能同时取得无限接近1的结果。因此,我们希望ROC曲线下方覆盖的面积无限接近 1。我们把ROC取下下方的面积称为检测算法的平均精度,即,AP。
A P = ∫ 0 1 p ( r ) d r AP=\int_0^1p(r)dr AP=01?p(r)dr

6. mAP

大部分情况下,一个算法要检测多个类别的目标,要计算 mAP,就把所有类别的 AP 计算出来,然后求取平均即可。

也就是说 mAP 是算法对所有类别的检测平均精度AP的平均值。mAP 的英文是 mean average precision。

  相关解决方案