2. PSI 数学原理:公式推导、期望比例与实际比例对比、分箱计算逻辑
群体稳定性指标(Population Stability Index, PSI)是衡量两个分布之间差异的标准化度量。在模型监控中,它用于量化模型评分在 期望(开发/训练)样本 与 实际(生产/当前)样本 之间的偏移程度。本节从数学公式出发,逐步拆解其计算逻辑。
2.1 PSI 公式推导
PSI 的核心思想来源于信息论中的 相对熵(KL 散度),但 PSI 是对称化版本。其标准计算公式如下:
PSI = Σ (实际比例_i - 期望比例_i) * ln(实际比例_i / 期望比例_i)
其中:
- 期望比例_i:第 i 个分箱中,开发样本的占比(基准分布)。
- 实际比例_i:第 i 个分箱中,生产样本的占比(当前分布)。
- ln:自然对数。
- Σ:对所有分箱求和。
该公式本质上是 (实际比例 - 期望比例) 与 (对数变化率) 的乘积之和。当两个分布完全一致时,每个分箱的差值为 0,PSI = 0。分布差异越大,PSI 值越大。
关键理解: PSI 对分布尾部变化非常敏感。即使整体分布相似,若某个分箱中实际比例从 5% 变为 0.5%(变化 10 倍),该分箱贡献的 PSI 值会显著增大,从而触发告警。
2.2 期望比例与实际比例的对比
为了直观理解,下表展示了一个 5 分箱的示例,对比了期望比例与实际比例,并计算了每个分箱的 PSI 贡献值。
| 分箱编号 | 分数区间 | 期望比例 (E_i) | 实际比例 (A_i) | 差值 (A_i - E_i) | 对数比 ln(A_i/E_i) | 分箱 PSI 贡献 |
|---|---|---|---|---|---|---|
| 1 | [0, 20) | 0.10 | 0.15 | +0.05 | 0.405 | 0.0203 |
| 2 | [20, 40) | 0.20 | 0.25 | +0.05 | 0.223 | 0.0112 |
| 3 | [40, 60) | 0.40 | 0.30 | -0.10 | -0.287 | 0.0287 |
| 4 | [60, 80) | 0.20 | 0.20 | 0.00 | 0.000 | 0.0000 |
| 5 | [80, 100] | 0.10 | 0.10 | 0.00 | 0.000 | 0.0000 |
| 总计 PSI | 0.0602 | |||||
从上表可以看出:
- 分箱 3 的绝对差值最大(-0.10),贡献了最高的 PSI 值(0.0287)。
- 分箱 1 虽然差值较小(+0.05),但由于对数比更大,贡献值也较高。
- 分箱 4 和 5 比例完全一致,贡献为 0。
2.3 PSI 分箱计算逻辑
PSI 的计算高度依赖分箱策略。不合理的分箱会导致 PSI 值失真。标准的分箱逻辑包含以下步骤:
- 确定分箱边界: 基于开发样本(期望分布)确定分箱的切分点。通常使用等频分箱(每个箱包含相同数量的样本)或等距分箱。
- 计算期望比例: 统计每个分箱中开发样本的数量,除以开发样本总数,得到期望比例 E_i。
- 映射实际样本: 使用相同的分箱边界,将生产样本(实际分布)划分到对应的分箱中。
- 计算实际比例: 统计每个分箱中生产样本的数量,除以生产样本总数,得到实际比例 A_i。
- 处理零值: 如果某个分箱中期望比例或实际比例为 0,会导致对数计算无定义。通常采用 平滑处理,例如将 0 替换为一个极小值(如 0.0001),或将该分箱与相邻分箱合并。
- 求和: 按公式计算每个分箱的贡献并求和,得到最终的 PSI 值。
分箱避坑指南:
- 分箱数量: 通常建议 10~20 个分箱。分箱过少会掩盖局部漂移;分箱过多会导致每个箱样本稀疏,噪声增大。
- 边界一致性: 必须使用开发样本的边界来划分生产样本,不能重新分箱。
- 零值处理: 务必在代码中加入平滑逻辑,否则 ln(0) 会导致程序崩溃。
下图展示了 PSI 分箱计算的核心流程,从原始分数到最终 PSI 值的完整链路。
2.4 PSI 阈值与告警逻辑
在实际工程中,PSI 值通常按以下经验阈值进行告警分级:
| PSI 范围 | 稳定性等级 | 建议操作 |
|---|---|---|
| PSI < 0.1 | 稳定 | 无需操作,分布无显著漂移。 |
| 0.1 ≤ PSI < 0.25 | 轻度漂移 | 需关注,建议检查近期数据质量或业务策略变化。 |
| PSI ≥ 0.25 | 严重漂移 | 立即告警,需重新训练模型或排查数据管道异常。 |
注意: 上述阈值为行业通用经验值,具体项目应根据业务容忍度进行调整。例如,在风控场景中,PSI > 0.2 即可能触发模型下线审查;而在营销场景中,PSI < 0.3 可能仍被视为可接受。