AUC(Area Under Curve)被定义为ROC曲线下的面积。我们往往使用AUC值作为模型的评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。其中,ROC曲线的横轴为(1-特异性),即1-预测对的bad实例/实际的bad实例数;纵轴为敏感性,即预测对的good实例/实际good的实例。从而AUC可以表示模型的准确性和排序能力。
那既然有了AUC为何还要KS呢?
答案很简单,因为他们展示模型功效的视角不一样。
下面我们来看一下KS的计算原理。
事实上,K-S检验出现在统计学非参数检验中,其全名为Kolmogorov-Smirnov Test。
先简单介绍下单样本的K-S检验。单样本K-S检验是利用样本数据来推断总体是否服从某一分布(如:Normal, Uniform, Poisson, Exponential),适用于探索连续型随机变量的分布形态。
好了,单样本K-S事实上检验的是分布形态,那不难理解两样本分布的K-S检验主要推测的就是两个样本是否具有相同的分布了。
KS的计算步骤如下:
- 计算每个评分区间的好坏账户数(计算的是特征的KS的话,是每个特征对应的好坏账户数)。
- 计算每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。
- 计算每个评分区间累计坏账户占比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值即得此评分卡的KS值。
ks_2samp实现: scipy.stats.ks_2samp 计算
def ks_calc_2samp(data,score_col,class_col):
'''
功能: 计算KS值&#