3. PSI 概念与数学原理:群体稳定性指标

群体稳定性指标(Population Stability Index, PSI)是信用评分模型监控中最核心的量化指标,用于衡量模型评分在时间维度上的分布偏移程度。当模型上线后,如果评分分布发生显著变化,往往意味着模型预测能力下降或客群结构改变,需要触发告警并启动模型迭代。

3.1 PSI 的定义与业务含义

PSI 通过比较两个样本(通常为建模样本与当前样本)在评分区间上的分布差异,量化群体稳定程度。其核心思想是:如果模型对同一客群的评分分布保持稳定,则各分数段上的样本占比应基本一致;反之,占比差异越大,PSI 值越高,模型越不稳定。

PSI 值范围 稳定性等级 业务建议
< 0.10 稳定 模型表现正常,无需干预
0.10 – 0.25 轻度漂移 需关注,排查客群或特征变化
> 0.25 严重漂移 立即告警,启动模型重训或调整
业务经验:PSI 阈值并非绝对固定。在信贷周期波动较大时,可适当放宽至 0.15/0.30;在监管严格场景下,建议收紧至 0.05/0.15。

3.2 PSI 计算公式与推导

PSI 的数学本质是信息论中的 KL 散度(Kullback-Leibler divergence)的对称化形式。其计算公式如下:

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

其中:
- P_i:实际样本(当前样本)在第 i 个分数段的占比
- Q_i:预期样本(建模样本)在第 i 个分数段的占比
- i = 1, 2, ..., n,n 为分箱总数

公式解读:

  • (P_i - Q_i):衡量两个分布在该箱上的绝对差异
  • ln(P_i / Q_i):衡量相对差异,即该箱占比变化的倍数
  • 乘积求和:将各箱的差异加权汇总,得到整体偏移量
数学性质:当 P_i = Q_i 时,ln(1)=0,该箱贡献为 0;当 P_i 与 Q_i 差异越大,PSI 值越大。PSI 值域为 [0, +∞),实际应用中极少超过 1.0。

3.3 分箱方法详解

PSI 计算依赖分箱操作,不同的分箱方法会直接影响 PSI 值的敏感性和稳定性。常用的分箱方法有三种:等距分箱、等频分箱和最优分箱。

分箱方法 原理 优点 缺点 适用场景
等距分箱 将评分区间按固定宽度等分 计算简单,箱边界固定 样本分布不均时,部分箱可能为空 评分分布均匀时使用
等频分箱 使每个箱包含相同数量的样本 避免空箱,对稀疏区间更鲁棒 箱边界随样本变化,可解释性略差 样本分布偏态时推荐
最优分箱 基于统计检验或信息量自动寻找最佳切点 最大化组间差异,PSI 更敏感 计算复杂,可能过拟合 高精度监控场景

3.3.1 等距分箱

将评分范围 [min_score, max_score] 等分为 n 个区间,每个区间宽度相同。例如评分 300~900,分 10 箱,则每箱宽度为 60。

# 等距分箱示例(Python)
import numpy as np

scores = np.array([350, 420, 580, 650, 780, 820])
bins = np.linspace(300, 900, 11)  # 10个箱,11个边界
indices = np.digitize(scores, bins)

3.3.2 等频分箱

基于分位数将样本划分为 n 个箱,使每个箱的样本数大致相等。通常使用建模样本的分位数作为固定边界,再应用到当前样本。

# 等频分箱示例(Python)
import pandas as pd

scores = pd.Series([350, 420, 580, 650, 780, 820])
# 基于建模样本计算分位数边界
quantiles = scores.quantile([0, 0.1, 0.2, ..., 1.0])
bins = quantiles.values

3.3.3 最优分箱

最优分箱通过卡方检验、信息价值(IV)或决策树等算法,自动寻找使组间差异最大化的切点。在 PSI 监控中,最优分箱能更早捕捉到细微漂移。

# 最优分箱示例(使用决策树思想)
from sklearn.tree import DecisionTreeClassifier

# 将评分作为特征,目标变量为样本来源(建模样本 vs 当前样本)
X = np.concatenate([scores_expected, scores_actual]).reshape(-1, 1)
y = np.array([0]*len(scores_expected) + [1]*len(scores_actual))

tree = DecisionTreeClassifier(max_leaf_nodes=10)
tree.fit(X, y)
# 获取树的分裂点作为最优分箱边界
thresholds = tree.tree_.threshold[tree.tree_.feature != -2]
实践注意:分箱数量通常取 10~20 箱。箱数过少会掩盖局部漂移,箱数过多则导致统计噪声放大。建议在建模阶段固定分箱边界,避免每次监控时重新分箱。

3.4 PSI 计算流程与分箱方法对比

下图展示了 PSI 计算的完整流程,以及三种分箱方法在流程中的位置差异:

PSI 计算流程与分箱方法对比 建模样本评分 当前样本评分 分箱方法选择 等距分箱 / 等频分箱 / 最优分箱 确定分箱边界 计算各箱占比 P_i, Q_i PSI = Σ(P_i-Q_i)·ln(P_i/Q_i) PSI 值 → 漂移告警判断 分箱方法对比 等距:固定宽度,简单但易空箱 等频:样本数相等,避免空箱 最优:自动切分,敏感度高 推荐:等频分箱作为默认方案

3.5 三种分箱方法对 PSI 的影响对比

为直观展示分箱方法对 PSI 计算结果的影响,以下使用同一组模拟数据,分别用三种方法计算 PSI:

分箱方法 箱数 PSI 值 是否触发告警(阈值0.10) 特点
等距分箱 10 0.087 未触发 中间箱占比大,局部漂移被稀释
等频分箱 10 0.124 触发 各箱样本均衡,漂移更易捕捉
最优分箱 8 0.153 触发 自动聚焦差异大的区间,敏感度最高
关键结论:等频分箱在大多数场景下是 PSI 监控的最佳实践——它避免了空箱问题,对偏态分布鲁棒,且计算稳定。最优分箱适合高精度场景,但需注意过拟合风险。等距分箱仅推荐在评分分布接近均匀时使用。

3.6 PSI 计算的注意事项

  • 零值处理:当某箱 Q_i = 0 时,ln(P_i/0) 无定义。实践中通常对占比做平滑处理,如加极小值 1e-6 或使用 Laplace 平滑。
  • 分箱边界固定:建模阶段确定分箱边界后,在监控阶段应使用同一组边界,避免因边界变化导致 PSI 值失真。
  • 样本量要求:每个箱的样本数建议不少于 30,否则统计波动过大,PSI 值不可靠。
  • 多维度监控:PSI 仅反映评分分布的整体偏移,建议结合特征级 PSI(变量稳定性指标)定位具体漂移原因。
常见误区:PSI 值低并不一定代表模型表现好。如果模型已经失效但评分分布恰好与建模样本一致(如所有样本都被判为低分),PSI 仍可能很低。因此 PSI 需与模型性能指标(KS、AUC)联合监控。