有关平均精度AP 和精确度-召回率曲线PR AUC的疑惑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关平均精度AP 和精确度-召回率曲线PR AUC的疑惑相关的知识,希望对你有一定的参考价值。
参考技术A 更多信息请访问原文:https://www.yanxishe.com/TextTranslation/2465?from=jianshu0318评价一个信息检索系统,一般会关注两件事:
1. 搜索到的结果中有多少是相关的?(精确度)
2. 系统是否尽可能多的检索到了相关文本?(召回率)
关于这两个指标,对于那些不熟悉的人,我会解释一下精确率和召回率到底是什么?对于那些熟悉的人,我会解释一下在比较精确度-召回率曲线时常见的一些疑问。
大雁和飞机
假设你有一个图片集,包含了飞机和大雁的图片。
你希望系统检索出全部的飞机的照片,且不要检索出大雁的图片。
给定一组系统从数据集中搜出的图片,我们可以定义以下四个指标:
真阳样本:系统正确地检索出的飞机图片
真阴样本:系统正确地没有检索到的大雁图片
假阳样本:系统错误地检索出的大雁图片,认为这是飞机
假阴样本:系统错误地没有检索到的飞机图片,认为这是大雁
这个例子中,共有三个真阳样本和一个假阳样本
使用我刚才定义的指标,在这些检索出的样本中,共有三个真阳样本和一个假阳样本。那么,有多少假阴样本呢?又有多少真阴样本呢?
一共有两个假阴样本(系统没有检出的飞机)和四个真阴样本(系统没有检索出的大雁)。
精确度和召回率
接下来,你将会对精确度和召回率有更准确的理解。
精确度是真阳样本在检索到的样本中的占比,也就是:
其中,n 是检索到的全部样本数( tp + fp )。
召回率是真阳样本在系统本该检索出的飞机中的占比,也就是:
在上面的例子中,3个真阳样本,1个假阳样本,4个真阴样本和2个假阴样本,所以,精确度=0.75,召回率=0.6。
75%的是检索出的样本是飞机,60%的飞机被检索出来。
阈值调整
如果检索系统的表现不乐观怎么办?我们可以让检索系统返回更多的样本,也就是说,放宽系统认为是飞机的概率的阈值。当然我们也可以让系统更严格一点,那将返回更低的阈值。到目前为止,系统在我们的样本集中返回了4个样本,这些都符合某个特定的阈值(下图中用蓝色的线表示的)。系统检索出比该阈值更像飞机的样本。
这是一种假设的图片顺序。更像飞机的图片在列表的上方,绿线是阈值。
我们可以往上或往下调整阈值,来获取不同的检索结果。在每一处的阈值,我们都可以得到一组不同的精确度和召回率的值。特别地,如果我们只检索到最高处的样本,则精确度是100%,召回率是20%。如果我们只检索到前二的样本,精确度仍是100%,但召回率变成40%。下面的图表列出了基于上述假设的图片顺序在所有可能取的阈值下计算得到得到精确度和召回率。
Retrieval cutoff Precision
Top 1 image 100%
Top 2 images 100%
Top 3 images 65%
Top 4 images 75%
Top 5 images 60%
Top 6 images 66%
Top 7 images 57%
Top 8 images 50%
Top 9 images 44%
Top 10 images 50%
精确度-召回率曲线
描述分类器表现的一个好的方式就是观察精确度和召回率是怎样随着阈值的变化而变化的。一个好的分类器善于将实际的飞机图片排列在列表上方,有能力在检索到大雁前尽可能多的检索出飞机,随着召回率的增加,依然保持高的精确度。一个差的分类器召回率的提升往往伴随着精确度的降低。已发表的论文中通常会通过精确度-召回率曲线来展现他们的分类器是如何权衡两者的。下图是精确率 p 和召回率 r 的关系图:
这是我们的飞机分类器的精确度-召回率曲线。它可以在不损失任何精确度的情况下达到40%的召回率。但是如果达到100%的召回率,精确度将会降低到50%。
平均精度
与比较曲线相比,很多时候使用单一的数去描述分类器的表现更方便。通常使用的指标是平均精度。这实际上意味着一些事情。
Average precision平均精度
严格来说,平均精度是贯穿召回率从0到1间全部值对应的精确度的平均值:
也与曲线下面积相等。在实践中,该积分的值近似于在每个可能的阈值处的精确度乘以召回率的变化值之和:
其中,N是检索出的图片集数量, P(k) 是截止到前 k 个图片的对应的精度, delta r(k) 是前 k 个图片与前 k-1 个图片对应的召回率的变化值。
在我们的例子中,也就是(1 * 0.2) + (1 * 0.2) + (0.66 * 0) + (0.75 * 0.2) + (0.6 * 0) + (0.66 * 0.2) + (0.57 * 0) + (0.5 * 0) + (0.44 * 0) + (0.5 * 0.2) = 0.782。
需要注意的是,召回率未变化的点不会对最终结果产生影响(这些点就是这图中垂直部分,垂直下降的点)。这是有意义的,因为我们计算面积时,曲线的得到这些部分并没有使面积增加。
Interpolated average precision插值平均精度
一些作者会选择另一种叫做 插值平均精度的近似算法。通常他们也称之为平均精度。插值平均精度不再使用P(k)表示图像检索截止点k对应的精度,而是使用:
也就是说,插值平均精度不使用截止点k实际对应的精度,而是使用在所有具有较高回忆度的截止点上观察到的最大精度。计算插值平均精度的完整公式如下:
为了有更直观的视觉感受,插值平均精度和近似平均精度如下图;(为了更直观有意思的比较,下面的图不是基于前述的例子):
近似平均精度与实际观察的曲线很接近。插值平均精度在很多点上都过高估计了,并且在数值上比近似平均精度更高。
更进一步,有很多方法都可以计算插值平均精度。有些研究者在从0到1间取11个固定的点: 0, 0.1, 0.2, …, 0.9, 1.0 来采样。这叫做11点插值平均精度的计算方法。还有一些是在召回率上每个k步采样一次。
疑惑
一些重要的论文中,使用插值平均精度作为他们的评价标准,也称之为平均精度。比如,PASCAL VOC挑战从2007年起便使用它作为他们的评价标准,我不认为他们理由是充分的。他们说:“使用这种方式插值精确度/召回率曲线的目的是减少曲线中折线的影响。”别忘了,参赛者都使用这个指标与其他人比较,所以在这个比赛中,这并不是个问题。然而,在与其他公开结果进行比较“平均精度”时,我们要非常小心。我们是否使用的是VOC的插值平均精度,而之前的工作使用的非插值平均精度?与之前的工作相比,这将不能正确的反映新方法的改进。
总结
精确度和召回率都是有用的评价分类器的指标。准确率和回忆率随分类器阈值的严格程度而变化。有多种方法可以用一个称为平均精度的值来概括精确度-召回率曲线;确保你使用的是与之前工作相同的度量标准。
机器学习模型效果评价
一、分类
1、精确率
被识别成正类的,有多少是真正的正类。
2、召回率
真正的正类,有多少等被找出来(召回)。
3、准确率
被分类样本总数中,有多少是正确分类的。
4、F1
F1 = 2 * (precision * recall) / (precision + recall)
5、平均精确率(AP)average precision
Precision-recall曲线以下面积
6、AUC(area under curve)
TP-FP曲线以下面积
二、回归
1、MSE(平均平方误差)
2、RMSE(平均平方根误差)
为MSE平方根
3、MAE(平均绝对值误差)
4、 R2 score
R2决定系数表达了模型多大程度解释了因变量的变化。
如果单纯用残差平方和等指标衡量模型效果会受到因变量的数量级的影响。例如:例如一个模型中的因变量:10000、20000…..,而另一个模型中因变量为1、2……,这两个模型中第一个模型的残差平方和可能会很大,而另一个会很小,但是这不能说明第一个模型就别第二个模型差。所以指标式中的分式的分母,相当于除掉了因变量的数量级。
5、可解释方差得分
三、聚类
以上是关于有关平均精度AP 和精确度-召回率曲线PR AUC的疑惑的主要内容,如果未能解决你的问题,请参考以下文章
机器学习中的性能指标:精度召回率,PR曲线,ROC曲线和AUC,及示例代码
机器学习中的性能指标:精度召回率,PR曲线,ROC曲线和AUC,及示例代码