什么是过拟合和欠拟合

今天突然被以前同学人问到什么是机器学习中的’过拟合‘?

“过拟合就是训练的时候效果很好损失函数值可以降得很低,但是到测试数据集的时候表现就不那么好了,就是过分依赖于现有训练数据集的特征造成的,可以加大数据集来进行训练,比如在图像领域可以通过拉伸旋转变换剪裁等等方式来增加训练数据集然后通过Dropout随机清零参数来避免.......“。巴拉巴拉讲了一堆,虽然我很想解释明白,但是.......总感觉有苦说不出的憋屈,最后:

这让我意识到我可能太过于沉浸于自己的世界了,以前每次问别人的时候也会得到类似这压根的一大堆专业词语的解释,然后显得回答者特专业,完全没有考虑到别人的感受,我回来后寻思着不对,对于没有接触过机器学习这一块的人来说很多名词可能就听不太懂,我不能用太多的专业词,我要用最直白的语言解释,于是产生了这篇博客。

--------------------以下进行正经的解释----------------------

fitting:拟合,就是说这个曲线能不能很好的描述这个样本,有比较好的泛化能力

过拟合(OverFititing):太过贴近于训练数据的特征了,在训练集上表现非常优秀,近乎完美的预测/区分了所有的数据,但是在新的测试集上却表现平平。下面给一个代码中实际的运行结果感受一下:

欠拟合(UnderFitting):样本不够或者算法不精确,测试样本特性没有学到,不具泛化性,拿到新样本后没有办法去准确的判断

直观解释:

欠拟合,拟合合适,过拟合。

好的拟合→拟合合适

解决过拟合的方法:降低数据量,正则化(L1,L2),Dropout(把其中的一些神经元去掉只用部分神经元去构建神经网络)

解决欠拟合的方法:增加训练数据,优化算法

-----------------------------------正经解释完毕,以下是非正经解释----------------------------------

就好比你喜欢一个女生,这个女生有着自己的习性,为了追到这个女生我们经常会去迎合这个女生的习性,比如喝温水有固定的温度、挂电话只能她先挂、出去逛街不能哔哔太累、看书只能用书签不能折页........(别问我怎么知道的),这个就是我们学到的‘经验’,但是万一也许可能这个女生某一天觉得你没有足够关心她每天都忙于自己的事情就和你分手啦.....

然后,当你再找女朋友时,你拿出这些 ‘经验’ 但是好像发现效果并不好,因为每个女生的习性和喜好都不一样,所以你就陷入过拟合

如何解释欠拟合...,那就简单了,就是你第一个女朋友都没追到,她的习性和喜好你还没能完全掌握

完美拟合,当你在追第一个女朋友的时候,并没有完全去迎合她的习性,毕竟存在 ‘个人癖好’ 这个‘错误’习性,你学到的是有泛化性的女生习性特征,当你用这些特征再去追女生的时候,成功率就很高了!

那么问题来了,我们需要怎么去解决过拟合和欠拟合的问题呢??

现在常用的判断方法是从训练集中随机选一部分作为一个验证集,采用K折交叉验证的方式,用训练集训练的同时在验证集上测试算法效果。在缺少有效预防欠拟合和过拟合措施的情况下,随着模型拟合能力的增强,错误率在训练集上逐渐减小,而在验证集上先减小后增大;当两者的误差率都较大时,处于欠拟合状态(high bias, low variance);当验证集误差率达到最低点时,说明拟合效果最好,由最低点增大时,处与过拟合状态(high variance, low bias)。下图的横坐标用拟合函数多项式的阶数笼统地表征模型拟合能力:


过拟合:

首先我们从上面我们可以知道,造成过拟合的原因有可以归结为:参数过多。那么我们需要做的事情就是减少参数,这里有两种办法:

1、回想下我们的模型,假如我们采用梯度下降算法将模型中的损失函数不断减少,那么最终我们会在一定范围内求出最优解,最后损失函数不断趋近0。那么我们可以在所定义的损失函数后面加入一项永不为0的部分,那么最后经过不断优化损失函数还是会存在。其实这就是所谓的“正则化”。

下面这张图片就是加入了正则化(regulation)之后的损失函数。这里m是样本数目,λ表示的是正则化系数。

注意:当 λ 过大时,则会导致后面部分权重比加大,那么最终损失函数过大,从而导致欠拟合

   当 λ 过小时,甚至为0,导致过拟合。

2、对于神经网络,参数膨胀原因可能是因为随着网路深度的增加,同时参数也不断增加,并且增加速度、规模都很大。那么可以采取减少神经网络规模(深度)的方法。也可以用一种叫dropout的方法。dropout的思想是当一组参数经过某一层神经元的时候,去掉这一层上的一部分神经元,让参数只经过一部分神经元进行计算。注意这里的去掉并不是真正意义上的去除,只是让参数不经过一部分神经元计算而已。

3.提前停止训练: 
也就是减少训练的迭代次数。从上面的误差率曲线图可以看出,理论上能够找到一个训练程度,此时验证集误差率最低,视为拟合效果最好的点。

另外增大训练样本规模同样也可以防止过拟合。

欠拟合:

其实个人觉得欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加多点特征点,这些都是很好解决欠拟合的方法。

另外针对正则化,可以参考正则化,希望这篇文章对你用,也可以参考如下地址机器学习中常常提到的正则化到底是什么意思? - 知乎

(65条消息)【机器学习】欠拟合,过拟合的常见处理方法_人工智能_Mankind的博客-CSDN博客
https://blog.csdn.net/Hemk340200600/article/details/85201251?depth_1-

(65条消息)神经网络解决过拟合的方法_网络_wchzh2015的博客-CSDN博客
https://blog.csdn.net/wchzh2015/article/details/88965631

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事如yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值