zoukankan      html  css  js  c++  java
  • 基于python的k-s值计算

    做评分卡模型时(假设有多个自变量,因变量即是否违约。)通常需要筛选变量。

    k-s值的作用类似于AUC,它期初是用来评价模型(变量)对是否违约事件的区分程度的。

    # -*- coding: utf-8 -*-
    """
    Created on Mon Apr  8 17:04:37 2019
    
    @author: Administrator
    ks计算
    
    """
    import pandas as pd
    import numpy as np
    
    data_test_2 = {'y30':[1,1,1,1,1,1,0,0,0,0,0,0,0],'a':[1,2,0,2,2,7,4,5,4,0,4,18,np.nan]}
    data_test_2 = pd.DataFrame(data_test_2)
    
    def ks_calc_cross(data,var_col,y_col):
        '''
        功能: 计算KS值,输出对应分割点和累计分布
        输入值:-
        输出值:
        'ks': KS值,'crossdens': 好坏人累积概率分布以及其差值gap
        '''
        ks_df1 = pd.crosstab(data[var_col],data[y_col])
        ks_df2 = ks_df1.cumsum(axis=0) / ks_df1.sum()
        ks_df2['gap'] = abs(ks_df2[0] - ks_df2[1])
        ks = ks_df2['gap'].max()
        return ks,crossdens
    
    ks_value,ks_df2 = ks_calc_cross(data_test_2, 'a', 'y30')
    print(ks_value,'
    ',ks_df2)

    ks检验介绍<转载>
    笔者刚入门机器学习开始做的例子就是金融场景下风控模型。那时评价模型的好坏就用传统的机器学习评价标准,比如说准确率、精确率和AUC,对风控模型的ks指标还一无所知,倒是作为统计科班出身的童鞋,第一次见到ks想到的就是数理统计中的Kolmogorov-Smirnov检验(柯尔莫哥洛夫-斯米尔洛夫)。后来实习过程中,发现老板们在看风控模型结果最关注的结果就是ks指标,才开始对ks指标逐渐重视起来。在衡量模型效果时,对评分卡或者机器学习模型给出的违约概率和y值计算ks值,给出模型效果来确定模型的好坏(一般0.3左右可以使用,0.4以上模型效果较高,超过0.7,可能模型有问题,这时候需要去debug一下是不是出现了特征信息泄露以及一些其他的问题)。笔者在实际应用中,发现市面上关于ks系统介绍的文章比较少,本文就系统的介绍一下ks的前世今生,以及在在风控模型下的多种实现。

    参考:《风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)》

    https://blog.csdn.net/qq_38984677/article/details/85632268

     《分类模型的评价指标--混淆矩阵,ROC,AUC,KS,Lift,Gain》

    注意:对名义变量不适合用k-s值。一下证明了变量值的排序影响最终的ks值:

  • 相关阅读:
    JavaScript 内置函数有什么?
    cursor(鼠标手型)属性
    用CSS制作箭头的方法
    CSS 的伪元素是什么?
    用CSS创建分页的实例
    CSS 按钮
    网页布局中高度塌陷的解决方法
    CSS 进度条
    DOM导航与DOM事件
    DOM 修改与DOM元素
  • 原文地址:https://www.cnblogs.com/andylhc/p/10673030.html
Copyright © 2011-2022 走看看