欠拟合与过拟合的形成原因及解决方案

对于一个机器学习或者深度学习模型而言,我们不仅希望它能在训练数据中表现较好(训练误差),同时希望它在测试集中有较好的表现(泛化误差)。过拟合和欠拟合就是用来描述泛化误差的。

欠拟合可以理解为对训练数据的信息提取不充分,没有学习到数据背后的规律,导致模型应用在测试集上时,无法做出正确的判断。

过拟合可以理解为对训练数据的信息提取过多,模型不仅学习到了数据背后的规律,还把数据噪声当做规律学习到了。这就表现为模型的训练误差较低,但是泛化误差比较高。

下面这个图截自西瓜书,很形象直观的表现出了过拟合和欠拟合。

通常欠拟合会在模型的训练初期产生,随着训练深入,一般都能够解决欠拟合的问题,如果欠拟合还是存在,可以考虑增加模型的复杂度或者增加特征个数。

过拟合正好跟欠拟合相反,造成过拟合的原因可能有:

  1. 训练样本较少,以图2.1的树叶问题为例,假如有两个样本,一个是树叶(正例),一个不是树叶(反例),模型学习就会把正例的所有特征学习到,最后的模型判别标准可能是:绿色的有锯齿的圆形的的为树叶,这个评判标准就过于严格了(过拟合)。

  2. 训练样本噪声较大,训练数据质量不好(干扰信息过多),也容易造成过拟合。

  3. 模型过于复杂,模型复杂度太高,模型参数比较多,会使拟合模型高度拟合训练数据,但是这样也容易造成模型把训练数据的噪声当成规律学习到,造成过拟合。

对于训练样本较少和样本噪声大的问题,我们可以增加新样本;对于模型过于复杂的问题,一般有更换模型,加正则化项等方法。具体如下

  1. 增加新样本,但是获取数据的成本往往较高甚至有些具体情况无法获取新数据。解决这个问题的一种方法就是创建“假数据”并添加到训练集中——数据集增强。
  2. 选择合适的模型,有时候造成过拟合的原因可能是模型选择错误。
  3. 添加正则化项,这其实就是对模型复杂度添加一个乘法项,模型越复杂,对模型的惩罚就越高。常用的正则化项有L1,L2。
  4. 提前终止:随着学习的深入,模型会经历“欠拟合→拟合较好→过拟合”的过程,为了避免过拟合,可以提前终止。例如在梯度下降中,当梯度更新范围较小的时候,就可以提前终止了。

 

参考资料:https://zhuanlan.zhihu.com/p/72038532

发布了5 篇原创文章 · 获赞 19 · 访问量 1068

猜你喜欢

转载自blog.csdn.net/weixin_44976373/article/details/104389839