2. 模型漂移基础

在金融风控、量化投研、智能投顾等场景中,模型上线只是起点。真正决定模型长期价值的,是它在时间维度上是否仍然“理解”当前世界。模型漂移(Model Drift)指的是模型所依赖的数据分布、输入与输出之间的关系,或标签本身随时间发生变化,导致模型效果衰减的现象。理解漂移的类型与成因,是搭建监控与告警体系的第一块基石。

核心判断:漂移不是模型“坏了”,而是模型所刻画的统计规律与当前业务现实之间出现了偏离。监控的目标不是消灭漂移,而是尽早识别漂移是否已经影响到决策质量。

一、三类漂移的定义与本质区别

在金融实践中,漂移通常被拆分为三种基本类型,它们的数学对象和业务含义各不相同。

  • 数据漂移(Data Drift / Covariate Shift):输入特征 X 的分布 P(X) 发生变化,但输入与标签之间的条件关系 P(Y|X) 基本不变。例如宏观经济波动导致申请人的收入分布整体下移。
  • 概念漂移(Concept Drift):输入与标签之间的真实关系 P(Y|X) 发生变化。同样的特征组合,过去代表低风险,现在可能代表高风险。例如监管政策调整后,某类交易行为的违约含义被重新定义。
  • 标签漂移(Label Drift / Prior Probability Shift):标签本身的分布 P(Y) 发生变化,而 P(X|Y) 相对稳定。例如经济下行期整体违约率从 2% 上升到 5%。

三者的关键区别在于“变化发生在哪个概率对象上”。数据漂移看输入,标签漂移看输出,概念漂移看输入到输出的映射关系。实际业务中,三者往往同时出现,但监控指标和应对策略必须分开设计。

模型漂移的三类概率对象 数据漂移 P(X) 变化 输入特征分布改变 P(Y|X) 基本稳定 金融示例:收入分布下移 征信查询次数整体上升 监控:PSI、KS、均值方差 概念漂移 P(Y|X) 变化 输入输出映射关系改变 同样特征含义被重定义 金融示例:监管政策调整 交易行为违约含义变化 监控:分群效果、残差分析 标签漂移 P(Y) 变化 标签整体分布改变 P(X|Y) 相对稳定 金融示例:违约率上升 正样本比例显著变化 监控:标签比例、AUC 校准

二、常见成因与金融场景示例

漂移的成因可以归纳为外部环境、内部策略和数据链路三类。金融场景中,这三类成因往往交织出现。

漂移类型 常见成因 金融场景示例 典型监控信号
数据漂移 宏观经济变化、客群结构变化、数据采集口径调整 信贷申请人群从一线城市扩展到下沉市场,收入与负债特征分布整体偏移 特征 PSI 上升、均值/方差偏移、缺失率变化
概念漂移 监管政策、市场机制、欺诈手法、业务定义变更 反欺诈模型上线后,欺诈团伙改变作案模式,历史特征与欺诈的关联减弱 分群 AUC 下降、残差分布异常、规则命中率突变
标签漂移 经济周期、风险偏好、催收策略、标签定义调整 经济下行期整体违约率从 2% 升至 5%,正样本比例显著上升 标签比例监控、校准曲线偏移、KS 下降
记忆口诀:数据漂移看“输入变了没”,标签漂移看“结果多了没”,概念漂移看“规律还灵不灵”。三者可以独立发生,也可以连锁发生。

三、监控方法流程:从指标到告警

识别漂移需要一套可落地的流程。以下流程适用于信贷评分卡、反欺诈、量化选股等金融模型。

  1. 确定监控对象:明确关键特征、预测分数、标签以及业务结果指标,避免全量监控导致噪声过大。
  2. 建立基线分布:以训练集或最近一个稳定窗口作为参考分布,记录均值、方差、分位数、类别比例等。
  3. 计算漂移指标:连续特征常用 PSI、KS、Wasserstein 距离;类别特征常用卡方、JS 散度;标签用比例差与校准误差。
  4. 设定阈值与分级:例如 PSI < 0.1 稳定,0.1~0.25 预警,> 0.25 严重;结合业务影响设定告警级别。
  5. 触发告警与归因:告警后下钻到具体特征、客群、时间段,判断是数据链路问题还是真实业务变化。
  6. 决策与闭环:根据漂移类型选择重训、调参、换特征、调整阈值或人工复核,并记录处理结果。
# 示例:计算单个特征的 PSI(简化版)
import numpy as np

def psi(base, current, bins=10):
    breakpoints = np.percentile(base, np.linspace(0, 100, bins + 1))
    base_cnt, _ = np.histogram(base, bins=breakpoints)
    curr_cnt, _ = np.histogram(current, bins=breakpoints)
    base_pct = base_cnt / len(base) + 1e-6
    curr_pct = curr_cnt / len(current) + 1e-6
    return np.sum((curr_pct - base_pct) * np.log(curr_pct / base_pct))

# 输出示例
# feature: income        psi=0.031  status=stable
# feature: query_count   psi=0.187  status=warning
# feature: debt_ratio    psi=0.312  status=critical

四、误区与复盘:别把漂移当成模型故障

在实际项目中,团队最容易陷入以下误区。

  • 误区一:只看模型 AUC,不看输入分布。AUC 下降往往是滞后信号,等它出现时业务已经受损。应优先监控特征与标签分布。
  • 误区二:把标签漂移误判为概念漂移。违约率整体上升但特征与违约的关系未变,属于标签漂移,盲目重训可能无效,应先调整阈值或校准。
  • 误区三:阈值一刀切。不同特征、不同客群的敏感度不同,统一 PSI 阈值会带来大量误报或漏报。
  • 误区四:告警后无人归因。漂移告警必须绑定责任人和处理动作,否则监控体系会迅速失效。
复盘要点:漂移监控的核心不是“报警越多越好”,而是“报警是否可解释、可归因、可行动”。建议每次告警都记录:触发指标、影响范围、根因判断、处理动作和后续效果,形成可复用的漂移案例库。

掌握数据漂移、概念漂移与标签漂移的定义、区别和成因,是后续设计监控指标、告警阈值和应对策略的前提。只有先分清“变的是输入、输出还是映射关系”,才能在金融业务中做出正确的模型维护决策。