2. 尖峰告警定义:什么是尖峰告警,与常规PSI趋势告警的区别

在贷后预警体系中,PSI(Population Stability Index)是衡量客群分布偏移的核心指标。然而,并非所有PSI波动都代表相同的风险含义。本章将明确尖峰告警的定义,并系统对比其与常规PSI趋势告警在触发逻辑、监控粒度、业务解读上的本质区别。

2.1 尖峰告警的定义

尖峰告警(Spike Alert)是指在极短时间窗口内(通常为单日或单批次),PSI值出现瞬时、剧烈、超过预设阈值的异常跳变。它不关注长期漂移趋势,而是聚焦于“突发性”与“幅度”两个维度。

核心特征: 单点爆发、幅度大、持续时间短、通常伴随业务异常事件(如数据断流、策略误配、外部欺诈攻击)。
维度 尖峰告警特征
时间窗口 单日 / 单批次(通常 ≤ 1天)
PSI变化幅度 瞬时跳变 ≥ 0.25(或自定义高阈值)
持续时间 短(1~3个监控周期后快速回落)
触发条件 单点绝对值超过告警线,不依赖历史趋势
典型根因 数据异常、策略误配、外部冲击、系统故障

2.2 常规PSI趋势告警的定义

常规PSI趋势告警(Trend Alert)关注的是PSI在连续多个监控周期(通常为周、月或滚动窗口)内的累积漂移。它通过移动平均、指数平滑或回归斜率来识别客群结构的渐进式恶化。

典型场景: 客群信用质量缓慢下沉、产品政策长期调整导致的分布偏移。趋势告警更适用于“慢变量”风险监控。

2.3 核心区别对比

以下表格从监控逻辑、业务含义、响应策略三个层面,系统对比两种告警模式:

对比维度 尖峰告警 常规趋势告警
监控粒度 单日 / 单批次 周 / 月 / 滚动窗口
触发逻辑 瞬时绝对值超过阈值 累积漂移超过趋势线或移动平均线
告警形态 尖峰脉冲(Spike) 斜坡漂移(Drift)
业务解读 突发异常事件,需立即排查 结构缓慢变化,需策略调优
响应时效 小时级 / 当天 周级 / 月级
误报率 较高(易受单点噪声干扰) 较低(平滑后更稳定)
典型阈值 PSI ≥ 0.25(单点) PSI累积 ≥ 0.10(滚动窗口)

2.4 尖峰告警 vs 趋势告警:SVG对比图

下图直观展示两种告警在PSI时序曲线上的形态差异:

尖峰告警 vs 趋势告警 对比示意图 尖峰告警 vs 趋势告警 对比示意图 PSI 0.30 0.15 0.05 告警阈值 0.25 趋势告警(缓慢漂移) 尖峰告警 PSI=0.28 说明: 蓝色虚线为趋势告警(缓慢累积漂移),红色实线为尖峰告警(单点瞬时跳变后快速回落)。 尖峰告警关注“幅度”,趋势告警关注“方向与斜率”。

2.5 两种告警的适用场景对比

在实际贷后监控中,两种告警模式并非互斥,而是互补关系。以下列表总结各自的最佳适用场景:

  • 尖峰告警适用场景:
    • 数据源断流或重复推送导致的PSI瞬时跳变
    • 风控策略误上线(如评分卡阈值错误)引发的客群分布突变
    • 外部欺诈团伙集中攻击导致的短期客群异化
    • 系统升级或模型版本切换后的即时验证
  • 趋势告警适用场景:
    • 宏观经济下行导致的客群信用质量缓慢下沉
    • 产品利率调整后,优质客群逐步流失的长期漂移
    • 渠道获客质量持续下降的渐进式恶化
    • 模型老化导致的区分能力缓慢衰减

2.6 组合监控策略建议

重要提示: 单一依赖尖峰告警会导致“噪声过载”,单一依赖趋势告警则会“错过突发风险”。建议采用双轨并行策略:尖峰告警用于实时应急响应,趋势告警用于周期性策略调优。

下表给出推荐的组合监控参数:

监控层级 告警类型 时间窗口 阈值 响应动作
L1 实时 尖峰告警 单日 PSI ≥ 0.25 立即排查、冻结策略、通知风控值班
L2 日度 尖峰告警 3日滚动 PSI ≥ 0.20 触发二次复核、生成异常事件报告
L3 周度 趋势告警 4周滚动 累积PSI ≥ 0.10 启动策略复盘、模型校准评估
L4 月度 趋势告警 12周滚动 累积PSI ≥ 0.15 提交风控委员会、启动模型迭代

2.7 尖峰告警的PSI计算逻辑

尖峰告警的PSI计算与常规PSI公式一致,但对比基准和时间窗口不同:

# 尖峰告警PSI计算示例(单日 vs 基准分布)
import numpy as np

def calculate_spike_psi(actual_dist, expected_dist, bins=10):
    """
    尖峰告警PSI计算
    :param actual_dist: 当日实际客群分布(数组)
    :param expected_dist: 基准客群分布(通常为近30天稳定分布)
    :param bins: 分箱数
    :return: PSI值
    """
    # 分箱处理
    actual_bins = np.histogram(actual_dist, bins=bins, range=(0,1))[0] / len(actual_dist)
    expected_bins = np.histogram(expected_dist, bins=bins, range=(0,1))[0] / len(expected_dist)
    
    # 避免除零
    actual_bins = np.clip(actual_bins, 1e-6, None)
    expected_bins = np.clip(expected_bins, 1e-6, None)
    
    # PSI计算
    psi = np.sum((actual_bins - expected_bins) * np.log(actual_bins / expected_bins))
    
    return psi

# 示例:当日PSI=0.28,触发尖峰告警
spike_psi = calculate_spike_psi(actual_distribution, baseline_distribution)
print(f"尖峰PSI: {spike_psi:.4f}")  # 输出: 尖峰PSI: 0.2812
关键差异: 尖峰告警的基准分布通常固定为“稳定期分布”或“前30天滚动中位数分布”,而非趋势告警中使用的“前一周/前一个月分布”。这确保了尖峰检测对“瞬时偏离”的敏感性。