性能指标(模型评估)之mAP

性能指标(模型评估)之mAP为什么性能指标用于评价模型的好坏 当然使用不同的性能指标对模型进行评价往往会有不同的结果 也就是说模型的好坏是 相对 的 什么样的模型好的 不仅取决于算法和数据 还决定于任务需求 因此 选取一个合理的模型评价指标是非常有必要的 错误率 amp 精度针对数据集 DD 和学习器 ff 而言 1 错误率 分类错误的样本数占总样本的比例 E f D 1m i 1mI f xi yi E f D frac1

为什么性能指标

用于评价模型的好坏,当然使用不同的性能指标对模型进行评价往往会有不同的结果,也就是说模型的好坏是“相对”的,什么样的模型好的,不仅取决于算法和数据,还决定于任务需求。因此,选取一个合理的模型评价指标是非常有必要的。

错误率 & 精度

针对数据集 D D D和学习器 f f f而言:

召回率 & 准确率

为什么引入

精度和错误率虽然常用,但还是不能满足所有的需求。举个例子:

信息检索中,我们经常会关系检索出的信息有多少比例是用户感兴趣的以及用户感兴趣的信息中有多少被检索出来了,用精度和错误率就描述出来了,这就需要引入准确率(precision,亦称查准)和召回率(recall,亦称查全)。


表1 测试样本分类说明(分4类) | 真实情况 | 预测为正 | 预测为反 | 召回率 | |:-:|:-:|:-:|:-:| | 正 | TP(真正) | FN(假反) | $R=\frac {TP}{TP+FN}$ | | 反 | FP(假正) | TN(真反) | | 准确率 | $P=\frac {TP}{TP+FP}$ | |

准确率

召回率

P-R曲线

一般来说,我们希望上述两个指标都是越高越好,然而没有这么好的事情,准确率和召回率是一对矛盾的度量,一个高时另一个就会偏低,当然如果两个都低,那肯定时哪点除了问题。


性能指标(模型评估)之mAP

当我们根据学习器的预测结果对样例进行排序(排在前面的时学习器认为“最可能”是正例的样本),然后按此顺序依次吧样本喂给学习器,我们把每次的准确率和召回率描出来就会得到一个P-R曲线(称为P-R图)。根据这个图怎么评估不同的学习器的好坏呢?

  • 直观感受:如果一个学习器的P-R被另一个学习器的该曲线包围,则可以断言后面的要好些。

但是如果两个曲线有交叉,那就很难说清楚了。一个比较合理的判据是我比较下两个曲线下面的面积大小,他能在一定程度上反应P和R“双高”的比例,但问题是这个面积值不太容易估算啊。那有没有综合考虑这两个指标的指标呢?当然是有的,且看下面

平衡点(Break-Even Point, BEP)

就是找一个 准确率 = 召回率 的值,就像上面的图那样。

F1度量

F1是准确率和召回率的调和平均,即是 1 F 1 = 1 2 × ( 1 P + 1 R ) \frac 1 {F1} =\frac 12 \times (\frac 1P+\frac 1R) F11=21×(P1+R1),换算下:
F 1 = 2 P R P + R F1=\frac {2PR}{P+R} F1=P+R2PR
然而,在更一般的情况下,我们对P和R的重视程度又是不同的,因此,F1度量的更一般的形式可以写作加权调和平均 F β F_\beta Fβ,即是 1 F β = 1 1 + β 2 × ( 1 P + β 2 R ) \frac 1 {F_\beta} =\frac 1{1+\beta ^2} \times (\frac 1P+\frac {\beta ^2} R) Fβ1=1+β21×(P1+Rβ2),换算下:
F β = ( 1 + β 2 ) P R β 2 P + R F_\beta=\frac {(1+\beta ^2)PR}{\beta ^2P+R} Fβ=β2P+R(1+β2)PR


mAP

mAP是什么

多标签图像分类任务中图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean accuracy,该任务采用的是和信息检索中类似的方法—mAP(mean Average Precision),虽然其字面意思和mean accuracy看起来差不多,但是计算方法要繁琐得多。

计算过程

