美文网首页
ROC曲线和PR曲线

ROC曲线和PR曲线

作者: 一位学有余力的同学 | 来源:发表于2020-06-07 21:46 被阅读0次

    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 = \frac{TP}{TP+FN}
    另一个是假正类率(False Positive Rate, FPR),表示分类器错认为正类的负实例占所有负类的比例,计算公式为:
    FPR=\frac{FP}{FP+TN}
    还有一个真负类率(True Negative Rate, TNR),表示分类器正确识别所有负类所占全部负类的比例,计算公式为:
    TNR = \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 = \frac{TP}{TP+FP}

    召回率(Recall)
    实际标签为1中正确预测为1的比率:
    rechall = \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)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。

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

    相关文章

      网友评论

          本文标题:ROC曲线和PR曲线

          本文链接:https://www.haomeiwen.com/subject/syhgzhtx.html