4. 数据漂移基础
在金融风控、量化投研与信贷评分等场景中,模型上线后性能衰减往往并非算法本身退化,而是输入数据本身发生了漂移。数据漂移(Data Drift)指模型输入特征联合分布或边缘分布随时间或业务环境发生变化,而标签定义保持不变。它与概念漂移的关键区别在于:数据漂移是"输入变了",概念漂移是"输入到输出的映射关系变了"。本节聚焦数据漂移的四类典型表现及其识别方法。
一、四类数据漂移的核心原理
1. 数据分布变化。最常见形式是特征均值、方差、分位数或整体形状偏移。例如某消费贷产品客群从一线城市下沉至三四线城市,收入特征分布整体左移;或市场利率环境切换导致利率类特征方差放大。识别上可用 PSI(群体稳定性指数)、KS 检验、Wasserstein 距离等指标量化。
2. 采样偏差。训练样本与线上推理样本的采集机制不一致。典型如训练集来自历史审批通过客户(拒绝推断缺失),而线上打分覆盖全量申请;或某渠道流量突增导致样本构成比例失衡。采样偏差往往表现为类别比例、渠道占比、时间覆盖的突变。
3. 缺失值模式变化。缺失本身携带信息。当某字段缺失率从 3% 升至 25%,或缺失从随机缺失(MCAR)转为与标签相关的非随机缺失(MNAR),模型对缺失的隐式处理逻辑就会失效。需同时监控缺失率与缺失相关性结构。
4. 异常值引入。上游系统改造、单位换算错误、爬虫数据污染或极端行情,会引入超出训练分布的离群点。异常值不仅影响统计量,还可能触发模型外推,产生极端评分。
二、识别方法流程
建议按"特征级 → 样本级 → 结构级"三层递进排查,避免直接跳到模型重训。
- 特征级分布监控:对每个数值特征计算 PSI 与 KS 统计量,对类别特征计算卡方检验与占比变化。PSI < 0.1 稳定,0.1~0.25 需关注,> 0.25 显著漂移。
- 样本级构成监控:按渠道、地区、产品线、时间窗口统计样本占比,检测采样偏差。可用 JS 散度对比训练集与线上样本的类别分布。
- 缺失结构监控:记录每字段缺失率,并计算缺失指示变量之间的相关性矩阵,识别缺失模式是否从随机转为系统性。
- 异常值监控:基于训练集分位数设定上下界,统计线上越界样本比例;对连续特征使用 IQR 或 3σ 规则。
- 漂移归因:将上述信号与业务事件(渠道调整、政策变化、系统升级)对齐,区分真实漂移与数据管道故障。
# 示例:PSI 与缺失率联合监控
import numpy as np
import pandas as pd
def psi(expected, actual, bins=10):
breakpoints = np.percentile(expected, np.linspace(0, 100, bins + 1))
breakpoints[0], breakpoints[-1] = -np.inf, np.inf
e_perc = np.histogram(expected, breakpoints)[0] / len(expected)
a_perc = np.histogram(actual, breakpoints)[0] / len(actual)
e_perc = np.clip(e_perc, 1e-6, None)
a_perc = np.clip(a_perc, 1e-6, None)
return np.sum((a_perc - e_perc) * np.log(a_perc / e_perc))
# 缺失率变化
miss_train = train.isnull().mean()
miss_online = online.isnull().mean()
miss_delta = (miss_online - miss_train).abs().sort_values(ascending=False)
print(miss_delta.head(10))
三、典型场景与案例
某银行信用卡评分模型上线 6 个月后 KS 从 0.42 降至 0.31。排查发现:
- 特征"近 3 月查询次数"PSI 达 0.31,原因是营销活动导致查询量整体上升——属于分布变化。
- 新渠道进件占比从 8% 升至 27%,该渠道客群风险画像与存量差异大——属于采样偏差。
- 字段"公积金缴纳基数"缺失率从 5% 升至 22%,且缺失样本逾期率显著更高——属于缺失值模式变化(MNAR)。
- 部分申请年龄字段出现 999 占位值——属于异常值引入。
四类问题叠加,单纯重训无法根治,需先修复数据管道与采样策略,再迭代模型。
四、常见误区与复盘清单
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 只看模型指标,不看输入分布 | 漂移累积到不可逆才被发现 | 建立特征级 PSI/KS 日常监控 |
| 把缺失率上升简单归为数据质量差 | 忽略缺失与标签的相关性 | 同时监控缺失率与缺失相关性 |
| 用全量数据统一阈值检测异常 | 分群差异被掩盖 | 按渠道/客群分层设定阈值 |
| 发现漂移立即重训 | 可能放大采样偏差 | 先归因,再决定修复数据或重训 |
| 忽略训练与线上样本采集机制差异 | 模型评估虚高 | 做拒绝推断或样本加权 |
掌握这四类数据漂移的识别方法,是后续概念漂移诊断与模型自适应策略的基础。实际落地时,建议将监控指标嵌入特征平台与模型服务平台,实现自动化告警与归因。