1. 什么是KS值?
Kolmogorov-Smirnov(KS)值是衡量分类模型预测结果与真实标签之间差异的一种常用指标。在风控领域中,KS值的应用十分广泛,用来衡量模型预测违约概率与实际违约概率差异的大小。
KS值的定义如下:
Kolmogorov-Smirnov统计值= Max(TPR-FPR)
其中TPR表示真正率(True Positive Rate),即模型将违约客户预测为违约客户的概率;FPR表示假正率(False Positive Rate),即模型将非违约客户预测为违约客户的概率。
KS值衡量了真正率和假正率之间的差异情况,其数值越大,则模型的区分度越好,预测效果越好。
2. KS值在风控中的应用
2.1 数据准备
在风控领域中,数据质量直接影响风险决策的准确性和成本效益。因此在数据建模前,需要对数据进行预处理和特征选择。
常见的预处理方法包括缺失值填补、异常值处理、离散化等。特征选择一般分为三类:过滤式方法、包裹式方法和嵌入式方法。其中过滤式方法主要基于特征的相关性或评估指标进行特征选择。
在准备好数据后,可以使用机器学习算法来训练模型。
2.2 模型评估
在模型训练结束后,需要进行模型评估以评估模型的性能和准确性。常用的模型评估指标包括:准确率、精确率、召回率、AUC、KS值等。
2.3 模型应用
在模型评估通过后,可以将模型运用到实际业务中。在风控领域中,模型的应用需要考虑到多方面因素,如机器学习模型可能无法预测未知的风险和复杂度较高等问题,因此建议在应用中综合使用人工审核和机器学习算法。
3. python实现KS值的计算
在Python中,可以使用sklearn库来计算KS值。下面是一个简单的实例:
from sklearn.metrics import roc_curve, auc
def sigmoid(x):
return 1.0 / (1.0 + np.exp(-x))
def ks_curve(y_true, y_score):
fpr, tpr, thresholds = roc_curve(y_true, y_score)
ks = np.max(tpr - fpr)
return fpr, tpr, thresholds, ks
def ks_stat(y_true, y_score, bins=10):
df = pd.DataFrame({'y_true': y_true, 'y_score': y_score})
df['bucket'] = pd.qcut(df['y_score'], bins)
grouped = df.groupby('bucket', as_index=False)
agg1 = grouped.min().rename(columns={'y_score': 'min_scr'})
agg2 = grouped.max().rename(columns={'y_score': 'max_scr'})
agg3 = grouped.mean().rename(columns={'y_true': 'rate'})
agg4 = pd.DataFrame(y_true.value_counts(), columns=['total'])
agg5 = grouped.count().rename(columns={'y_true': 'num'})
agg = pd.concat([agg1['min_scr'], agg2['max_scr'], agg3['rate'], agg5['num'],], axis=1)
agg['total'] = agg4['total']
agg['bad_rate'] = (agg['rate'] * agg['num']).cumsum() / agg['total'].cumsum()
agg['bad_cnt'] = agg['rate'] * agg['num']
agg['ks'] = np.round((agg['bad_rate'] - (agg['num'] - agg['bad_cnt']).cumsum() / (agg['total'] - agg['num']).cumsum()), 4) * 100
return agg
# 计算KS值
y_score = sigmoid(model.predict(X_test))
ks_stat(y_test, y_score, bins=10)
上述Python代码中ks_curve函数用于计算KS值,ks_stat函数用于计算KS值的分布情况。
4. 总结
在风控领域中,KS值是评估模型准确性的一种重要指标,其大小决定了模型的预测偏差大小。在数据预处理和特征选择方面,需要根据实际需求进行处理,并使用机器学习算法进行模型训练。在模型评估阶段,需要综合考虑多种评估指标,以综合评估模型性能。