【特征】PSI的计算

PSI检验变量的稳定性,当一个变量的psi值大于0.0001时,变量不稳定。一个变量,将它的取值按照分位数来分组一下,每一组中测试模型的客户数占比减去训练模型中的客户数占比再乘以这两者相除的对数,就是这一组的稳定性系数psi,然后变量的psi系数就是把这个变量的所有组的psi相加总起来。

计算某个变量的PSI,上面这段话中测试模型和训练模型替换成两个月份即可。

例如,下表是某个变量,以2018年10月为基准,每个月(以2018年9月为例)都和2018年10月去做一个下面表格的运算。

 组号总个数2018年10月各组人数2018年10月各组人数占比2018年9月各组人数2018年9月各组人数占比占比差值psi
16032170.72333860.55140.17190.0466
2103340.1133690.09860.01480.0021
363110.0367520.0743-0.03760.0266
44860.0200420.0600-0.04000.0439
5183320.10671510.2157-0.10900.0768
总计10003001.00007001.0000-0.1960

第一个0.0466的计算方法:

= (0.7233-0.5514)*LN(0.7233/0.5514)

下面几个数值的计算方法是相同的,最后的0.1960是把上面的几个加起来。

可以把每个月份依次和2018年10月去对比求一个PSI值出来。

如果PSI卡的值是0.1,只要有一个月对比得到的PSI值大于0.1,就要把这个变量踢掉。比如,从上表的结果来看,这个变量就应该被踢掉了。

### PSI计算公式的详细介绍 PSI(Population Stability Index,群体稳定性指数)是一种用于衡量模型或特征分布变化的指标。其核心思想是比较两个分布之间的差异,通常应用于模型评估和特征监控中。 #### PSI 的定义 PSI 是通过比较实际分布与预期分布之间的差异来量化数据漂移的程度。对于给定的一组分箱区间 $i$,PSI 可以表示为: $$ \text{PSI} = \sum_{i=1}^{N} (\%A_i - \%B_i) \cdot \ln\left(\frac{\%A_i}{\%B_i}\right) $$ 其中: - $\%A_i$: 实际分布中第 $i$ 个区间的比例。 - $\%B_i$: 预期分布中第 $i$ 个区间的比例。 - $N$: 总共划分的分箱数量。 需要注意的是,当某个区间的比例接近于零时,为了避免对数运算中的未定义情况,可以引入一个小常量 $\epsilon$ 来平滑计算[^4]。 #### Python 中的手动实现 以下是基于上述公式的 PSI 手动计算代码示例: ```python import numpy as np def calculate_psi(expected, actual, epsilon=0.0001): """ 计算PSI (Population Stability Index) 参数: expected: list or array-like, 预期分布的比例数组 actual: list or array-like, 实际分布的比例数组 epsilon: float, 平滑因子,默认值为0.0001 返回: psi_value: float, PSI 值 """ # 将输入转换为numpy数组 expected_array = np.array(expected) + epsilon actual_array = np.array(actual) + epsilon # 计算百分比 expected_percents = expected_array / sum(expected_array) actual_percents = actual_array / sum(actual_array) # 计算PSI psi_values = (actual_percents - expected_percents) * np.log(actual_percents / expected_percents) psi_total = sum(psi_values) return psi_total ``` 此函数接受两组比例作为输入,并返回它们之间 PSI 的值。为了防止除零错误或对数未定义的情况,加入了小常量 `epsilon` 进行平滑处理。 #### 解读 PSI 结果 根据经验阈值[^4]: - 如果 PSI < 0.1,则表明分布非常稳定; - 如果 0.1 ≤ PSI < 0.2,则说明分布有一定变化,需进一步观察; - 如果 PSI ≥ 0.25,则意味着分布发生了显著变化,建议重新建模。 #### 应用场景 PSI 不仅适用于模型输出的概率值(即 prediction_prob),还可以扩展到任意连续型或离散型变量的分布监控中。例如,在风控领域中,它被广泛用来检测特征分布的变化以及模型预测能力的退化程度[^5]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值