分布偏移(Distribution Shift)指的是:模型上线后遇到的真实数据,和它训练时见过的数据不再是同一个分布,于是线下评测很好的指标,线上开始往下掉。它是"模型没坏、世界变了"的典型症状。
打个比方。你按老家的路况学开车:路口没车就直行。换到另一个城市,同样"路口没车",却可能窜出电动车。你的判断规则没变,环境变了,事故率就上去了。模型学的也是某个数据分布上的规律,分布一挪,规律就可能不成立。
常见的分布偏移有三类,分清它们,处理方式完全不同。
协变量偏移(Covariate Shift):输入的分布变了,但"给定输入、答案是什么"的规律没变。比如人脸识别训练用的是白天正脸照,上线后大量是夜间侧脸;或者推荐系统训练时用户以年轻人为主,推广后中老年用户涌入。
概念漂移(Concept Drift):输入的分布可能没怎么变,但输入和答案之间的关系变了。比如反欺诈模型,同样一组交易特征,半年前是正常行为,现在成了盗刷团伙的常用套路;又比如某个关键词的搜索量和销量,过去正相关,后来不再相关。
标签偏移(Label Shift):反过来,答案的分布变了,但"某类答案长什么样"没变。比如某类疾病进入流行季,阳性样本占比大涨。
| 维度 | 协变量偏移 | 概念漂移 |
|---|---|---|
| 什么变了 | 输入 X 的分布 | X 与 Y 之间的关系 |
| 什么没变 | 给定 X 时 Y 的规律 | 输入分布大致稳定 |
| 典型信号 | 特征均值、占比明显漂移,分桶准确率还行 | 特征看着没变,同组样本的误差却上升 |
| 常见应对 | 重加权、补采样、在新数据上微调 | 重新标注、快速重训、在线学习,必要时重定义问题 |
实操上怎么分?先看输入特征监控:均值、分位数、类别占比有没有明显漂移。再看分桶指标:把样本按特征分组,各组的准确率是否稳定。输入漂了、组内还行,偏协变量偏移;输入没怎么动、组内却变差,更像概念漂移。两者常同时发生,不必纠结贴哪个标签,重点是决定"补数据"还是"重标注重训"。
对从业者:别只盯总准确率。把输入分布监控、分桶指标、标签回流后的延迟指标一起放进看板。分布偏移不是事故,而是常态运维项,上线那天起就该假设数据会漂。具体监控指标和阈值以团队口径为准。
对普通人:某个 App 越用越不准,未必是你变奇怪了,也可能是用户群变了,或者世界变了。任何"用历史预测未来"的系统,都建立在"未来长得像过去"这个假设上。
