过拟合问题
- 为了得到一致假设而使假设变得过度复杂称为过拟合(overfitting),过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差。
出现原因?
- 训练集的数量级和模型的复杂度不匹配。训练集的数量要小于模型的复杂度;
- 训练集和测试集特征分布不一致;
- 样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;
- 权值学习迭代次数足够多(overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。
怎么解决?
- 数据集扩增(Data Augmentation)
- 增加训练数据样本。训练集越多,过拟合的概率越小。
- 数据处理-清洗数据
- 丢弃一些不能帮助正确预测的特性。纠正错误的label,或者删除错误数据。
- dropout方法
- 通过修改隐藏层神经元的个数来防止过拟合。
- early stepping
- 是一种迭代次数截断的方法来防止过拟合。即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
- 正则化(Regularization) :L1和L2
- 保留所有特性,但是减少参数的大小。
- L1和L2是正则化项,又叫做罚项,是为了限制模型的参数,防止模型过拟合而加载损失函数后面的一项。
拓展
在 MLlib 中,标准的最小二乘回归不使用正则化。正则化是用于解决过拟合问题的。但是应
用到错误预测值的损失函数会将错误做平方,从而放大损失。这也意味着最小二乘回归对数据中的异常点和过拟合非常敏感。因此对于分类器,我们通常在实际中必须应用一定程度的正则化。
- 线性回归在应用 L2 正则化时通常称为岭回归( ridge regression ),应用 L1 正则化时称为 lasso( least absolute shrinkage and selection operator )。
- 当数据集不大或样本很少时,模型过拟合的可能性很大。因此,十分建议使用如 L1 、 L2 或elastic net regularization 这样的正则表达式。