来源:https://blog.csdn.net/u013421629/article/details/78217498

KS(Kolmogorov-Smirnov):KS用于模型风险区分能力进行评估, 
指标衡量的是好坏样本累计分部之间的差值。 
好坏样本累计差异越大,KS指标越大,那么模型的风险区分能力越强。

KS的计算步骤如下: 
1. 计算每个评分区间的好坏账户数。 
2. 计算每个评分区间的累计好账户数(注意是累计,也就是包含前面的区间)占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。 
3. 计算每个评分区间累计坏账户占比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值即得此评分卡的K-S值。

KS(Kolmogorov-Smirnov)(转)-LMLPHP

在具体编程实现上可以利用画roc曲线方式:

def eval_ks(preds, dtrain):
labels = dtrain.get_label()
fpr, tpr, thresholds = roc_curve(labels, preds)
ks = 0
for i in range(len(thresholds)):
if tpr[i] - fpr[i] > ks:
ks = tpr[i] - fpr[i]
return 'KS', ks

只不过这里面的分组,相当于每个单独的元素作为一组而已,TPR就是累计好样本占比,FPR是累计坏样本占比。roc_curve的thresholds是根据preds进行排序每次取其中一个作为threshold,从大到小依次取值,然后算出相应的TPR,FPR,这里面的计算结果一般tpr都大于fpr。

KS(Kolmogorov-Smirnov)(转)-LMLPHP

05-12 16:09