本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
过拟合是机器学习中最常遇到的问题,它往往表现为模型的训练效果很好但预测效果差
本文讲解什么叫过拟合,过拟合时的表现是什么,过拟合是如何产生的,以及如何预防过拟合
本节通过讲解过拟合是什么,过拟合的表现是什么
什么是过拟合
过拟合(Overfitting)也称为泛化能力差,它是机器学习中的一种常见现象
过拟合是指在由于模型过度拟合训练数据,导致模型远远偏离X与y的真实关系
过拟合的直观表现为:
1. 数据表现:模型的训练误差虽然很小,但测试误差很高,泛化能力差
2. 几何表现:模型曲线虽然拟合了训练样本点,但曲线整体扭曲、跌宕、异常
两个常见的过拟合例子
回归问题(曲线拟合)中的过拟合
图二中的曲线虽然在每一个训练数据上拟合得都非常好,但曲线已经偏离了正常形态
图一中的曲线虽然有部分数据点没有拟合到位,但它却表现出数据所应有的真实形态
分类问题(模式识别)中的过拟合
图二中的曲线虽然能准确区分出每一个样本的类别,但曲线表现得非常"扭曲、勉强"
图一中的曲线虽然有部分数据点没有完全预测准确,但它却更加"自然、真实、合理"
可以看到,过拟合时,模型虽然在训练数据上达到更好的效果,
但这种"更好的效果"是通过"勉强而为之"换取而来的,它在模型真实应用时有害无益
本节展示一个曲线拟合中出现过拟合的实验例子,用于理解过拟合是如何产生的
过拟合是如何产生的
下面通过一个例子,展示强行拟合历史数据是如何引起过拟合的
现有数据点如下:
不妨采用三次多项式对上述数据点进行拟合,效果如下:
可以看到,三次多项式效果上已经不错,基本已经把数据的形态拟合到位
如果觉得三次多项式的拟合值还有些误差,不尽人意
还可以强行用拉格朗日插值法对样本进行0误差10次多项式插值拟合,如下:
虽然曲线对数据的拟合误差为0,但它却不是我们想要的曲线,因为曲线非常跌宕!
即使它精确地穿过每一个训练数据点,但对于非训练数据的预测效果远不如3次多项式!
这就是过拟合,也称为泛化能力差,往往就是为了强行拟合历史数据样本而引起的
✍️为什么不能过份拟合历史样本数据
不能过分拟合历史样本数据,主要是因为历史数据往往不是100%正确的,往往包含了噪声
在上述例子样本点(-0.6,-1.2) 处,仔细观察数据趋势会发现这极可能是采集时出现了错误
10次多项式过于追求拟合,反而把错误样本的错误也完美重现了,进一步影响了模型整体形态
反观3次多项式,它兼顾整体平滑,不过分追求拟合所有样本,于是成功忽略了这个错误样本
因此,过度学习训练样本,会严重受样本噪声影响,导致模型过度偏离真实关系
预防过拟合的措施
一些常见的预防过拟合的措施如下:
1. 增加训练数据量
更多的样本有利于模型捕捉真实关系,同时也可以减少噪声样本带来的影响
2. 降低模型复杂度
降低模型的复杂度,也就是削弱模型的拟合能力,是一种常用的预防过拟合措施
过强的拟合能力会赋予模型学习噪声的能力,因此更容易过拟合
合理削弱模型拟合能力,限制模型形态,更利于模型找到真实关系
备注:减少模型参数、减少入模变量都是降低模型复杂度的一种措施
3. 使用正则化方法
正则化一般是指在损失函数加入正则项,例如L1、L2正则项
通过正则化,预防模型训练出一些不合理的系数,从而使模型更偏向真实关系
4. 早停法(Early Stopping)
早停法是指在训练过程中,使用验证数据来检查模型是否过拟合
如果验证数据的误差越来越大,则说明模型走向了过拟合,则提前停止训练
更多预防过拟合的方法见《如何预防过拟合》
好了,机器学习中的过拟合就介绍到这里了
End