ROC与AUC

参考:ROC与AUC

1. 总结:绘制ROC曲线时,横坐标是FPR(False Positive Rate),纵坐标是TPR(True Positive Rate),ROC曲线上的每一个点由一个分类器(例如逻辑回归分类器)取某一个概率阈值(例如取0.8作为阈值,则预测的概率大于0.8视为正样本,否则为负样本)作为区分正负样本时,进而得到的TPR,FPR的值。这样遍历所有阈值(0-1),得到每一个点,连接起来就是ROC曲线。

其中y=x直线上的点,表示TPR=FPR,例如TPR=FPR=0.8,表示预测TPR=TP/(TP+FN)=0.8,FPR=FP/(FP+TN)=0.8,直觉上有点不理解为何会有这样的结果,但确实有,例如:

  真实
    Pos=70 Neg=30
预测 Pos=80 56 24
Neg=20 14 6

 TPR,FPR都是0.8

而AUC就是ROC曲线之下,横坐标之上的部分(而不是ROC曲线与y=x曲线之间的部分)的面积就是AUC,因此AUC取值至少是0.5,不超过1.

AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。
1)AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
2)0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
3)AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。【即ROC曲线与y=x曲线重合,TPR=FPR,TPR不一定等于0.5,有可能等于0.8;这种情况TPR=FPR不一定是瞎猜,但就类似于知道总体分布(例如总体阳性率是0.8)后,属于有条件的瞎猜。】
4)AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

2. scikit-learn计算AUC的方法:

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html

原文地址:https://www.cnblogs.com/aaronhoo/p/15655375.html