2. PSI 指标详解:群体稳定性指标
群体稳定性指标(Population Stability Index,PSI)是衡量两个样本分布之间差异程度的统计量,在风控、营销和机器学习模型监控领域被广泛用于检测数据分布是否发生显著变化。本章将从定义、数学推导、物理意义和取值范围四个维度对 PSI 进行深度拆解。
2.1 PSI 的定义与核心思想
PSI 本质上衡量的是 实际分布(Actual Distribution) 相对于 期望分布(Expected Distribution) 的偏移程度。在模型监控场景中,期望分布通常指模型训练集或验证集上的预测分数分布,实际分布指当前生产环境中的预测分数分布。
PSI 的计算基于分箱(Binning)思想:将连续变量或概率分数划分为若干区间(通常为 10 或 20 个等宽或等频分箱),然后比较每个箱中样本占比的变化。
2.2 数学公式推导
PSI 的完整计算公式由两部分组成:分箱比例计算和逐箱差异聚合。
2.2.1 分箱比例
假设我们将预测分数或特征值划分为 n 个互斥的箱(bins),对于第 i 个箱:
- 期望占比 \( p_i = \frac{\text{期望分布中落入箱 } i \text{ 的样本数}}{\text{期望分布总样本数}} \)
- 实际占比 \( q_i = \frac{\text{实际分布中落入箱 } i \text{ 的样本数}}{\text{实际分布总样本数}} \)
为保证公式的数学稳定性,通常要求 \( p_i > 0 \) 且 \( q_i > 0 \)。若某个箱的占比为 0,可做极小值平滑处理(如加 0.0001)。
2.2.2 逐箱 PSI 贡献
第 i 个箱对 PSI 的贡献为:
箱贡献_i = (q_i - p_i) * ln(q_i / p_i)
其中 ln 为自然对数。这个公式具有以下数学性质:
- 当 \( q_i = p_i \) 时,贡献为 0(因为 ln(1) = 0)
- 当 \( q_i > p_i \) 时,贡献为正
- 当 \( q_i < p_i \) 时,贡献也为正(因为 (q_i - p_i) 为负,ln(q_i/p_i) 也为负,乘积为正)
- 分布差异越大,贡献值越大
2.2.3 总体 PSI
将所有箱的贡献求和,即得到总体 PSI:
PSI = Σ_{i=1}^{n} (q_i - p_i) * ln(q_i / p_i)
这个公式与 KL 散度(Kullback-Leibler Divergence)有密切关系。实际上,PSI 可以看作是两个分布之间的 对称化 KL 散度:
PSI = KL(实际 || 期望) + KL(期望 || 实际)
其中 KL 散度定义为 \( KL(P||Q) = Σ p_i * ln(p_i / q_i) \)。对称化使得 PSI 对两个分布的角色交换不敏感,更适合作为监控指标。
2.3 PSI 的物理意义
PSI 的物理意义可以从三个层面理解:
| 层面 | 物理意义 | 监控场景解读 |
|---|---|---|
| 分布偏移 | 衡量两个概率分布之间的整体差异程度 | 当前模型输出分布是否偏离训练时的分布 |
| 信息损失 | 用期望分布编码实际分布所需的额外信息量 | 模型在新数据上的预测不确定性是否增大 |
| 群体构成变化 | 反映各分数段客户群体占比的重新分配 | 高分段客户是否变多或变少,客群结构是否改变 |
在风控场景中,PSI 升高通常意味着:
- 宏观经济环境变化导致客户还款能力整体偏移
- 获客渠道调整带来客群质量变化
- 数据采集或特征工程环节出现异常
- 模型本身随时间衰减,区分能力下降
2.4 PSI 的取值范围与判定标准
PSI 是一个非负实数,理论上取值范围为 [0, +∞)。在实际工程应用中,通常采用以下经验阈值进行判定:
| PSI 值范围 | 判定等级 | 建议操作 |
|---|---|---|
| PSI < 0.1 | 无显著漂移 | 无需干预,模型可继续使用 |
| 0.1 ≤ PSI < 0.25 | 轻度漂移 | 需关注,排查可能的原因,准备模型更新 |
| PSI ≥ 0.25 | 严重漂移 | 立即告警,模型需重新训练或回滚 |
2.4.1 PSI 的极端情况
- PSI = 0: 两个分布完全一致,每个箱的占比完全相同。这是理想状态,实际中几乎不可能达到。
- PSI 趋近于无穷大: 当某个箱在期望分布中占比极小(趋近于 0),而在实际分布中占比显著大于 0 时,ln(q_i/p_i) 会非常大,导致 PSI 发散。这通常意味着出现了期望分布中从未出现过的新模式。
- PSI 为负值? 不可能。因为每个箱的贡献 (q_i - p_i) * ln(q_i/p_i) 始终非负(当 q_i ≠ p_i 时为正,相等时为 0),所以 PSI 永远 ≥ 0。
2.5 PSI 计算示例
以下是一个简化的 PSI 计算示例,帮助理解公式的实际应用:
| 分箱 | 期望占比 p_i | 实际占比 q_i | q_i - p_i | q_i / p_i | ln(q_i/p_i) | 箱贡献 |
|---|---|---|---|---|---|---|
| 箱 1 (0-0.1) | 0.10 | 0.15 | 0.05 | 1.50 | 0.4055 | 0.0203 |
| 箱 2 (0.1-0.2) | 0.10 | 0.12 | 0.02 | 1.20 | 0.1823 | 0.0036 |
| 箱 3 (0.2-0.3) | 0.10 | 0.10 | 0.00 | 1.00 | 0.0000 | 0.0000 |
| 箱 4 (0.3-0.4) | 0.10 | 0.08 | -0.02 | 0.80 | -0.2231 | 0.0045 |
| 箱 5 (0.4-0.5) | 0.10 | 0.07 | -0.03 | 0.70 | -0.3567 | 0.0107 |
| 箱 6 (0.5-0.6) | 0.10 | 0.10 | 0.00 | 1.00 | 0.0000 | 0.0000 |
| 箱 7 (0.6-0.7) | 0.10 | 0.12 | 0.02 | 1.20 | 0.1823 | 0.0036 |
| 箱 8 (0.7-0.8) | 0.10 | 0.11 | 0.01 | 1.10 | 0.0953 | 0.0010 |
| 箱 9 (0.8-0.9) | 0.10 | 0.09 | -0.01 | 0.90 | -0.1054 | 0.0011 |
| 箱 10 (0.9-1.0) | 0.10 | 0.06 | -0.04 | 0.60 | -0.5108 | 0.0204 |
| PSI = 0.0652 | ||||||
该示例中 PSI = 0.0652 < 0.1,属于无显著漂移范围。注意箱 1 和箱 10 的贡献最大,说明分布的两端发生了较明显的偏移。
2.6 PSI 与其他分布差异指标的关系
| 指标 | 公式 | 与 PSI 的关系 | 适用场景 |
|---|---|---|---|
| KL 散度 | KL(P||Q) = Σ p_i ln(p_i/q_i) | PSI = KL(实际||期望) + KL(期望||实际) | 非对称度量,PSI 是对称化版本 |
| JS 散度 | JSD = 0.5 * KL(P||M) + 0.5 * KL(Q||M) | JS 散度取值范围 [0, ln2],PSI 无上界 | 需要归一化指标时使用 JS 散度 |
| 卡方检验 | χ² = Σ (O_i - E_i)² / E_i | 卡方检验关注统计显著性,PSI 关注效应大小 | 大样本下卡方容易显著,PSI 更实用 |
| Wasserstein 距离 | 基于最优传输理论 | 对分布形状变化更敏感,计算复杂度更高 | 需要捕捉分布形状变化时使用 |