介绍ROC、KS、AUC等二分类评估指标
混淆矩阵
TP, FP, FN, TN
预测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);所有真实的“1”中,有多少被模型成功选出
- False Positive Rate(FPR),计算公式为FPR=FP/(FP+TN);所有真实的“0”中,有多少被模型误判为1了;
- Precision=TP/(TP+FP),或2TP/((TP+FN)+(TP+FP))。所有判为1的用户,判对的比例
- 好的模型:TPR尽量高而FPR尽量低
ROC
ROC(Receiver Operating Characteristic Curve):接受者操作特征曲线。
ROC曲线:设定不同的阀值,计算不同的点(FPR,TPR),连成曲线
ROC曲线确定阈值的方法:
- 给出ROC曲线的拟合函数表达式,然后计算出最优的阀值,这个目前通过软件实现难度不大:如何给出最优拟合函数,计算数学上有很多方法;
- 计算出ΔTPR≈ΔFPR的点即为最优的阀值;
- 从业务上给出最优的阀值。
AUC
- AUC:ROC曲线下方的面积Area Under the ROC Curve,简称为AUC。这是评价模型的另一个方法,AUC值越大,说明模型的分辨效果越好
- gini系数:在SAS的评分模型输出中,常用来判断收入分配公平程度,此时gini=2*AUC-1
XGB中
1 | double sum_pospair = 0.0; |
R语言中的计算方法
1 | function (y_pred, y_true) |
简化计算公式
原因:
KS
K-S曲线:它和ROC曲线的画法异曲同工。以Logistic模型为例,首先把Logistic模型输出的概率从大到小排序,然后取10%的值(也就是概率值)作为阀值,同理把10%*k(k=1,2,3,…,9)处的值作为阀值,计算出不同的FPR和TPR值,以10%*k(k=1,2,3,…,9)为横坐标,分别以TPR和FPR的值为纵坐标,就可以画出两个曲线,这就是K-S曲线。
KS值:KS=max(TPR-FPR),即是两条曲线之间的最大间隔距离。当(TPR-FPR)最大时,也就是ΔTPR-ΔFPR=0,这和ROC曲线上找最优阀值的条件ΔTPR=ΔFPR是一样的。从这点也可以看出,ROC曲线、K-S曲线、KS值的本质是相同的。
K-S曲线能直观地找出模型中差异最大的一个分段,比如评分模型就比较适合用KS值进行评估;
KS值只能反映出哪个分段是区分度最大的,不能反映出所有分段的效果。
因此,在实际应用中,模型评价一般需要将ROC曲线、K-S曲线、KS值、AUC指标结合起来使用。