3. PSI指标基础:群体稳定性指标(PSI)的数学定义、计算步骤与业务含义
3.1 为什么需要群体稳定性指标
在量化风控与组合归因场景中,模型或策略上线后,其评分分布会随时间推移发生变化。这种变化可能源于客群迁徙、宏观经济波动或数据源质量下降。如果分布偏移过大,模型预测能力将显著衰减,导致风险排序失效。群体稳定性指标(Population Stability Index, PSI)正是衡量两个时间段评分分布一致性的标准化度量工具。
核心业务问题: 模型在开发样本上表现优异,但在上线后第3个月,AUC下降0.05,坏账率上升2%。PSI能帮助量化“评分分布是否发生了结构性漂移”,从而触发模型重训或策略调整。
3.2 PSI的数学定义
PSI基于信息论中的相对熵(KL散度)思想,但采用对称化处理。其数学表达式为:
PSI = Σ (P_i - Q_i) × ln(P_i / Q_i)
其中:
- P_i:实际分布(当前评分样本)在第 i 个分箱中的占比
- Q_i:预期分布(基准评分样本)在第 i 个分箱中的占比
- Σ:对所有分箱求和
当 P_i 与 Q_i 完全一致时,PSI = 0;差异越大,PSI 值越高。实际应用中通常将评分划分为 10 等频分箱,以保证每个箱内样本量均衡。
3.3 计算步骤详解
PSI 的计算遵循以下 5 个标准步骤:
- 确定基准分布:选取模型开发样本或上线首月评分作为预期分布 Q。
- 确定实际分布:选取当前监控周期(如本月)评分作为实际分布 P。
- 分箱处理:将评分范围划分为 K 个等频区间(通常 K=10),确保每个箱内基准样本占比约为 10%。
- 计算各箱占比:分别统计 P_i 和 Q_i,若某箱 P_i=0,则用极小值(如 0.0001)替代,避免对数计算溢出。
- 代入公式求和:对每个分箱计算 (P_i - Q_i) × ln(P_i / Q_i),累加得到 PSI。
| 步骤 | 操作 | 注意事项 |
|---|---|---|
| 1 | 确定基准分布 Q | 通常使用模型训练集或上线首月数据 |
| 2 | 确定实际分布 P | 当前监控周期(周/月/季) |
| 3 | 等频分箱(K=10) | 按基准分布分位数切分,固定边界 |
| 4 | 计算 P_i 与 Q_i | P_i=0 时替换为 0.0001 |
| 5 | 求和得到 PSI | 保留 4 位小数 |
3.4 PSI 计算流程示意图
3.5 业务含义与判定阈值
PSI 的数值大小直接对应分布漂移的严重程度。行业通用判定标准如下:
| PSI 范围 | 漂移程度 | 业务动作 |
|---|---|---|
| PSI < 0.10 | 无显著漂移 | 持续监控,无需干预 |
| 0.10 ≤ PSI < 0.25 | 轻度漂移 | 排查特征变化,准备模型校准 |
| PSI ≥ 0.25 | 严重漂移 | 立即触发模型重训或策略回退 |
经验提示: 在组合风险归因场景中,建议同时监控 整体 PSI 和 分特征 PSI。整体 PSI 反映评分分布全局漂移,分特征 PSI 帮助定位具体哪些变量驱动了漂移。例如,若整体 PSI=0.18,但“收入”特征的 PSI=0.45,则说明收入分布发生了剧烈变化,需优先排查。
3.6 PSI 与 KL 散度的关系
PSI 与 KL 散度(Kullback-Leibler Divergence)密切相关,但存在关键区别:
| 指标 | 公式 | 对称性 | 取值范围 |
|---|---|---|---|
| KL 散度 | Σ P_i × ln(P_i / Q_i) | 非对称 | [0, +∞) |
| PSI | Σ (P_i - Q_i) × ln(P_i / Q_i) | 对称 | [0, +∞) |
PSI 通过引入 (P_i - Q_i) 项实现了对称性,即 PSI(P, Q) = PSI(Q, P)。这使得 PSI 在业务监控中更直观——无论将哪个分布视为基准,结果一致。而 KL 散度非对称,不适合作为稳定性监控的标准化指标。
3.7 计算示例(手工验证)
假设某评分模型将样本分为 3 个等频分箱(为简化演示,实际应为 10 箱),基准分布 Q 与实际分布 P 如下:
| 分箱 | Q_i (%) | P_i (%) | P_i - Q_i | ln(P_i / Q_i) | 分量值 |
|---|---|---|---|---|---|
| 箱1 | 33.33 | 40.00 | +6.67 | 0.1823 | 1.215 |
| 箱2 | 33.33 | 30.00 | -3.33 | -0.1054 | 0.351 |
| 箱3 | 33.33 | 30.00 | -3.33 | -0.1054 | 0.351 |
PSI = 1.215 + 0.351 + 0.351 = 1.917
该 PSI 值远大于 0.25,表明分布发生了严重漂移,需要立即排查原因。
3.8 PSI 在 Spark 环境下的计算要点
在 Spark 大数据平台上计算 PSI 时,需注意以下工程细节:
- 分箱边界固定:基准分箱边界需持久化存储(如 Hive 表或 Parquet 文件),每次计算实际分布时复用同一组边界。
- 空箱处理:若某箱在实际分布中无样本,使用
0.0001 / N替代,其中 N 为总样本量。 - 性能优化:使用
approxQuantile计算分位数边界,避免全量排序;使用bucketizer进行分箱映射。 - 增量计算:对于每日/每周监控,可设计增量聚合逻辑,避免每次重算全量历史数据。
常见陷阱: 分箱数量过少(如 K=5)会降低 PSI 对局部漂移的敏感度;分箱数量过多(如 K=20)则可能导致空箱过多,引入噪声。推荐始终使用 K=10 等频分箱,并保持基准边界不变。
3.9 PSI 与特征漂移的联动分析
在组合风险归因中,PSI 不仅用于监控模型评分,还可下钻到每个特征维度。下图展示了特征级 PSI 与模型级 PSI 的关系:
通过特征级 PSI 的拆解,风控团队可以快速定位导致模型漂移的具体变量,从而制定针对性的特征工程或策略调整方案。