David9的普及贴:机器视觉中的平均精度(AP), 平均精度均值(mAP), 召回率(Recall), 精确率(Precision), TP,TN,FP,FN

召回率和准确率就像你去赌场要同时带着“票子”和“运气” — David 9

在机器学习面试中,经常会问道“召回率”“准确率”的区别 。 其实,就像你去赌场下注一样,如果你“票子”很多,可以把钱分摊在不同的赌注上,总有一个赌注会猜对,当你猜对了,就是一次“召回”了; 而“准确率”不关注你下多少注,好似你在赌场碰“运气”,下注越多,越能看出你今天的“运气”。

因此,你猜的次数越多自然有较大的召回,当然最好的情况是,你猜测很少次数就能召回所有。

计算召回率(Recall) 和 精确率(Precision) 时,人们一般会先搬出TP(True positive),TN(True negative),FP(False positive),FN(False negative )的概念:

                     Condition: A        Not A

  Test says “A”      True positive   |   False positive
                     ----------------------------------
  Test says “Not A”  False negative  |    True negative

然后给出公式:

召回率 Recall = TP / (TP + FN)

准确率 Precision = TP / (TP + FP)

事实上,不用硬背公式。两者的抽样方式就很不同: 召回率的抽样是每次取同一标签中的一个样本,如果预测正确就计一分;准确率的抽样是每次取你已预测为同一类别的一个样本,如果预测正确就计一分。这里一个关键点是:召回率是从数据集的同一标签的样本抽样;而准确率是从已经预测为同一类别的样本抽样。召回率和准确率都可以只针对一个类别。

所以当只看top-1的预测时,因为只抽样同一标签的样本,还没有完全召回,所以召回率比较低;而准确率上,top-1以较大的置信度预测一个类别,该类别的准确率较高:

来自:https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173

事实上,如果从top-1到top-10排序来看,召回率是越来越大,最后到1.0(因为top-10预测时,猜10次总能猜对这个类别,并把它召回);准确率是越来越小的,因为top-10的时候是模型置信度最低的时候,猜准该类别的几率较小 。下面是recall-precision曲线:

来自:https://datascience.stackexchange.com/questions/25119/how-to-calculate-map-for-detection-task-for-the-pascal-voc-challenge

在机器视觉目标检测领域也是一样的,recall和precision只是分母抽样的方式不同:

来自:https://datascience.stackexchange.com/questions/25119/how-to-calculate-map-for-detection-task-for-the-pascal-voc-challenge

为了更好地评估一个模型的准确率,人们提出的单个类别平均精度(AP),把准确率在recall值为Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}时(总共11个rank水平上),求平均值:

AP = 1/11 ∑ recall∈{0,0.1,…,1} Precision(Recall)

这样,在不同的recall水平上,平均的准确率给了模型更好的评估。

另一个平均精度均值(mAP),只是把每个类别的AP都算了一遍,再取平均值:

mAP = AVG(AP for each object class)

因此,AP是针对单个类别的,mAP是针对所有类别的。

在机器视觉目标检测领域,AP和mAP分界线并不明显,只要IoU > 0.5的检测框都可以叫做AP0.5,这时AP和mAP表达都是多类检测的精度,关注点在检测框的精度上。

如果你还不知道IoU是什么,可以移步到我们以前的文章:

做机器学习,再别把IoU,ROI 和 ROC,AUC 搞混了 !聊聊目标检测,医疗领域的那些评价函数

 

参考文献:

  1. https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173
  2. https://datascience.stackexchange.com/questions/25119/how-to-calculate-map-for-detection-task-for-the-pascal-voc-challenge
  3. https://stats.stackexchange.com/questions/61829/relation-between-true-positive-false-positive-false-negative-and-true-negative

本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:

发布者

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

《David9的普及贴:机器视觉中的平均精度(AP), 平均精度均值(mAP), 召回率(Recall), 精确率(Precision), TP,TN,FP,FN》上有6条评论

    1. 应该是比较类似的,mAP是计算所有rank的平均精度,而tf.metrics.average_precision_at_k是可以指定k的值,k也可以为1,即只计算top-1的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注