构建机器学习模型有点像烹饪:调味太少菜肴会平淡无味,调味太多又会过于浓烈。目标是什么?就是找到完美的平衡点——恰到好处的复杂度来捕捉数据的”风味”,但又不会过度复杂到让人难以接受。
本文将深入探讨模型开发过程中两个最常见的陷阱:过拟合和欠拟合。无论是训练第一个模型还是调整第一百个模型,掌握这些概念对于构建在现实世界中真正有效的模型都至关重要。
过拟合
什么是过拟合?
过拟合是数据科学模型中常见的问题。当模型从训练数据中学习得”太好”时就会发生,这意味着它不仅学习了数据的真实模式,还学习了训练数据特有的噪声和随机波动。因此,模型无法基于未见过的数据做出良好的预测。
为什么过拟合是个问题?
- 性能差:模型泛化能力弱。在训练期间检测到的模式不适用于其他数据。基于训练误差可能会觉得模型表现很好,但实际上测试或真实世界的误差并不那么乐观。
- 高方差预测:模型性能不稳定,预测不可靠。数据的微小调整会导致预测结果出现高度变化。
- 训练复杂且昂贵的模型:在生产环境中训练和构建复杂模型是一项昂贵且资源密集的工作。如果更简单的模型表现同样好,使用它会更有效率。
- 失去业务信任的风险:在实验新模型时过于乐观的数据科学家可能会向业务利益相关者过度承诺结果。如果仅在模型展示后发现过拟合,这会严重损害可信度,并难以重新获得对模型可靠性的信任。
如何识别过拟合
- 交叉验证:在交叉验证过程中,输入数据被分成几个折(训练和测试数据集)。输入数据的不同折应该给出相似的测试误差结果。不同折之间性能的巨大差距可能表明模型不稳定或数据泄漏,这两者都可能是过拟合的症状。
- 跟踪训练、测试和泛化误差:模型部署时的误差(泛化误差)不应与已知误差有太大偏差。如果想要更进一步,可以考虑在部署模型的性能与验证集误差显著偏离时实施监控警报。
如何缓解/预防过拟合
- 移除特征:过多的特征可能会”过度引导”模型,导致模型无法很好地泛化。
- 增加训练数据:提供更多学习样本,模型能学习更好地泛化,对异常值和噪声的敏感度降低。
- 增加正则化:正则化技术通过惩罚已经膨胀的系数来帮助防止模型过度拟合数据。
- 调整超参数:某些过度拟合的超参数可能导致模型无法很好地泛化。
欠拟合
什么是欠拟合?
欠拟合发生在模型的性质或特征过于简单,无法很好地捕捉底层数据时。它也会导致在未见数据上的预测效果差。
为什么欠拟合是个问题?
- 性能差:模型在训练数据上表现不佳,因此在测试和真实世界数据上也表现不佳。
- 高偏差预测:模型无法做出可靠的预测。
如何识别欠拟合
- 训练和测试误差都会很差。
- 泛化误差会很高,可能接近训练误差。
如何解决欠拟合
- 增强特征:引入新特征,或添加更复杂的特征(例如:添加交互效应/多项式项/季节性项),这些将捕捉底层数据中更复杂的模式。
- 增加训练数据:提供更多学习样本,模型能学习更好地泛化,对异常值和噪声的敏感度降低。
- 降低正则化强度:当应用过于强大的正则化技术时,特征变得过于均匀,模型不会优先考虑任何特征,从而阻止它学习重要模式。
- 调整超参数:本质上复杂的模型如果超参数设置不当,可能无法捕捉所有复杂性。更加注意调整它们可能很有价值(例如,为随机森林添加更多树)。
- 如果所有其他选项都无法解决根本问题,可能值得放弃当前模型,替换为能够捕捉数据中更复杂模式的模型。
总结
机器学习不是魔法,而是在过多和过少之间取得平衡的艺术。过度拟合模型,它会变成无法处理新情况的完美主义者。欠拟合模型,它会完全错过重点。
最佳模型存在于最佳平衡点:泛化良好,学习足够但不过度。通过理解和管理过拟合与欠拟合,不仅能改进指标,还能建立信任、降低风险,并创建超越训练集的持久解决方案。
参考资料
[1]https://medium.com/@SyedAbbasT/what-is-overfitting-underfitting-regularization-371b0afa1a2c
