• ROC曲线


    参考资料:

      csdn:https://blog.csdn.net/u012374174/article/details/52885583

      https://blog.51cto.com/14215529/2371128

      作者:zhwhong    链接:https://www.jianshu.com/p/c61ae11cc5f6  来源:简书

      wiki

      ROC(Receiver Operating Characteristic)曲线,反映敏感性和特异性连续变量的综合指标,roc曲线上每个点反映着对同一信号刺激的感受性。

      做过图像识别、机器学习或者信息检索相关研究的人都知道,论文的实验部分都要和别人的算法比一比。可怎么比,人多嘴杂,我说我的方法好,你说你的方法好,各做各的总是不行——没规矩不成方圆。于是慢慢的大家就形成了一种约定,用ROC曲线和PR曲线来衡量算法的优劣。

      ROC曲线最初来源于雷达兵的业绩考核。雷达兵的任务是检测雷达信号,区分雷达信号是敌人还是飞鸟,然后发出警报。兵长想知道雷达兵报告的信号中有多少是敌人(真阳性率),有多少是飞鸟(假阳性率)。每个雷达兵的判断标准(阀值)不同,所以该雷达兵发出警报中敌人和飞鸟的数目就不同。将所有雷达兵的结果汇总,就得到一条ROC曲线。每个点代表一个雷达兵(即一个点代表一个判断标准,或参数)检测信号的真阳性率和假阳性率。

      应用:给定一个模型/算法和其阈值(阀值即雷达兵的判断标准,有多个标准,即ROC曲线中的每个点),对一个数据集进行预测,计算和汇总在每个阀值下的预测值与实际值的关系。

      详细应用举例:

        1. 给定100个人,每个都有一个综合素质的指标,即达标/未达标。目的:想选一种方法,或者方法已经选好,但是参数不知道。那么问题是想选一种方法或者参数,用该方法能把这100个人中综合素质达标的人选出来。假定采用文化课考试(即模型/算法)的方法,超过60分(阀值)的人,认为达标,否则,不达标。那么,这样画出的ROC曲线的含义为:每个点代表一个阀值(即规定的达标分数),在该阀值下选出来的达标/未达标人数与已知的达标/未达标人数的比较结果(比较结果用真阳性率和假阳性率来衡量)。这样得到的ROC曲线图中只有一条曲线。

        2. 有一个检测CpG岛的新算法,想比较该算法和其他算法的优劣。首先,这个算法会有参数(即阀值),在不同的参数下检测出来的CpG岛的数量是不同,计算检测出来的CpG岛的情况与真实的CpG岛的情况(这里说的情况,仍然是用真阳性率和假阳性率来衡量),比如说:真实存在20个CpG岛,新算法能把其中的17个检测出来,TP=17,再根据计算TPR,FPR的公式得到比率即可。此处着重说原理,不详细说计算公式。在一个图中,展示不同算法的结果,就得到ROC曲线图中的多条不同颜色的曲线。

      为什么要用ROC曲线作为衡量不同算法的标准呢?

      因为每个算法都有自己的参数,参数不同,算法得到的结果也不同。如果A算法用自己最优参数的结果,与B算法非最优参数的结果比较,那么,A算法肯定是优于B算法的。但是,这样比较不准确,应该与B算法最优参数的结果比较。而ROC曲线就避免了这个问题。比较多个算法的结果,同时将每个算法在各种参数下的结果都展示出来。那么,孰优孰劣的算法就显而易见了。

      ROC曲线的缺点呢?

      ROC曲线更注重这个模型/诊断方法/算法的检出正确率,而忽略了假阴性率。在疾病诊断模型中,这种考量是合理的,因为就是想打到更高的疾病诊断率。但是,在体检模型中(即正常人体检),需要考量的是真阴性率和假阴性率。即:100个健康人体检,如果一个方法能把所有的病人都检测出来(TPR高,0.9),但是,也容易把健康人当做病人(TNR低,0.7),那么这个方法不适合用于体检模型;如果一个方法虽然不能把所有的病人都检测出来,但是,所有的健康人都没有被误诊为病人,那么这个方法是适合体检模型的。此处以后还需详细了解。

      鉴于此,即:有的方法敏感性好,特异性不好;有的方法敏感性不好,特异性好,那么如何评价不同的方法呢?通过计算ROC曲线的面积来评估算法的优劣。

      如下面的图片,A方法是最优的,敏感性高时,特异性低。B方法的敏感性高,但是,敏感性高的同时,特异性也高(误诊率也高,把正常人检测为患者),即:能检测出更多的病人,但也容易把正常人检测为病人。C方法的灵敏度低,即有一些病人C方法无法检出,但是,它也不容易把正常人误诊为病人。

      那么,如何评价B方法和C方法的好坏呢?用ROC面积。

      ROC曲线图如何看呢?

      曲线趋于平滑的点越靠近左上角,说明模型/诊断方法/算法越好。

     

      总结:ROC曲线上每一个点表示在模型/算法(或诊断方法)在该阀值下进行分类的真阳性率假阳性率值。纵坐标是真阳性率(敏感性),横坐标是假阳性率(特异性)。即:每个点是一个分类器的结果,只不过分类器的参数不同而已。

    附录:

    1. 计算公式

    真阳性率(True Positive Rate,TPR),灵敏度(Sensitivity),召回率(Recall):

    真阴性率(True Negative Rate,TNR),特异度(Specificity):

    假阴性率(False Negatice Rate,FNR),漏诊率( = 1 - 灵敏度):

    假阳性率(False Positice Rate,FPR),误诊率( = 1 - 特异度):

     

    2. ROC曲线图

  • 相关阅读:
    HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等
    php中0," ",null和false的区别
    php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项。
    php 解决上传中文文件名时出现乱码的问题
    php学习之有用的资源 总结
    php 问题及原因总结
    php 汉字验证码
    php 图片验证码
    php 字母和数字验证码
    php 使用imagettftext()函数出问题的原因
  • 原文地址:https://www.cnblogs.com/zypiner/p/11081824.html
Copyright © 2020-2023  润新知