在深度学习中我们经常会遇到一下评价指标,但是有时候却又很模糊,不能彻底的理解其中的含义与作用,下面就常用的几个评价指标作一些阐述与理解。
我们常见的评价指标大概有下面的几种:混淆矩阵 (Confusion Matrix),准确率 (Accuracy),精确率(Precision),召回率(Recall),平均精确度(AP), 平均精度均值 mean Average Precision(mAP),交并比(IoU),ROC + AUC,非极大值抑制(NMS)。下面我们进行一一学习与了解。
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。混淆矩阵中的横轴是模型预测的类别数量统计,纵轴是数据真实标签的数量统计。对角线,表示模型预测和数据标签一致的数目,所以对角线之和除以测试集总数就是准确率。对角线上数字越大越好,在可视化结果中颜色越深,说明模型在该类的预测准确率越高。如果按行来看,每行不在对角线位置的就是错误预测的类别。总的来说,我们希望对角线越高越好,非对角线越低越好。对于二分类问题,真实的样本标签有两类,我们学习器预测的类别有两类,那么根据二者的类别组合可以划分为四组,如下表所示:
混淆矩阵 |
真实值 |
||
Positive |
Negative |
||
预测值 |
Positive |
TP |
FP (Type II Error) |
Negative |
FN (Type II Error) |
TN |
由此,我们就能得到下面的四个基础指标,我称他们是一级指标(最底层的)这些指标是基于二分类的任务,也可以拓展到多分类:
标签为正样本,分类为正样本的数目为True Positive,简称TP;
标签为正样本,分类为负样本的数目为False Negative,简称FN;这就是统计学上的第一类错误(Type I Error)
标签为负样本,分类为正样本的数目为False Positive,简称FP;这就是统计学上的第二类错误(Type II Error)
标签为负样本,分类为负样本的数目为True Negative,简称TN。
判别是否为正例只需要设一个概率阈值T,预测概率大于阈值T的为正类,小于阈值T的为负类,默认就是0.5。如果我们减小这个阀值T,更多的样本会被识别为正类,这样可以提高正类的召回率,但同时也会带来更多的负类被错分为正类。如果增加阈值T,则正类的召回率降低,精度增加。如果是多类,比如ImageNet1000分类比赛中的1000类,预测类别就是预测概率最大的那一类。
混淆矩阵的指标:
预测性分类模型,肯定是希望越准越好。那么,对应到混淆矩阵中,那肯定是希望TP与TN的数量大,而FP与FN的数量小。所以当我们得到了模型的混淆矩阵后,就需要去看有多少观测值在第二、四象限对应的位置,这里的数值越多越好;反之,在第一、三象限对应位置出现的观测值肯定是越少越好。
单标签分类任务中每一个样本都只有一个确定的类别,预测到该类别就是分类正确,没有预测到就是分类错误,因此最直观的指标就是Accuracy,也就是准确率。
该公式表示的就是所有样本都正确分类的概率,可以使用不同的阈值T。
在ImageNet中使用的Accuracy指标包括Top_1 Accuracy和Top_5 Accuracy,Top_1 Accuracy就是前面计算的Accuracy。
记样本xi的类别为yi,类别种类为(0,1,…,C),预测类别函数为f,则Top-1的计算方法如下:
如果给出概率最大的5个预测类别,只要包含了真实的类别,则判定预测正确,计算出来的指标就是Top-5。目前在ImageNet上,Top-5的指标已经超过95%,而Top-1的指标还在80%左右。
如果只考虑正样本的指标,有两个很常用的指标,精确率和召回率。
(Precision指标在中文里可以称为查准率或者是精确率,Recall指标在中文里常被称为查全率或者是召回率。)
精确率(Precision)是指在所有系统判定的“真”的样本中,确实是真的的占比。
召回率(Recall)是指在所有确实为真的样本中,被判为的“真”的占比。
(如果对负样本感兴趣的,也可以计算对应的精确率和召回率,这里记得区分精确率和准确率的分别。)
准确率和召回率是相互影响的,因为如果想要提高准确率就会把预测的置信率阈值调高,所有置信率较高的预测才会被显示出来,而那一些正确预测(True Positive)可能因为置信率比较低而没有被显示了。一般情况下准确率高、召回率就低,召回率低、准确率高,如果两者都低,就是网络出问题了。一般情况,用不同的阈值,统计出一组不同阈值下的精确率和召回率,这时候就可以画出Precision-recall 曲线如下图:
横轴就是recall,纵轴就是precision,曲线越接近右上角,说明其性能越好,可以用该曲线与坐标轴包围的面积来定量评估,值在0~1之间。
如果一个分类器的性能比较好,那么它应该有如下的表现:在Recall值增长的同时,Precision的值保持在一个很高的水平。而性能比较差的分类器可能会损失很多Precision值才能换来Recall值的提高。通常情况下,文章中都会使用Precision-recall曲线,来显示出分类器在Precision与Recall之间的权衡。
在上一小节中的P-R图中,它能直观地显示出学习器在样本总体上的精确率(查准率)和召回率(查全率),显然它是一条总体趋势是递减的曲线。在进行比较时,若一个学习器的PR曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者,比如上图中A优于C。但是B和A谁更好呢?因为AB两条曲线交叉了,所以很难比较,这时比较合理的判据就是比较PR曲线下的面积,该指标在一定程度上表征了学习器在查准率和查全率上取得相对“双高”的比例。因为这个值不容易估算,所以人们引入“平衡点”(BEP)来度量,他表示“精确率=召回率”时的取值,值越大表明分类器性能越好,以此比较我们一下子就能判断A较B好。
BEP还是有点简化了,更常用的是F1度量:
F1-score 就是一个综合考虑precision和recall的指标,比BEP更为常用。
而上面提到的Precision-Recall曲线下的面积即为平均精确度Average Precision简称AP,这是一个在检索任务和回归任务中经常使用的指标,通常来说一个越好的分类器,AP值越高。
mAP是多个类别AP的平均值。这个mean的意思是对每个类的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。计算公式如下:
影响mAP的因素
一般来说影响mAP的原因有很多,主要以下几个:
1、不好的训练数据
2、训练数据不够多
3、标注的框不够准确
4、数据的多变性
有的时候增加训练数据可能mAP并不会增加多少。当然了,使用表现更好的网络,其mAP自然地也会更加的高。
IoU 即交并比 即 Intersection-over-Union,是目标检测中使用的一个概念,是一种测量在特定数据集中检测相应物体准确度的一个标准。
为了用IoU指标来评估目标检测器,我们需要:ground-truth bounding boxes和我们训练好的模型预测的bounding boxes。下图是一个示例。图中绿色框为Ground-truth bounding box,红色框为预测框,我们的目标是计算它们的IoU。
计算IoU的公式如下,可以看到IoU是一个比值,即交并比。在分子中,我们计算预测框和ground-truth之间的重叠区域;分母是并集区域,或者更简单地说,是预测框和ground-truth所包含的总区域。重叠区域和并集区域的比值,就是IoU。
为什么使用IoU来评估目标检测器:
与分类任务不同,我们预测的bounding box的坐标需要去匹配ground-truth的坐标,而坐标完全匹配基本是不现实的。因此,我们需要定义一个评估指标,奖励那些与ground-truth匹配较好(重叠较大)的预测框。
上图展示了IoU的好坏对比,与ground-truth bounding boxes 重叠比例更大的预测边界框比重叠较少的边界框具有更高的分数,这使得IoU成为评估目标检测器的极佳指标。我们并不关心(x,y)坐标的精确匹配,但我们确实希望确保我们预测的边界框尽可能匹配——IoU可以做到这一点。
ROC(Receiver Operating Characteristic)曲线与AUC(Area Under Curve)
ROC曲线:
代表所有负样本中错误预测为正样本的概率,假警报率;
对角线对应于随机猜测模型,而(0,1)对应于所有整理排在所有反例之前的理想模型。曲线越接近左上角,分类器的性能越好。
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
ROC曲线绘制:
(1)根据每个测试样本属于正样本的概率值从大到小排序;
(2)从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本;
(3)每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。
当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。
ROC曲线特点:
(1)优点:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。
在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
(2)缺点:上文提到ROC曲线的优点是不会随着类别分布的改变而改变,但这在某种程度上也是其缺点。因为负例N增加了很多,而曲线却没变,这等于产生了大量FP。像信息检索中如果主要关心正例的预测准确性的话,这就不可接受了。在类别不平衡的背景下,负例的数目众多致使FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。ROC曲线的横轴采用FPR,根据FPR ,当负例N的数量远超正例P时,FP的大幅增长只能换来FPR的微小改变。结果是虽然大量负例被错判成正例,在ROC曲线上却无法直观地看出来。(当然也可以只分析ROC曲线左边一小段)
PR曲线:
PR曲线使用了Precision,因此PR曲线的两个指标都聚焦于正例。类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。
进行学习器比较时,与PR图相似,若一个学习器的ROC曲线被另一个学习器的曲线包住,那么我们可以断言后者性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性断言两者孰优孰劣。此时若要进行比较,那么可以比较ROC曲线下的面积,即AUC,面积大的曲线对应的分类器性能更好。
(2)AUC
AUC(Area Under Curve)的值为ROC曲线下面的面积,若分类器的性能极好,则AUC为1。但现实生活中尤其是工业界不会有如此完美的模型,一般AUC均在0.5到1之间,AUC越高,模型的区分能力越好,上图AUC为0.81。若AUC=0.5,即与上图中虚线重合,表示模型的区分能力与随机猜测没有差别。若AUC真的小于0.5,请检查一下是不是好坏标签标反了,或者是模型真的很差。
物理意义:首先AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。
计算公式:就是求曲线下矩形面积。
NMS即non maximum suppression即非极大抑制,顾名思义就是抑制不是极大值的元素,搜索局部的极大值。在物体检测中,NMS 应用十分广泛,其目的是为了清除多余的框,找到最佳的物体检测的位置。
Non-Maximum Suppression就是需要根据score矩阵和region的坐标信息,从中找到置信度比较高的bounding box。对于有重叠在一起的预测框,只保留得分最高的那个。
(1) NMS计算出每一个bounding box的面积,然后根据score进行排序,把score最大的bounding box作为队列中首个要比较的对象;
(2) 计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box,保留小的IoU得预测框;
(3) 然后重复上面的过程,直至候选bounding box为空。
最终,检测了bounding box的过程中有两个阈值,一个就是IoU,另一个是在过程之后,从候选的bounding box中剔除score小于阈值的bounding box。需要注意的是:Non-Maximum Suppression一次处理一个类别,如果有N个类别,Non-Maximum Suppression就需要执行N次。
Detection基础模块之(一)IoU https://blog.csdn.net/weixin_41278720/article/details/88770034
深度学习模型评估指标 https://www.cnblogs.com/tectal/p/10870064.html
深度学习常用的模型评估指标 https://www.cnblogs.com/skyfsm/p/8467613.html
深度学习常用评价指标 https://blog.csdn.net/qiu_peng/article/details/82895326
机器学习:评价指标:分类问题、回归问题、排序问题 https://blog.csdn.net/weixin_41108334/article/details/84502204
深度学习笔记(八):目标检测性能评价指标(mAP、IOU..) https://blog.csdn.net/qq_29893385/article/details/81213377