过拟合、欠拟合 -你需要了解的概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/randompeople/article/details/82107740

前言

虽然知道这两个概念的意思,但是要准确的表达这个含义还是有点小困难,所以写个博客,让自己也彻底熟悉一下。接下来会以表格的形式对比两者的优缺点。一张图了解一下:
总图
第一个图是欠拟合,一条直线来拟合样本,样本分布比较分散,直线难以拟合全部训练集样本,所以模型拟合能力不足,欠拟合。第二个图显示的曲线就很好的拟合样本分布情况,虽然并没有完全的跟这些样本点重合,但是曲线比较贴近样本分布轨迹。第三张图是过拟合,曲线很好的拟合了样本,跟样本非常重叠,同时样本中的噪音数据也被拟合,噪音数据影响了模型训练。

过拟合

一张图来说明过拟合:
过拟合
过拟合会造成模型变得复杂,并尽可能拟合训练集,造成在训练集上的准确率特别高,这里就会有一个问题就是:训练集是不靠谱的,其中有容错的数据。直接点,训练集中特别是十几万的数据,会有脏数据,这些脏数据也成为负样本,会造成模型训练有误差,模型在训练的时候并不清楚那些是脏数据,它只会不停的去拟合这些数据,所以过拟合的模型在训练集上准确率特别高,但训练集其实只是整个数据集中的一部分,其包含两部分特征,一部分是整个数据集共有的特征,一部分是训练集自身共有的特征,当过拟合时,模型学到的是这两部分的特征,此时拿模型去在测试集上测试时,因为测试集不包含训练集自身共有的特征,所以测试集在模型上就不会取得很好的效果。因此需要防止过拟合。主要优缺点如下:

1、优点

训练集的准确率很高,其实这个训练集准确率高只能说明 模型拟合数据不错,但是 针对测试集来说效果可能就不一定了,这个很难评估,不过大致可以说明模型还是可以的。

2、缺点

模型在测试集上的效果不好,过度的拟合噪音数据,过度拟合训练集中特有特征,所以过拟合的模型在测试集上表现都非常差。

欠拟合

欠拟合比较好理解就是模型简单或者说语料集偏少、特征太多,在训练集上的准确率不高,同时在测试集上的准确率也不高,这样如何训练都无法训练出有意义的参数,模型也得不到较好的效果,这个优缺点就不说了,基本上欠拟合就选择合理的模型,合理的特征,提高训练集就行。

防止过拟合

  • 1.、early stopping
    Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。 Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。
  • 2.、数据集扩增
    通过扩充数据集,让训练集中的噪音数据占比越来越小,这样噪音对模型的影响就较小,防止模型过拟合。
  • 3.、正则化
    正则化是指在优化目标函数或代价函数是,在目标函数后面加上一个正则项。正则项通常有L1正则项和L2正则项。
  • 4、 Dropout
    正则是通过在代价函数后面加上正则项来防止模型过拟合。在神经网络中,有一种方法是通过修改自身结构来实现的,叫做Dropout。这是对网络训练的一种技巧,在训练过程中随机删除一些隐藏层的神经元,同时保证输入层和输出层的神经元不变。
  • 5、挑选合适的模型
    模型不合适,挑选相对简单的模型进行训练,对模型中的参数、训练层数等做限制。

参考博客

过拟合为什么不好
机器学习总结(三):如何防止过拟合
机器学习防止欠拟合、过拟合方法

猜你喜欢

转载自blog.csdn.net/randompeople/article/details/82107740