保存所有样本的confidence score

首先用训练好的模型得到所有测试样本的confidence score,每一类(如car)的confidence score保存到一个文件中(如comp1_cls_test_car.txt)。假设共有20个测试样本,每个的id,confidence score和ground truth label如下:​​


性能指标(模型评估)之mAP

对confidence score进行排序


性能指标(模型评估)之mAP

计算precision和recall

上面我们一共有20个测试样本,如果把这20个样本放在一起,按照表1给出的把他们分成4类,就可以得到下面的示意图:


性能指标(模型评估)之mAP

其中,圆圈内(真正 + 假正)是我们模型预测为正的元素,比如对测试样本在训练好的car模型上分类(如果是car,输出label = 1,反之=0),现在假设我们想得到top-5的结果,也就是说圆圈内一共有5个数据,即排序好的表的前面5个:


性能指标(模型评估)之mAP

好了,上表就是我们预测为正的元素啦,他的准确率是多少?

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ P & =\frac {TP…
召回率是多少呢?在这里请注意我们的所有测试样本一共有多少个car(也就是label=1有几条数据),在下表中很容易找到6条记录,那我们预测出来的结果找到几个car呢?上面的top-5中我们只找到了2个car


性能指标(模型评估)之mAP

也就是说,召回率为:

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ R & =\frac {TP…

实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。这个例子的precision-recall曲线如下:


性能指标(模型评估)之mAP

计算AP

接下来说说AP的计算,此处参考的是PASCAL VOC CHALLENGE的计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。​

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,我们可以计算出对应(r’ > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:​


性能指标(模型评估)之mAP 注:这里倒数第二列,top-6的Max Precision应该为$\frac36$(而不是$\frac47$),上面图片有点问题。

AP衡量的是学出来的模型在给定类别上的好坏,而mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。

参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204290.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:37
下一篇 2026年3月19日 下午8:37


相关推荐

  • LVS 负载均衡集群(一)| 超详细!一文带你了解 LVS 负载均衡集群

    LVS 负载均衡集群(一)| 超详细!一文带你了解 LVS 负载均衡集群前言如今,在各种互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求也越来越高,单台服务器也将难以无法承担所有的访问需求。当然了,除了使用性价比高的设备和专用负载分流设备外,还有一些其他选择来帮你解决此问题,就是搭建集群服务器通过整合多台普通的服务器设备并以同一个地址对外提供相同的服务,今天杰哥就带领大家学习企业中常用的一种群集技术——LVS。文章目录一、什么是LVS?…

    2022年7月24日
    15
  • 32.HttpRequest对象的学习

    32.HttpRequest对象的学习引言——在前面你也跟着本博主编写了那么多的视图函数,但是每个视图函数它都会接收一个名为request的参数。是不是很好奇:视图函数接收到的request到底是个什么对象!!!HttpRequest对象1.我们可以打印这个request对象,看一下:<WSGIRequest:GET’/music/test3/’>我们知道WSGIRequest是一个HTTP请求对象,里面包括了提交的方式和URL路径。综上可知:服务器接收到http协议的请求后,会根据报文创建HttpReq.

    2022年6月30日
    23
  • Excel接入DeepSeek超详细教程 | 手把手实现AI自动化办公

    Excel接入DeepSeek超详细教程 | 手把手实现AI自动化办公

    2026年3月16日
    3
  • 如何用banana生成

    如何用banana生成

    2026年3月15日
    2
  • java快捷键

    java快捷键快捷键:如果想修改快捷键(setting->keymap)。Ctrl+Space完成类、方法、变量名称的自动输入,这个快捷键是我最经常使用的快捷键了,它可以完成类、方法、变量名称的自动录入,很方便Ctrl+N(Ctrl+Shift+N)跳转到指定的java文件(其它文件)这个功能很方便,至少我不用每回都在一长串的文件列表里找寻我想要编辑的类文件和jsp文件了Ctrl+B跳转到定义处这个就不用多说了,好象是个IDE就会提供的功能Ctrl+Alt+T用*来围绕

    2022年7月7日
    25

发表回复

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

关注全栈程序员社区公众号