zoukankan      html  css  js  c++  java
  • KS(Kolmogorov-Smirnov)(转)

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

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

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

    在具体编程实现上可以利用画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。

  • 相关阅读:
    js 计时器小练-20160601
    数位dp入门学习之路(正常枚举“过渡到”dfs枚举)
    An easy problem
    牌型种类 蓝桥杯
    带分数(穷举法) 蓝桥杯赛题
    表达式的转换----->中缀表达式转后缀表达式
    map 的使用
    netsatat 的使用
    两个矩形不相交
    前缀和
  • 原文地址:https://www.cnblogs.com/gczr/p/8761308.html
Copyright © 2011-2022 走看看