查看原文
其他

【他山之石】ROC和CMC曲线的理解(FAR, FRR的理解)

“他山之石,可以攻玉”,站在巨人的肩膀才能看得更高,走得更远。在科研的道路上,更需借助东风才能更快前行。为此,我们特别搜集整理了一些实用的代码链接,数据集,软件,编程技巧等,开辟“他山之石”专栏,助你乘风破浪,一路奋勇向前,敬请关注。

作者:知乎—深度学习小白

地址:https://www.zhihu.com/people/taylover-39


01

ROC曲线
ROC曲线意为受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线)。曲线上没一个点反映着对同一信号刺激的感受性。
横轴:负正类率(false postive rate FPR)特异度,代表分类器预测的正类中实际负实例占所有负实例的比例,FP/(FP+TN);(1-Specificity)
纵轴:真正类率(true postive rate TPR)灵敏度,代表分类器预测的正类中实际正实例占所有正实例的比例,TP/(TP+FN);Sensitivity(正类覆盖率)
  • 预测情况分类
针对一个二分类问题,将实例分成正类(positive)和负类(negative)。但实际分类中,会出现四种情况:
(1)若一个实例是正类,并且被预测成为正类,即为真正类(True Postive TP)
(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)
(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)
(4)若一个实例是负类,并且被预测成为负类,即为真负类(True Negative TN)
  • ROC曲线的变换
假设采用逻辑回归分类器,其给出对每个实例为正类的概率,那么假设一个阈值为0.6,当概率大于0.6的时候为正类,当小于0.6的时候为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。
随着阈值的减小,越来越多的实例被划分为正类,即TP的数量越来越多,FN的数量越来越少,通过计算公式TP/(TP+FN)可以看到,TPR的值趋近于1;同时,当越来越多的实例被划分为正类时,这些正类当中也同样掺杂着真正的负实例,并且随着阈值的减少,TN的数量越来越少,通过计算公式FP/(FP+TN)可以看到,FPR的值趋近于1。因此,阈值最小时,对应坐标为(1,1)
随着阈值的增加,越来越多的实例被还分为负类,即TP的数量越来越少,FN的数量越来越多,最终导致TPR的值趋近于0;同样道理,FP的值也趋近于0,导致FPR的值趋近于0。因此,阈值最大时,对应坐标为(0,0)
  • ROC曲线意义
ROC曲线指受试者工作特征曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。
横轴FPR:FPR的值越大,说明预测的正类中实际的负类越多;
纵轴TPR:TRP的值越大,说明预测的正类中实际的正类越多。
理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好
  • 如何画ROC曲线
假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:
  • AUC值
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
  • 为什么使用Roc和Auc评价分类器
