2. PSI漂移监测原理
群体稳定性指标(Population Stability Index, PSI)是反洗钱实时监测中衡量特征分布随时间漂移程度的量化工具。在Flink流处理场景下,PSI用于比较参考分布(如模型训练期的特征分布)与当前分布(如实时流入的交易特征分布),从而判断数据分布是否发生显著变化。
2.1 PSI计算公式推导
PSI的核心思想是:将连续特征划分为若干区间(分箱),然后计算每个区间内样本占比的变化,并对变化进行加权求和。公式如下:
PSI = Σ ( (Actual_i - Expected_i) * ln(Actual_i / Expected_i) )
其中:
- Expected_i:参考分布(如训练集)在第 i 个分箱中的样本占比。
- Actual_i:当前分布(如实时数据)在第 i 个分箱中的样本占比。
公式推导逻辑:
- 分箱:将连续特征划分为 k 个互斥区间。
- 计算占比:分别统计参考分布和当前分布落在每个区间内的样本数,除以总样本数得到 Expected_i 和 Actual_i。
- 计算偏差:对每个区间计算 (Actual_i - Expected_i),表示占比变化。
- 加权权重:使用 ln(Actual_i / Expected_i) 作为权重,放大变化幅度。
- 求和:将所有区间的加权偏差累加,得到最终 PSI 值。
关键理解:PSI 本质是相对熵(KL散度)的对称化变体,用于衡量两个概率分布之间的差异。当 Actual_i = Expected_i 时,PSI = 0,表示分布完全一致;差异越大,PSI 值越高。
2.2 分箱策略:等距分箱与等频分箱
分箱是PSI计算的前置步骤,直接影响监测灵敏度。常用的两种分箱策略如下:
| 策略 | 定义 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 等距分箱 | 将特征值范围均匀划分为 k 个宽度相同的区间 | 实现简单,区间边界固定,易于解释 | 对数据分布敏感,稀疏区间可能样本极少,导致 PSI 计算不稳定 | 特征值分布均匀、无极端离群点 |
| 等频分箱 | 将样本按特征值排序后,使每个区间包含大致相等的样本数 | 每个区间样本量均衡,PSI 计算更稳健 | 区间边界随数据分布变化,跨时间对比时边界可能不一致 | 特征值分布偏态、存在长尾或离群点 |
实战建议:在反洗钱实时监测中,推荐优先使用等频分箱。因为交易金额、交易频率等特征通常呈长尾分布,等频分箱能避免因某个区间样本过少导致的 PSI 计算失真。若使用等距分箱,建议先对特征做对数变换或 Winsorize 处理。
分箱数量 k 的选择:
- k 过小(如 < 5):分箱粗糙,无法捕捉细微漂移。
- k 过大(如 > 20):分箱过细,噪声放大,PSI 值波动剧烈。
- 推荐范围:10 ~ 15 个分箱,在灵敏度和稳定性之间取得平衡。
2.3 PSI阈值设定与风险等级划分
PSI 值本身是一个无量纲指标,需要通过阈值来判定漂移的严重程度。以下是业界通用的阈值标准及对应的风险等级:
| PSI 值范围 | 风险等级 | 业务含义 | 建议行动 |
|---|---|---|---|
| PSI < 0.1 | 低风险 | 分布无明显漂移,模型稳定 | 持续监测,无需干预 |
| 0.1 ≤ PSI < 0.25 | 中风险 | 分布出现轻度漂移,需关注 | 触发告警,人工复核特征分布 |
| PSI ≥ 0.25 | 高风险 | 分布发生显著漂移,模型失效风险高 | 立即暂停模型使用,启动重训练或特征工程调整 |
注意:上述阈值是通用经验值,实际应用中应根据业务场景和模型敏感度进行调整。例如,在反洗钱场景中,若模型用于高风险交易拦截,可适当降低阈值(如 0.15 即触发告警),以提前发现洗钱模式变化。
阈值调整原则:
- 业务容忍度:对误报敏感的业务(如正常交易被误拦截),可适当提高阈值。
- 监测频率:高频监测(如每小时计算一次)可设置更严格的阈值,低频监测(如每天一次)可适当放宽。
- 特征重要性:对模型贡献大的特征,应设置更低的阈值,优先监测。
2.4 实时PSI计算的注意事项
- 样本量要求:每个分箱内的样本数建议不少于 30,否则 PSI 值易受噪声干扰。在 Flink 中可通过窗口大小控制样本量。
- 参考分布更新:参考分布应定期更新(如每月一次),避免因业务自然演化导致误告警。
- 零值处理:当某个分箱在参考分布或当前分布中样本占比为 0 时,ln(0) 无定义。实际处理中可对占比做平滑处理(如加一个极小值 ε = 1e-6)。
- 多特征聚合:反洗钱场景通常监测多个特征,可对每个特征分别计算 PSI,再通过加权平均或最大值聚合得到整体漂移指标。