• zz在Excel中作ROC曲线


    Comment from Xinwei: 最近在帮高老师review一片PRL的论文,看到ROC曲线,查了一下Stentor的大作,觉得解释的很不错,特此转载!

     

    分类模型尝试将各个实例(instance)划归到某个特定的类,而分类模型的结果一般是实数值,如逻辑回归,其结果是从0到1的实数值。这里就涉及到如何确定阈值(threshold value),使得模型结果大于这个值,划为一类,小于这个值,划归为另一类。

    考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True positive),正类被预测成负类则为假负类(false negative)。

    列联表如下表所示,1代表正类,0代表负类。

      

      

    预测

      

      

      

    1

    0

    合计

    实际

    1

    True Positive(TP)

    False Negative(FN)

    Actual Positive(TP+FN)

    0

    False Positive(FP)

    True Negative(TN)

    Actual Negative(FP+TN)

    合计

      

    Predicted Positive(TP+FP)

    Predicted Negative(FN+TN)

     TP+FP+FN+TN

    从列联表引入两个新名词。其一是真正类率(true positive rate ,TPR), 计算公式为TPR=TP / (TP + FN),刻画的是分类器所识别出的正实例占所有正实例的比例。另外一个是负正类率(false positive rate, FPR),计算公式为FPR= FP / (FP + TN),计算的是分类器错认为正类的负实例占所有负实例的比例。还有一个真负类率(True Negative Rate,TNR),也称为specificity,计算公式为TNR=TN / (FP + TN) = 1 − FPR

    在一个二分类模型中,对于所得到的连续结果,假设已确定一个阀值,比如说0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC。

    Receiver Operating Characteristic,翻译为"接受者操作特性曲线",够拗口的。曲线是由两个变量的组合,1-specificity和Sensitivity. 由于1-specificity=FPR,即负正类率。Sensitivity即是真正类率,True positive rate,反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。

    下表是一个逻辑回归得到的结果。将得到的实数值按大到小划分成10个个数相同的部分。

    Percentile

    实例数

    正例数

    1-特异度(%)

    敏感度(%)

    10

    6180

    4879

    2.73

    34.64

    20

    6180

    2804

    9.80

    54.55

    30

    6180

    2165

    18.22

    69.92

    40

    6180

    1506

    28.01

    80.62

    50

    6180

    987

    38.90

    87.62

    60

    6180

    529

    50.74

    91.38

    70

    6180

    365

    62.93

    93.97

    80

    6180

    294

    75.26

    96.06

    90

    6180

    297

    87.59

    98.17

    100

    6177

    258

    100.00

    100.00

    其正例数为此部分里实际的正类数。也就是说,将逻辑回归得到的结果按从大到小排列,倘若以前10%的数值作为阀值,即将前10%的实例都划归为正类,6180个。其中,正确的个数为4879个,占所有正类的4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301个负实例被错划为正类,占所有负类的1301/47713*100%=2.73%,即1-特异度。以这两组值分别作为x值和y值,在excel中作散点图。得到ROC曲线如下

    对角线反映的是随机选择的结果,此对角线作为对照线。到底该怎样选择阀值呢,这涉及到了AUC(Area Under the ROC Curve,ROC曲线下的面积)。

     

    zz from http://www.cnblogs.com/zgw21cn/archive/2009/02/14/1390683.html#commentform

  • 相关阅读:
    QtCreator 常用快捷键
    Qt 键值对照表
    数据管理类设计与实现
    linux free 命令下free/available区别
    Google “战败”后,C++20 用微软的提案进入协程时代!
    怎么看源代码?
    一文教你如何高效使用C语言
    用 gdb 学 C 语言
    Java中 BigDecimal,80%的人都用错了....
    C++11 实现的 100行 线程池
  • 原文地址:https://www.cnblogs.com/ysjxw/p/1779081.html
Copyright © 2020-2023  润新知