博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ROC曲线 VS PR曲线
阅读量:5248 次
发布时间:2019-06-14

本文共 3029 字,大约阅读时间需要 10 分钟。

(博客主亲自录制视频教程,QQ:231469242)

(原文链接)

 初识

1. ROC的前世今生

ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,首先是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具(飞机、船舰),也就是信号检测理论。之后很快就被引入了心理学来进行信号的知觉检测。此后被引入机器学习领域,用来评判分类、检测结果的好坏。因此,ROC曲线是非常重要和常见的统计分析方法。

2. “ROC 曲线”思路:

根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值(TPR、FPR),分别以它们为横、纵坐标作图。

3. AUC (Area under Curve):

ROC曲线下的面积,介于0.1和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。

4. “混淆矩阵”:

对于二分类问题,可将样本根据其真实类别与学习器预测类别的组合划分为TP(true positive)、FP(false positive)、TN(true negative)、FN(false negative)四种情况,TP+FP+TN+FN=样本总数。

http://zhwhong.ml/2017/04/14/ROC-AUC-Precision-Recall-analysis/

(1) 真阳性(True Positive,TP):检测不健康,且实际不健康;正确肯定的匹配数目;

(2) 假阳性(False Positive,FP):检测不健康,但实际健康;误报,给出的匹配是不正确的;

(3) 真阴性(True Negative,TN):检测健康,且实际健康;正确拒绝的非匹配数目;

(4) 假阴性(False Negative,FN):检测健康,但实际不健康;漏报,没有正确找到的匹配的数目。

 深入了解ROC曲线

ROC曲线其实是多个混淆矩阵的结果组合。

以疾病检测为例,这是一个有监督的二分类模型,模型对每个样本的预测结果为一个概率值,我们需要从中选取一个阈值来判断健康与否。

定好一个阈值之后,超过此阈值定义为不健康,低于此阈值定义为健康,就可以得出混淆矩阵。

而如果在上述模型中我们没有定好阈值,而是将模型预测结果从高到低排序,将每次概率值依次作为阈值,那么就可以得到多个混淆矩阵。对于每个混淆矩阵,我们计算两个指标TPR和FPR,以FPR为x轴,TPR为y轴画图,就得到了ROC曲线。

一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting,AUC面积越大一般认为模型越好。

 AUC值作为评价标准

1. AUC (Area Under Curve)

被定义为ROC曲线下的面积,取值范围一般在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

2.AUC 的计算方法

非参数法:(两种方法实际证明是一致的)

(1)梯形法则:早期由于测试样本有限,我们得到的AUC曲线呈阶梯状。曲线上的每个点向X轴做垂线,得到若干梯形,这些梯形面积之和也就是AUC 。

(2)Mann-Whitney统计量: 统计正负样本对中,有多少个组中的正样本的概率大于负样本的概率。这种估计随着样本规模的扩大而逐渐逼近真实值。

参数法:

(3)主要适用于二项分布的数据,即正反样本分布符合正态分布,可以通过均值和方差来计算。

3.从AUC判断分类器(预测模型)优劣的标准

· AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。

· 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

· AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。

· AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

三种AUC值示例:

总结:AUC值越大的分类器,正确率越高

4. 不同模型AUC的比较

总的来说,AUC值越大,模型的分类效果越好,疾病检测越准确;不过两个模型AUC值相等并不代表模型效果相同,例子如下:

下图中有三条ROC曲线,A模型比B和C都要好

下面两幅图中两条ROC曲线相交于一点,AUC值几乎一样:当需要高Sensitivity时,模型A比B好;当需要高Speciticity时,模型B比A好;

 最优零界点咋么找

说人话,就是保证TPR高的同时FPR要尽量的小,建立max(TPR+(1-FPR))的模型。同样有三种方法:找到离(0,1)最近的点、Youden index和最小损耗(cost criterion)

1. 如果说Sn 和Sp 分别对应于sensitivity和specificity,所有ROC曲线上的点到ROC的距离可以表示为,让d最小就好啦;

2. Youden index : 最大化ROC曲线上的点到x轴的垂直距离(最大化TPR(Sn)和FPR(1-Sp)的差异);

3. 考虑人力物力和财力(第三种方法很少用,因为很难评估)

ROC的好基友——PR曲线

1.介绍

PR曲线和ROC曲线类似,ROC曲线是FPR和TPR的点连成的线,PR曲线是准确率和召回率的点连成的线,如下图所示。

我们又知道,Recall=TPR,因此PRC的横坐标为ROC的纵坐标。

2. ROC曲线与PR曲线的取舍

相对来讲ROC曲线会稳定很多,在正负样本量都足够的情况下,ROC曲线足够反映模型的判断能力。因此,对于同一模型,PRC和ROC曲线都可以说明一定的问题,而且二者有一定的相关性,如果想评测模型效果,也可以把两条曲线都画出来综合评价。对于有监督的二分类问题,在正负样本都足够的情况下,可以直接用ROC曲线、AUC、KS评价模型效果。在确定阈值过程中,可以根据Precision、Recall或者F1来评价模型的分类效果。对于多分类问题,可以对每一类分别计算Precision、Recall和F1,综合作为模型评价指标。

在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

参考资料

https://en.wikipedia.org/wiki/Receiver_operating_characteristic

https://www.zhihu.com/question/30643044

http://www.it610.com/article/4964856.htm

http://zhwhong.ml/2017/04/14/ROC-AUC-Precision-Recall-analysis/

http://www.medicalbiostatistics.com/

 

转载于:https://www.cnblogs.com/webRobot/p/11451633.html

你可能感兴趣的文章
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>