既然已经这么多标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。下图是ROC曲线和Presision-Recall曲线的对比:
在上图中,(a)和(c)为Roc曲线,(b)和(d)为Precision-Recall曲线。
(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果,可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线变化较大。

02

CMC曲线
CMC曲线全称是Cumulative Match Characteristic (CMC) Curve,也就是累积匹配曲线,同ROC曲线Receiver Operating Characteristic (ROC) curve一样,是模式识别系统,如人脸,指纹,虹膜等的重要评价指标,尤其是在生物特征识别系统中,一般同ROC曲线一起给出,能够综合评价出算法的好坏。
CMC曲线综合反映了分类器的性能,它评价的指标与深度学习当中常用的top1 err和top5 err评价指标一样的意思,不同的是横坐标的Rank表示的是正确率而不是错误率,两者的关系是:
Rank1识别率 = 1 - top1 err
Rank5识别率 = 1 - top5 err
它们表示的是什么意思呢?就比如给你一个选择题,有10个选项,但是只有一个选项是正确的,现在让你从中选出正确答案。如果让你猜一次,正确的概率为1/10,你感觉自己状态不好,想从猜一次,现在给你机会,让你再猜一次,现在你总共猜两次,选两个答案,正确率一下子提高到1/5,你又说了,猜两次反映不出你的水平,你要猜五次,也就是从10个选项中选5个选项,这5个选项中包括正确选项的概率大大增加,变为1/2,如果让你猜10次,那蒙对的概率肯定为1了,也有人蒙的能力比较强,可能猜3次就能猜到正确答案,也就是提前收敛到1。CMC曲线Rank1识别率就是表示按照某种相似度匹配规则匹配后,第一次就能判断出正确的标签的数目与总的测试样本数目之比,Rank5识别率就是指前五项(按照匹配程度从大到小排列后)有正确匹配。如果一个样本按照匹配程度从大到小排列后,到最后一项,才匹配到正确标签,这就说明分类器不太好,把最应匹配的判别成最不应匹配的。

03

下面补充一下误识率(FAR)和拒识率(FRR)的相关知识
这两种评测标准通常在人脸识别或者指纹匹配过程中使用。
假定在人脸识别的过程中:
误识率(FAR)是指在标准人脸数据库中测试人脸识别算法的时候,不同人脸特征的匹配分数大于给定的阈值,从而认为是相同人脸的比例,简单地说就是:“把不应该匹配的人脸当成匹配的人脸”的比例。
拒识率(FRR)是指在标准人脸数据库中测试人脸识别算法的时候,同一个人脸的匹配分数低于给定的阈值,从而认为是不同人脸的比例,简单地说就是:“把应该匹配的人脸当成不匹配的人脸”的比例。
下面以指纹匹配为例进行说明:
假定有110个人,每人的大拇指的8幅指纹图片共110*8=880幅的指纹数据库,即110类,每类8幅图片。当然,我们希望类内的任意两幅图片匹配成功,类间的任意图片匹配失败。现在我们让库中的每一幅图片除开它自身之外与其他的所有图片进行匹配,分别计算误识率,与拒识率。
  • 误识率(FAR):假定由于指纹识别算法性能的原因,把本应该匹配失败的判为匹配成功,若假定这种错误次数为1000次。理论情况下,来自同一个指纹的图像都成功匹配,次数为7*8*110=6160次,匹配的总次数,即880×(880-1)=773520次。匹配失败次数应为773520-6160=767360次。则误识率FAR为1000/767360*100%=0.13%。
  • 拒识率(FRR):假定由于指纹识别算法性能的原因,把本应该匹配成功的判为匹配失败,若这种错误次数为160次。则拒识率为160/6160=2.6%。
其中下图展示了计算公式:
在有些文献中将误识率表达为FMR(False match rate),以及将拒识率表达为FNMR(False non-match rate),这和本文中所讲到的误识率与拒识率是同一个意思,即:
  • 误识率:FAR=FMR
  • 拒识率:FRR=FNMR
其中Half Total Error Rate(HTER)是将FRR和FAR综合起来的一种评测手段,计算公式如下所示:
其中D指的是进行训练的数据集,而t是一个阈值。当改变阈值使FAR增大的时候,FRR会变小。
ROC曲线(Receiver Operator characteristic Curve)是一种已经被广泛接受的系统匹配算法测试指标,它是匹配分数阈值、误识率以及拒识率之间的一种关系。它反映了识别算法在不同阈值上,拒识率和误识率的平衡关系。
下图给出了ROC曲线,其中横坐标是拒识率,纵坐标是误识率,等错误率(EER Equal-Error Rate)是拒识率和误识率的一个平衡点,等错误率能够取到的值越低,表示算法的性能越好。可以看到,在高安全访问应用当中,要尽可能的减低误识率(FAR),以防止非法的攻击,这样子将会导致拒识率(FRR)的增高;而在法医应用当中正好相反,尽可能的降低拒识率(FRR)使病人在诊断的过程中,尽可能的发现可疑的疾病,但会导致该病人并没有得这种病却会判为得了这种病,即误识率(FAR)的增高。
原版参考有道云笔记:https://note.youdao.com/ynoteshare1/index.html?id=2bc94eec0889569f7fad8d0f4089e248&type=note
参考:
https://blog.csdn.net/zdy0_2004/article/details/44948511
https://baike.baidu.com/item/接受者操作特征曲线/2075302?fr=aladdin&fromtitle=ROC曲线&fromid=775606
https://blog.csdn.net/u011501388/article/details/78242856

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“他山之石”历史文章


更多他山之石专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存