二分类
prediction | |||
fact | True Positive | False Negative | TP+FN |
False Positive | True Negative | FP+TN | |
TP+FP | FN+TN | TP+FN+FP+TN |
TP:预测为阳性,实际就是阳性(真阳性)
FP:预测为阳性,实际是阴性(假阳性)
FN:预测为阴性,实际是阳性(假阴性)
TN:预测为阴性,实际是阴性(真阴性)
P(准确率,Precision)=TP/(TP+FP),所有真的样本预测出来了多少#不常用
R(召回率,Recall,Sensitivity,真阳性率)=TP/(TP+FN),所有预测样本中预测对了多少
S(特异性,Specificity)=TN/(FP+TN)
ROC曲线:
ROC曲线以假阳性率(1-Specificity)作为横坐标,以真阳性率(Sensitivity Rate)作为纵坐标
ROC曲线描述了在一定累计好客户比例下的累计坏客户的比例,模型的区分能力越强,ROC曲线越往左上角靠近
ROC曲线绘制:
模型建好后,将测试样本放入模型,会得到相应分值。然后根据分值判断该样本属于1还是0,这个判断依据是有一个设置的阈值。
假设有20个样本,按得分值将样本从大到小排序。Class表示实际上该样本是正样本(p/1)还是负样本(n/0),Score表示该样本的得分值。比如:第四个样本得分为0.6,实际是正样本。实际为p和n的样本各有10个
1.设置第一个判断的阈值为0.9,则TP=1,FN=9,FP=0,TN=10
1-specificity=FP/(FP+TN)=0/(0+10)=0
Sensitivity(recall)=TP/(TP+FN)=1/(1+9)=0.1
则第一个坐标为(0,0.1)
2.设置设置第一个判断的阈值为0.8,则TP=2,FN=8,FP=0,TN=10
1-specificity=FP/(FP+TN)=0/(0+10)=0
Sensitivity(recall)=TP/(TP+FN)=2/(2+8)=0.2
则第一个坐标为(0,0.2)
......
(其实可以根据百分数取值排序,为了方便起见,以多少个样本分为多少份)
得到ROC曲线
AUC系数表示ROC曲线下方的面积。AUC系数越高,模型的风险区分能力越强。
AUC>0.9以上时有较高准确性
AUC,0.7~0.9时有一定准确性
AUC,0.5~0.7时有较低准确性
PR曲线
PR曲线(Precision Recall曲线)。PR曲线用来来表现分类/检索的性能。
F1值反应recall与precision相互制衡,当Precision和Recall都高的时候可以确信,F1值越大,模型效果越好
F1值:是Precision和Recall的综合。 2/F1=1/P+1/R
KS曲线
KS值, <20,模型没有鉴别能力
KS值,20~40,模型勉强接受
KS值,51~60,模型具有区别能力
KS值,61~75,模型有非常好的区别能力
KS值, >75,模型异常,可能有问题
K-S曲线和ROC曲线类似。
首先把分类模型输出的概率从大到小排序,然后取10%的值(也就是概率值)作为阀值,同理把10%*k(k=1,2,3,…,9)处的值作为阀值,计算出不同的FPR和TPR值,以10%*k(k=1,2,3,…,9)为横坐标,分别以TPR和FPR的值为纵坐标,就可以画出两个曲线,这就是K-S曲线。
(这里分为9份,有9个阈值,也可按照上述ROC曲线划分规则:多少样本分多少份比较简单)
K-S曲线能衍生出KS值,KS=max(TPR-FPR),即是两条曲线之间的最大间隔距离。从这点也可以看出,ROC曲线、K-S曲线、KS值的本质是相同的。
K-S检验主要是验证模型对违约对象的区分能力,通常是在模型预测全体样本的信用评分后,将全体样本按违约与非违约分为两部分,然后用KS统计量来检验这两组样本信用评分的分布是否有显著差异。
洛伦兹曲线
GINI系数(基尼系数)
gini系数=A/(A+B)
参考连接