做評分卡模型時(假設有多個自變量,因變量即是否違約。)通常需要篩選變量。
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,'\n',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值: