分类评价指标:ROC曲线和PR曲线详解

1. 什么是ROC曲线

接受者操作特性曲线(receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sensitivity curve)。接受者操作特性曲线就是以虚惊概率为横轴,击中概率为纵轴所组成的座标图。因此,ROC曲线越靠近座标的左上角越好。
ROC曲线

2.混淆矩阵

对于一个二分类问题,它有四种情况:
如果一个实例是正类,它被分为正类,记为 真正(True Positive);
如果一个实例是正类,它被分为负类,记为 假负(False Negative);
如果一个实例是负类,它被分为正类,记为 假正(False Positive);
如果一个实例是负类,它被分为负类,记为 真负(True Negative)。

在表格中可以表示为:

真实1 真实0
预测1 TP FP
预测0 FN TN

TP:正确肯定的数目;
FN:漏报,没有正确找到的匹配的数目;
FP:误报,给出的匹配是不正确的;
TN:正确拒绝的非匹配对数;

由此我没可以引入两个新名词:
真正类率(True Positive Rate, TPR),表示分类器所识别出的 正实例占所有正类的比例,计算公式为:
TPR=TPTP+FNTPR = \frac{TP}{TP+FN}
另一个是假正类率(False Positive Rate, FPR),表示分类器错认为正类的负实例占所有负类的比例,计算公式为:
FPR=FPFP+TNFPR=\frac{FP}{FP+TN}
还有一个真负类率(True Negative Rate, TNR),表示分类器正确识别所有负类所占全部负类的比例,计算公式为:
TNR=TNFP+TN=1FPRTNR = \frac{TN}{FP+TN}=1-FPR

3. ROC曲线如何得到

疾病预测

以疾病检测为例,这是一个有监督的二分类模型,模型对每个样本的预测结果为一个概率值,我们需要从中选取一个阈值来判断健康与否。
定好一个阈值之后,超过此阈值定义为患病,低于此阈值定义为健康,就可以得出混淆矩阵。如果我没将阈值减少0.1,真正类率(TPR)将会增高,相应的假正类率(FPR)也会提高,为了形象化这一变化,在此引入ROC,ROC曲线可以用于评价一个分类器。
[图片上传失败…(image-acef2b-1591253838567)]
ROC曲线上的每一个点对应于一个threshold,对于一个分类器,每个threshold下会有一个TPR和FPR。
比如Threshold最大时,TP=FP=0,对应于原点;Threshold最小时,TN=FN=0,对应于右上角的点(1,1)。
随着阈值theta增加,TP和FP都减小,TPR和FPR也减小,ROC点向左下移动。

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

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

4.AUC作为评价标准

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

(1) AUC的计算方法

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

  • 梯形法则:早期由于测试样本有限,我们得到的AUC曲线呈阶梯状。曲线上的每个点向X轴做垂线,得到若干梯形,这些梯形面积之和也就是AUC 。
  • Mann-Whitney统计量: 统计正负样本对中,有多少个组中的正样本的概率大于负样本的概率。这种估计随着样本规模的扩大而逐渐逼近真实值。

参数法:

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

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

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

三种AUC曲线

(3)不同模型AUC比较
总的来说,AUC值越大,模型的分类效果越好;不过两个模型AUC值相等并不代表模型效果相同,例子如下:

下图中有三条ROC曲线,A模型比B和C都要好
image
下面两幅图中两条ROC曲线相交于一点,AUC值几乎一样:当需要高Sensitivity(TPR)时,模型A比B好;当需要高Speciticity(FPR)时,模型B比A好;
image.png

(4)最优临界点的找法
我们希望自己的模型TPR高的同时FPR要尽量的小,则需要建立max(TPR+(1-FPR))的模型。
有三种方法:找到离(0,1)最近的点Youden index最小损耗(cost criterion)
image

  • 如果说Sn 和Sp 分别对应于sensitivity和specificity,所有ROC曲线上的点到ROC的距离可以表示为,让d最小就好啦;
  • Youden index : 最大化ROC曲线上的点到x轴的垂直距离(最大化TPR(Sn)和FPR(1-Sp)的差异)
  • 考虑人力物力和财力(第三种方法很少用,因为很难评估)

5. PR曲线

PR(Precision-Recall)曲线和ROC曲线类似,ROC曲线是FPR和TPR的点连成的线,PR曲线是准确率和召回率的点连成的线,如下图所示。
[图片上传失败…(image-ddf201-1591253838567)]

真实1 真实0
预测1 TP FP
预测0 FN TN

精确率和召回率的计算公式为:
精确率(Precision)
全部预测为1中实际标签为1的比率:
precision=TPTP+FPprecision = \frac{TP}{TP+FP}

召回率(Recall)
实际标签为1中正确预测为1的比率:
rechall=TPTP+FNrechall = \frac{TP}{TP+FN}
而Recall=TPR,因此PR的横座标为ROC的纵座标。

6.ROC曲线和PR曲线

相对来讲ROC曲线会稳定很多,在正负样本量都足够的情况下,ROC曲线足够反映模型的判断能力。因此,对于同一模型,PR和ROC曲线都可以说明一定的问题,而且二者有一定的相关性,如果想评测模型效果,也可以把两条曲线都画出来综合评价。对于有监督的二分类问题,在正负样本都足够的情况下,可以直接用ROC曲线、AUC、KS评价模型效果。在确定阈值过程中,可以根据Precision、Recall或者F1来评价模型的分类效果。对于多分类问题,可以对每一类分别计算Precision、Recall和F1,综合作为模型评价指标。
image
在上图中,(a)和©为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,©和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

参考
全面了解ROC曲线
接受者操作特征曲线
ROC曲线详解
机器学习算法中的准确率、精确率、召回率和F值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章