Overfitting & Underfitting —— 超越教材定义(第5部分)

发布: (2025年12月3日 GMT+8 11:43)
6 min read
原文: Dev.to

Source: Dev.to

第 5 部分 机器学习模型隐藏的失败点 系列

大多数机器学习初学者认为自己已经了解了过拟合和欠拟合。但在真实的生产系统中,过拟合并不只是“高方差”,欠拟合也不只是“高偏差”。它们是系统层面的失败,会在部署后悄然破坏模型性能——尤其是在数据漂移、流水线变化或特征异常时。本文深入超出标准定义的内容,解释这些问题背后的真实工程意义。

过拟合 vs. 欠拟合(教材)

  • 过拟合 – 模型在训练数据上表现良好,但在未见数据上表现差。
  • 欠拟合 – 模型在训练集和测试集上都表现差。

这些定义是正确的,但过于简化。

运营过拟合

过拟合并不只是“记忆”。当模型:

  • 学习了噪声而非真实模式
  • 依赖不稳定的特征
  • 依赖在生产环境中不存在的相关性
  • 因为训练条件 ≠ 真实世界条件而失效

时,就会出现运营过拟合。

示例(真实的机器学习案例)

一个流失预测模型学到了:

if last_3_days_support_tickets > 0 → user will churn

但这个特征:

  • 在推理时不可用
  • 经常缺失
  • 月与月之间行为不同

模型在生产环境中崩溃。
运营过拟合 = 依赖在环境变化时会失效的特征/模式。

运营欠拟合

欠拟合并不只是“模型太简单”。真实的欠拟合发生在:

  • 数据质量差
  • 特征未能代表真实信号
  • 错误的抽样隐藏了真实模式
  • 缺乏领域理解
  • 忽视特征交互

示例

一个欺诈模型几乎总是预测 fraud = 0,因为:

  • 训练数据大多是干净的
  • 模型从未见过罕见的欺诈模式
  • 抽样没有分层

这属于 数据欠拟合,而非算法失效。

具体的过拟合场景

  • 特征泄漏过拟合 – 模型依赖未来或隐藏变量。
  • 流水线过拟合 – 训练流水线 ≠ 生产流水线。
  • 时间过拟合 – 模型学习的模式仅在特定时间段存在。
  • 细分过拟合 – 模型对特定用户群体或地区过拟合。

导致因素包括弱/噪声特征、错误的预处理、不恰当的损失函数、类别代表性不足、模型容量低以及领域编码不佳。

如何检测过拟合

  • 训练‑验证性能差距大
  • 部署后性能突然下降
  • 基于时间的性能衰减
  • 过度依赖少数不稳定特征
  • 频繁触发漂移检测警报

如何检测欠拟合

  • 所有数据集上的指标都差
  • 增加数据后仍无改进
  • 高偏差(系统性错误)
  • 学习曲线平坦

如何修复过拟合

  • 移除噪声或不稳定特征
  • 修复泄漏问题
  • 添加正则化(如 L2、dropout)
  • 使用 dropout 或其他鲁棒技术
  • 采用基于时间的验证划分
  • 对齐训练与生产流水线

如何修复欠拟合

  • 添加更丰富、基于领域的特征
  • 增加模型容量(更多层、更宽的树等)
  • 对稀有类别进行过采样或使用类别加权
  • 更积极地调优超参数
  • 如有必要,切换到更具表达能力的模型族

关键要点

洞察含义
过拟合 ≠ 记忆它是由不稳定依赖导致的运营脆弱性。
欠拟合 ≠ 小模型它是因数据或特征问题导致的信号缺失。
流水线对齐很重要大多数失败源于训练与生产之间的不匹配。
评估必须贴合真实场景使用时间划分、细分划分等更真实的验证策略。
监控是必不可少的模型会随时间衰减,持续监控可提前捕捉漂移。
Back to Blog

相关文章

阅读更多 »

OpenAI 将收购 Neptune

OpenAI 正在收购 Neptune,以加深对模型行为的可视化,并加强研究人员用于跟踪实验和监控训练的工具……

ChatGPT 正面临红色警报

大约三年多前,OpenAI把整个科技行业搅得一团乱。ChatGPT 推出时,即使被标榜为“low-key research preview”,它……