金融风控评估模型指标:KS、PSI

在这里插入图片描述
风险模型最核心的指标就是排序指标KS。KS值可以很好地度量一个集合内好坏用户的排序分布。一个常见的情形是,离线评测模型的KS值很高,但是等到上线应用后,模型的KS很快就大幅“衰减”了,而且很多时候都是离线提升的越多,线上衰减越大。那么是模型出问题了吗?这里其实有个观察的误区,所谓的“衰减”是指在不同时期的不同用户集合上的KS值比较,而实际上不同集合间的KS绝对值是没有比较意义的。
举一个简单的例子,某一场考试预测排名,试想对全校去年成绩前50的学生进行排序预测容易还是对任意一个班的学生预测排序容易,显然对后者的预测必然会更准确一些。上图中右边部分描述模型上线后KS“衰减”的原因。新模型V2的排序能力高于V1,它可以将V1授信通过的用户中更多的坏用户排到靠后。当V2上线后,V2高准确度识别的类似坏用户无法通过了(也就是只剩下全校排名靠前的学生了),因此对V2决策通过的用户算KS自然就下降了。上图中,只有KS2与KS1、KS3与KS4是有比较意义的。
模型稳定性是另一个关键因素。分布稳定性最基础的指标是PSI,只有预测分数分布是稳定的,这样才有信心可以基于历史数据去预测未来的风险;性能稳定性则是指,要保证预测分数区间对应的真实风险是相对稳定的,比如600-650分之间对应的逾期风险是1%,那么我们希望在所有月份上真实风险都能稳定在1%的水平附近。
而在策略对模型的实际应用中, 核心则是基于Swap in & out的分析。通过分段交叉的矩阵,考量在人数相同的情况下,新模型的整体逾期率是否显著低于旧模型;而在相同逾期率的水平下,新模型的通过率提升多少,可以提升整体规模多少。

### 金融中的KS值计算 KS值(Kolmogorov-Smirnov Statistic)是一种用于衡量模型区分能力的重要指标,在金融领域常被用来评估信用评分模型的效果。它通过比较正负样本分布之间的最大差异来反映模型的区分度。 #### KS值的定义与公式 KS值的核心在于计算累积分布函数(CDF)的最大差值。假设我们有一个预测概率列表 `prob` 和对应的标签列表 `label`,其中 `label=1` 表示正类(如违约),`label=0` 表示负类(如未违约)。那么: - 正类的概率累积分布记为 \( F_+(p) \),表示分数小于等于某个阈值的比例; - 负类的概率累积分布记为 \( F_-(p) \),同样表示分数小于等于某个阈值的比例; KS值可以定义为这两个分布之间绝对差值的最大值: \[ KS = \max |F_+(p) - F_-(p)| \] --- #### Python实现KS值计算 以下是基于Python实现KS值的具体代码示例,利用了Toad库的功能[^1]: ```python import numpy as np from sklearn.model_selection import train_test_split from toad.metrics import KS_bucket # 假设 prob_off 是模型输出的概率,offy 是真实标签 np.random.seed(42) prob_off = np.random.rand(1000) # 示例:生成随机概率 offy = np.where(prob_off > 0.5, 1, 0) # 示例:生成二分类标签 # 使用 Toad 的 KS_bucket 函数计算分箱后的 KSks_result = KS_bucket(prob_off, offy, bucket=15, method='quantile') print("KS Value:", ks_result['KS'].max()) # 输出最大的 KS 值 ``` 上述代码中,`bucket=15` 参数指定了将数据分为15个区间进行分析,而 `method='quantile'` 则采用百分位数法进行分组。 --- #### 数据划分与训练测试集准备 为了确保KS值能够有效评估模型性能,通常需要先对数据进行合理的划分。以下是一个简单的例子,展示如何使用随机抽样的方式分割数据[^3]: ```python from sklearn.model_selection import train_test_split # dt_s 是原始数据框,“creditability”为目标变量 train, test = train_test_split(dt_s, test_size=0.3, random_state=42) # 进一步分离特征和目标列 X_train, y_train = train.drop(columns=["creditability"]), train["creditability"] X_test, y_test = test.drop(columns=["creditability"]), test["creditability"] # 可以在此基础上构建并评估模型 ``` --- #### 模型评估方法概述 在金融建模过程中,除了KS值之外,还有其他常用的评估指标,例如AUC、Gini系数等。这些指标共同构成了全面评价模型效果的基础框架[^2]。具体来说: - **AUC (Area Under Curve)**: ROC曲线下的面积,反映了模型的整体表现。 - **Gini Coefficient**: AUC的一种变形形式,强调模型对于不同群体的区分能力。 - **PSI (Population Stability Index)**: 测量实际数据分布相对于预期的变化程度。 以上各项均需结合业务场景综合考量,从而得出最优解。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rubyw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值