机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)

1、precision、recall、PR curve、F1

在信息检索等任务中,我们经常会关心“检索出的信息中有多少比例是用户感兴趣的”以及“用户感兴趣的信息中有多少被检索出来了”。precision(查准率)与recall(查全率)就是此类需求的性能度量指标。
对于一个二分类问题,我们可以根据模型的分类结果将其分为四类:TP、FP、TN、FN
在这里插入图片描述
则查准率与查全率的定义分别为:
p r e c i s i o n = T P T P + F P r e c a l l = T P T P + F N \begin{aligned} precision &= \frac {TP}{TP+FP}\\ recall &= \frac {TP}{TP+FN} \end{aligned} precisionrecall=TP+FPTP=TP+FNTP
查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。例如,我们只要将所有样本都判断为正例,则查全率即为1,但是查准率却很低,反之亦然。
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第1张图片
P-R curve(如上图所示)可以直观的看出模型在样本上的查全率与查准率之间的关系。在比较两个分类模型的优劣时,如果一个模型C的P-R curve被另一个模型A完全包围,则我们认为模型A的性能要由于模型C。当两个模型的P-R curve曲线相交时,我们可以通过判断曲线下面积或者precision=recall时的取值大小来判断模型的优劣,取值大的模型较优。
当然,在实际应用时,用来判断模型好坏的指标并不是上述所说的曲线下面积或者precision=recall时的取值,而是 F 1 F1 F1或者 F β F_{\beta} Fβ
F 1 F1 F1是基于查准率与查全率的调和平均。
F β F_{\beta} Fβ是基于查准率与查全率的加权平均。
1 F 1 = 1 2 ⋅ ( 1 p r e c i s i o n + 1 r e c a l l ) 1 F β = 1 1 + β 2 ⋅ ( 1 p r e c i s i o n + β 2 r e c a l l ) \begin{aligned} \frac 1{F_1} &= \frac 12 \cdot (\frac 1{precision} + \frac 1{recall})\\ \frac 1{F_{\beta}} &= \frac 1{1+{\beta}^2} \cdot (\frac 1{precision} + \frac {{\beta}^2}{recall}) \end{aligned} F11Fβ1=21(precision1+recall1)=1+β21(precision1+recallβ2)

2、ROC与AUC

ROC(Receiver Operating Characteristic)受试者工作特征曲线:与P-R curve一样,我们根据模型的分类结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出假正例率(FPR)与真正例率(TPR),分别以他们作为横纵坐标进行作图。
T P R = T P T P + F N F P R = F P F P + T N \begin{aligned} TPR &= \frac {TP}{TP + FN} \\ FPR &= \frac {FP}{FP + TN} \end{aligned} TPRFPR=TP+FNTP=FP+TNFP
ROC曲线如下图所示:
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第2张图片

3、IOU

IOU(intersection over unions)交并比是一种测量在特定数据集中检测相应物体准确度的一个标准。我们可以在很多物体检测挑战中,例如PASCAL VOC challenge中看多很多使用该标准的做法。IOU是衡量检测结果的一个指标,与具体的检测方法无关,如传统的HOG+SVM以及基于CNN的目标检测算法中都有该指标的应用。
为了计算IOU,我们需要两个数据:

  1. 人为在图片中标注出的目标框(ground-truth bounding boxes)
  2. 模型预测出的矩形框
    机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第3张图片
    机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第4张图片
    一般来说,我们认为IOU>0.5就是正确的检测结果。

4、mAP

以下内容来自于该博客
mAP(mean Average Precision):由于多标签图像的分类任务中,图片的标签不止一个,因此评价不能用普通单标签图像分类的标准,即mean accuracy,mAP是和信息检索中使用的方法。
首先用训练好的模型得到所有测试样本的confidence score,每一类(如car)的confidence score保存到一个文件中(如comp1_cls_test_car.txt)。假设共有20个测试样本,每个的id,confidence score和ground truth label如下:​​
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第5张图片
接下来对confidence score排序,得到:
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第6张图片
这张表很重要,接下来的precision和recall都是依照这个表计算的
然后计算precision和recall,这两个标准的定义如下:
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第7张图片
上图比较直观,圆圈内(true positives + false positives)是我们选出的元素,它对应于分类任务中我们取出的结果,比如对测试样本在训练好的car模型上分类,我们想得到top-5的结果,即:
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第8张图片
在这个例子中,true positives就是指第4和第2张图片,false positives就是指第13,19,6张图片。方框内圆圈外的元素(false negatives和true negatives)是相对于方框内的元素而言,在这个例子中,是指confidence score排在top-5之外的元素,即:
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第9张图片
其中,false negatives是指第9,16,7,20张图片,true negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。
那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。
实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。这个例子的precision-recall曲线如下:
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第10张图片
接下来说说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值。计算方法如下:​
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第11张图片
相应的Precision-Recall曲线(这条曲线是单调递减的)如下:​
机器学习性能度量指标(precision、recall、PR曲线、F1、ROC、AUC、IOU、mAP)_第12张图片
AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。

你可能感兴趣的:(机器学习,计算机视觉)