过拟合会造成模型变得复杂,并尽可能拟合训练集,造成在训练集上的准确率特别高,这里就会有一个问题就是:训练集是不靠谱的,其中有容错的数据。直接点,训练集中特别是十几万的数据,会有脏数据,这些脏数据也成为负样本,会造成模型训练有误差,模型在训练的时候并不清楚那些是脏数据,它只会不停的去拟合这些数据,所以过拟合的模型在训练集上准确率特别高,但训练集其实只是整个数据集中的一部分,其包含两部分特征,一部分是整个数据集共有的特征,一部分是训练集自身共有的特征,当过拟合时,模型学到的是这两部分的特征,此时拿模型去在测试集上测试时,因为测试集不包含训练集自身共有的特征,所以测试集在模型上就不会取得很好的效果。因此需要防止过拟合。主要优缺点如下: 训练集的准确率很高,其实这个训练集准确率高只能说明 模型拟合数据不错,但是 针对测试集来说效果可能就不一定了,这个很难评估,不过大致可以说明模型还是可以的。 模型在测试集上的效果不好,过度的拟合噪音数据,过度拟合训练集中特有特征,所以过拟合的模型在测试集上表现都非常差。 欠拟合比较好理解就是模型简单或者说语料集偏少、特征太多,在训练集上的准确率不高,同时在测试集上的准确率也不高,这样如何训练都无法训练出有意义的参数,模型也得不到较好的效果,这个优缺点就不说了,基本上欠拟合就选择合理的模型,合理的特征,提高训练集就行。 1、early stopping Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。 Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。 2、数据集扩增 通过扩充数据集,让训练集中的噪音数据占比越来越小,这样噪音对模型的影响就较小,防止模型过拟合。 3、正则化 正则化是指在优化目标函数或代价函数是,在目标函数后面加上一个正则项。正则项通常有L1正则项和L2正则项。 4、 Dropout 正则是通过在代价函数后面加上正则项来防止模型过拟合。在神经网络中,有一种方法是通过修改自身结构来实现的,叫做Dropout。这是对网络训练的一种技巧,在训练过程中随机删除一些隐藏层的神经元,同时保证输入层和输出层的神经元不变。 5、挑选合适的模型 模型不合适,挑选相对简单的模型进行训练,对模型中的参数、训练层数等做限制。 6、可变化的学习率 ———————————————— 原文链接: