3. PSI(群体稳定性指标)原理

群体稳定性指标(Population Stability Index, PSI)是衡量模型评分或特征分布在时间维度上发生偏移的核心量化工具。在模型监控中,PSI 用于检测模型输入数据分布与建模时训练集分布之间是否存在显著差异,从而判断模型是否需要重新训练或校准。

3.1 PSI 的数学定义

PSI 基于信息论中的 Kullback-Leibler 散度(相对熵)的对称化形式,衡量两个概率分布之间的差异。其数学定义如下:

PSI = Σ (P_i - Q_i) × ln(P_i / Q_i)

其中:

  • P_i:第 i 个分箱中 实际分布(当前监控期)的样本占比
  • Q_i:第 i 个分箱中 期望分布(建模训练集或基准期)的样本占比
  • n:分箱总数
关键理解: PSI 本质上是两个分布之间“差异的加权和”。当 P_i = Q_i 时,ln(P_i/Q_i) = 0,该项贡献为 0;差异越大,PSI 值越大。

3.2 计算公式推导

PSI 的推导可以从 KL 散度出发。KL 散度衡量分布 Q 近似分布 P 时的信息损失:

KL(P || Q) = Σ P_i × ln(P_i / Q_i)

由于 KL 散度是非对称的(KL(P||Q) ≠ KL(Q||P)),PSI 采用其对称化形式:

PSI = KL(P || Q) + KL(Q || P)
    = Σ P_i × ln(P_i / Q_i) + Σ Q_i × ln(Q_i / P_i)
    = Σ (P_i - Q_i) × ln(P_i / Q_i)

这种对称化使得 PSI 对分布的双向偏移都敏感,更适合作为监控指标。

指标 公式 对称性 取值范围
KL 散度 Σ P_i × ln(P_i / Q_i) 非对称 [0, +∞)
PSI Σ (P_i - Q_i) × ln(P_i / Q_i) 对称 [0, +∞)
JS 散度 ½KL(P||M) + ½KL(Q||M) 对称 [0, ln2]
实践提示: PSI 与 JS 散度都是对称的,但 PSI 没有上界,更适合工业界对“严重偏移”的阈值设定(通常 PSI < 0.1 为稳定,0.1~0.25 需关注,> 0.25 需干预)。

3.3 分箱策略

PSI 的计算依赖于对连续变量或概率分数进行分箱。不同的分箱策略会直接影响 PSI 值的敏感性和稳定性。以下是三种主流分箱策略的对比:

3.3.1 等距分箱(Equal Width Binning)

将变量取值范围等分为 k 个区间,每个区间宽度相同。

  • 优点: 实现简单,区间边界固定,便于跨时间对比
  • 缺点: 对数据分布不均匀敏感,可能出现空箱或极稀疏箱
  • 适用场景: 评分卡分数(如 300~850 分),分布相对均匀

3.3.2 等频分箱(Equal Frequency Binning)

将样本按变量值排序后,使每个区间包含大致相同数量的样本。

  • 优点: 避免空箱,每个区间统计意义更强
  • 缺点: 区间边界随数据分布变化,跨时间对比时边界可能漂移
  • 适用场景: 特征分布严重偏态时(如收入、交易金额)

3.3.3 分位数分箱(Quantile Binning)

基于训练集的分位数(如十分位数、二十分位数)确定固定边界,监控期沿用这些边界。

  • 优点: 边界基于训练集分布,具有统计意义且跨时间固定
  • 缺点: 监控期分布偏移严重时,某些箱可能样本极少
  • 适用场景: 模型监控中最推荐的方式,兼顾稳定性和可解释性
策略 边界确定方式 跨时间边界 空箱风险 推荐度
等距分箱 固定宽度 固定 高 ★★☆☆☆
等频分箱 样本量均分 变化 低 ★★★☆☆
分位数分箱 训练集分位数 固定 中 ★★★★★
避坑指南: 不要使用等频分箱的“动态边界”计算 PSI。如果监控期和基准期的分箱边界不同,PSI 将失去可比性。始终以训练集或基准期的分箱边界为准。
PSI 计算流程与分箱策略对比 输入:基准分布 Q + 实际分布 P 选择分箱策略(边界固定于基准期) 等距分箱 固定宽度,空箱风险高 等频分箱 边界动态,不推荐 分位数分箱 边界固定,推荐 计算 PSI = Σ(P_i - Q_i) × ln(P_i / Q_i) 输出:PSI 偏移量

3.4 分箱数量与 PSI 敏感性

分箱数量(k)是 PSI 计算中的超参数。k 值过小会掩盖局部偏移,k 值过大会放大噪声。以下是经验规则:

  • 评分卡模型: 通常使用 10 箱(十分位数),与评分卡等级对应
  • 连续特征: 建议 10~20 箱,样本量 > 10 万时可适当增加
  • 分类特征: 每个类别作为一箱,类别过多时合并低频类别
最佳实践: 在模型监控中,建议使用 分位数分箱 + 10 箱 作为默认配置。边界基于训练集确定,监控期沿用相同边界。如果监控期某箱样本占比为 0,可加极小值(如 0.0001)避免 ln(0) 计算错误。