2. PSI 数学原理与公式推导
群体稳定性指标(Population Stability Index, PSI)是衡量两个分布之间差异的标准化度量。在精算与风控模型中,PSI 用于监控模型评分或关键特征在时间维度上的分布偏移程度。其核心公式如下:
PSI 定义公式:
PSI = Σ (Actual_i - Expected_i) * ln(Actual_i / Expected_i)
其中,i 表示第 i 个分组(通常为等频分箱后的区间),Actual_i 为当前样本在该分组的实际占比,Expected_i 为建模样本(或基准期)在该分组的预期占比。
2.1 符号含义与计算逻辑
| 符号 | 名称 | 含义 | 计算逻辑 |
|---|---|---|---|
i |
分组索引 | 将模型评分或特征值划分为 n 个互斥区间 |
通常按等频分箱(每箱样本数大致相等),分箱数一般取 10~20 |
Actual_i |
实际占比 | 当前监控期样本落入第 i 组的比例 |
Actual_i = count_i(当前期) / N(当前期) |
Expected_i |
预期占比 | 基准期(建模样本或稳定期)样本落入第 i 组的比例 |
Expected_i = count_i(基准期) / N(基准期) |
Actual_i - Expected_i |
占比差异 | 衡量该分组内实际分布与基准分布的绝对偏移量 | 正值表示该组当前占比高于基准,负值表示低于基准 |
ln(Actual_i / Expected_i) |
对数比率 | 衡量该分组内实际占比相对于预期占比的倍数变化(取自然对数) | 当 Actual_i = Expected_i 时,该项为 0;偏离越大,绝对值越大 |
关键理解: PSI 本质上是每个分组的“绝对差异”与“对数比率”的乘积之和。绝对差异赋予线性权重,对数比率赋予非线性惩罚——当实际占比远小于或远大于预期占比时,对数项会放大该分组的贡献,从而更敏感地捕捉极端偏移。
2.2 公式推导:从相对熵到 PSI
PSI 的数学根源来自信息论中的 相对熵(Kullback-Leibler Divergence, KL 散度)。KL 散度衡量两个概率分布 P 和 Q 之间的不对称差异:
KL(P || Q) = Σ P_i * ln(P_i / Q_i)
PSI 在此基础上做了对称化处理,同时考虑 P→Q 和 Q→P 两个方向的 KL 散度之和:
PSI = KL(Actual || Expected) + KL(Expected || Actual)
展开后得到:
PSI = Σ Actual_i * ln(Actual_i / Expected_i) + Σ Expected_i * ln(Expected_i / Actual_i)
利用 ln(Expected_i / Actual_i) = -ln(Actual_i / Expected_i),合并两项:
PSI = Σ (Actual_i - Expected_i) * ln(Actual_i / Expected_i)
这正是 PSI 的最终形式。它同时惩罚了“实际分布偏离预期”和“预期分布偏离实际”两个方向,因此是一个对称且非负的度量。
注意: 当某个分组的
Expected_i = 0 或 Actual_i = 0 时,对数项无定义。实际处理中,通常对零值做平滑处理(如加极小值 1e-6),或将该分组与相邻组合并。
2.3 PSI 计算流程与分箱逻辑
完整的 PSI 计算遵循以下步骤:
- 确定基准分布: 使用建模样本或历史稳定期的模型评分,作为预期分布。
- 等频分箱: 将基准分布的评分从小到大排序,按等频原则划分为
n组(通常 n=10)。记录每个分组的边界值(cutoff points)。 - 计算预期占比: 统计基准期每个分组的样本数,除以总样本数,得到
Expected_i。 - 映射当前期: 使用相同的分组边界,将当前监控期的评分落入对应分组,统计每个分组的样本数,除以当前期总样本数,得到
Actual_i。 - 计算分组贡献: 对每个分组计算
(Actual_i - Expected_i) * ln(Actual_i / Expected_i)。 - 求和: 将所有分组的贡献值相加,得到最终的 PSI 值。
分箱边界一致性: 这是 PSI 计算中最容易出错的环节。必须使用基准期确定的分箱边界来划分当前期,不能重新对当前期做等频分箱,否则会破坏分布比较的基准。
2.4 PSI 计算示例(手工演算)
假设我们将模型评分分为 3 组(为简化演示),基准期与当前期的分布如下:
| 分组 | 基准期样本数 | 当前期样本数 | Expected_i | Actual_i | Actual_i - Expected_i | ln(Actual_i / Expected_i) | 分组贡献 |
|---|---|---|---|---|---|---|---|
| 低分 (0-300) | 300 | 200 | 0.30 | 0.20 | -0.10 | ln(0.20/0.30) = -0.4055 | (-0.10) * (-0.4055) = 0.0406 |
| 中分 (300-600) | 400 | 500 | 0.40 | 0.50 | 0.10 | ln(0.50/0.40) = 0.2231 | 0.10 * 0.2231 = 0.0223 |
| 高分 (600-1000) | 300 | 300 | 0.30 | 0.30 | 0.00 | ln(0.30/0.30) = 0.0000 | 0.00 * 0.0000 = 0.0000 |
| 合计 | PSI = 0.0629 | ||||||
该示例中 PSI = 0.0629,属于较低水平(通常 PSI < 0.10 视为稳定)。低分组的占比下降和中分组的占比上升被同时捕捉,体现了 PSI 对双向偏移的敏感性。
2.5 PSI 的数学性质与阈值参考
- 非负性: PSI ≥ 0,当且仅当
Actual_i = Expected_i对所有分组成立时,PSI = 0。 - 对称性: 交换实际与预期分布,PSI 值不变(因为公式本身已对称化)。
- 无量纲: PSI 是一个纯数值,不受样本量级影响,但受分箱数影响(分箱越多,PSI 通常越大)。
| PSI 范围 | 稳定性判断 | 建议动作 |
|---|---|---|
| < 0.10 | 稳定 | 无需干预,模型表现正常 |
| 0.10 ~ 0.25 | 轻度偏移 | 需关注,排查特征或客群变化 |
| > 0.25 | 严重偏移 | 必须告警,启动模型重训或策略调整 |
行业经验: 上述阈值是通用参考值,实际应用中应根据模型类型(如申请评分卡、行为评分卡)和业务容忍度进行调整。对于高敏感场景(如反欺诈模型),可将告警阈值下调至 0.15。
2.6 PSI 计算流程架构图
2.7 PSI 与 KL 散度的关系对比
| 对比维度 | KL 散度 | PSI |
|---|---|---|
| 对称性 | 非对称:KL(P||Q) ≠ KL(Q||P) | 对称:PSI(P,Q) = PSI(Q,P) |
| 取值范围 | [0, +∞) | [0, +∞) |
| 对零值处理 | 若 Q_i=0 且 P_i>0,则无穷大 | 同样需平滑处理 |
| 实际应用 | 信息论、模型蒸馏 | 风控模型稳定性监控 |
| 分箱依赖性 | 通常用于连续分布 | 强依赖分箱方式 |
总结: PSI 是 KL 散度的对称化变体,专为工业级分布偏移监控而设计。其公式简洁、计算高效、解释性强,是精算与风控领域最广泛使用的稳定性指标之一。理解其数学原理,是后续进行告警阈值调优和模型监控策略设计的基础。