【统计】 ROC曲线(1) – 模型评估首选方案
- 2019 年 12 月 17 日
- 笔记
基本概念
ROC曲线,也称“受试者工作特征曲线”,主要是用于X对Y的预测准确率情况。最初ROC曲线是运用在军事上,现在更多应用在医学领域,判断某种因素对于某种疾病的诊断是否有诊断价值。

ROC曲线图是反映敏感性与特异性之间关系的曲线。横坐标X轴为 1 – 特异性,也称为假阳性率(误报率),X轴越接近零准确率越高;纵坐标Y轴称为敏感度,也称为真阳性率(敏感度),Y轴越大代表准确率越好。
根据曲线位置,把整个图划分成了两部分,曲线下方部分的面积被称为AUC(Area Under Curve),用来表示预测准确性,AUC值越高,也就是曲线下方面积越大,说明预测准确率越高。曲线越接近左上角(X越小,Y越大),预测准确率越高。

应用场景
ROC曲线的应用场景有很多,根据上述的定义,其最直观的应用就是能反映模型在选取不同阈值的时候其敏感性(sensitivity, FPR)和其精确性(specificity, TPR)的趋势走向。不过,相比于其他的P-R曲线(精确度和召回率),ROC曲线有一个巨大的优势就是,当正负样本的分布发生变化时,其形状能够基本保持不变,而P-R曲线的形状一般会发生剧烈的变化,因此该评估指标能降低不同测试集带来的干扰,更加客观的衡量模型本身的性能。要解释清楚这个问题的话,大家还是先回顾一下混淆矩阵。

其中比较重要的概念有:
(1) 真阳性(True Positive,TP):检测不阳性,且实际不阳性;正确肯定的匹配数目;
(2) 假阳性(False Positive,FP):检测不阳性,但实际阳性;误报,给出的匹配是不正确的;
(3) 真阴性(True Negative,TN):检测阳性,且实际阳性;正确拒绝的非匹配数目;
(4) 假阴性(False Negative,FN):检测阳性,但实际不阳性;漏报,没有正确找到的匹配的数目。

绘制原理
ROC曲线其实是多个混淆矩阵的结果组合。以疾病检测为例,这是一个有监督的二分类模型,模型对每个样本的预测结果为一个概率值,我们需要从中选取一个阈值来判断健康与否。定好一个阈值之后,超过此阈值定义为不健康,低于此阈值定义为健康,就可以得出混淆矩阵。

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


AUC的概念
AUC (Area under Curve):ROC曲线下的面积,介于0.1和1之间,作为数值可以直观的评价分类器的好坏,值越大越好。
AUC值作为评价标准,被定义为ROC曲线下的面积,取值范围一般在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
AUC 的常用计算方法有:(1)梯形法则:早期由于测试样本有限,我们得到的AUC曲线呈阶梯状。曲线上的每个点向X轴做垂线,得到若干梯形,这些梯形面积之和也就是AUC;(2)Mann-Whitney统计量: 统计正负样本对中,有多少个组中的正样本的概率大于负样本的概率。这种估计随着样本规模的扩大而逐渐逼近真实值。

AUC的用途
从AUC判断分类器(预测模型)优劣的标准,AUC值越大的分类器,正确率越高。
- AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
- 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
- AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
- AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。


不同模型的比较
总的来说,AUC值越大,模型的分类效果越好,疾病检测越准确。不过两个模型AUC值相等并不代表模型效果相同,例子如下:
下图中有三条ROC曲线,A模型比B和C都要好。

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


最优临界点
所谓找到最优临界点,就是保证TPR高的同时FPR要尽量的小,建立max(TPR+(1-FPR))的模型。同样有三种方法:找到离(0,1)最近的点和Youden index。

1. 如果说Sn 和Sp 分别对应于sensitivity和specificity,所有ROC曲线上的点到ROC的距离可以表示为,让d最小就好啦;
2. Youden index : 最大化ROC曲线上的点到x轴的垂直距离(最大化TPR(Sn)和FPR(1-Sp)的差异);

性能比较-Delong test
我们知道ROC曲线的性能可以通过曲线下面积即AUC来得到,那么如何通过统计学的角度来比较两个ROC曲线呢,就是这里说的就是Delong test,可以得到两个曲线的P值,p<0.05可以看作两个曲线有较大差异。目前常用高的SPSS和Prism GraphPad是不能计算ROC曲线的最优临界值,更是无法对不同ROC曲线的效能进行Delong统计比较的。
作为数据分析终结者的科研猫工程师们,实力宠粉是我们的职责所在,于是继GEO终结者、TCGA生存分析终结者之后,我们开发了又一款终极工具-“ROC分析终结者”(ROC Terminator),可以一键生成多模式ROC曲线+完整模型评估参数+Delong模型比较检验。工具下期公布,大家先睹为快吧:


