机器学习中的“过拟合”和“欠拟合”详解
目录
场景介绍
在模型评估与调整的过程中,我们往往遇到“过拟合”或“欠拟合”的情况。如何有效的识别“过拟合”与“欠拟合”现象,并有针对性的对模型进行调整,是不断改进机器学习模型的关键。特别是在实际项目中,采用多种方法、从多个角度降低“过拟合”与“欠拟合”的风险,是算法工程师应当具备的领域知识。
概念描述
那么什么是过拟合或者欠拟合呢。我们来看看几个具体的例子。
过拟合是指对于训练模型拟合过当的情况,反映到指标上,就是在训练集上表现很好,在测试机和新数据上的表现交叉。
欠拟合是指模型在训练集和测试集都不太好的情况。 上图很形象的描述了过拟合与欠拟合的区别。
降低“过拟合”的常用方法
- 从数据入手,获取更多的训练数据。使用更多的训练数据,是解决过拟合的有效手段,因为更多的样本能让模型学习到更多的有效特征。当然,直接增加实验数据一般是很困难的,但是可以通过一定的规则来扩充训练集。比如在图像分类问题上,可以通过图像的平移、旋转、缩放等方式来产生新的图像,从而添加到训练集中。更进一步的,可以使用生成式对抗网络来合成大量的新训练数据。
- 降低模型的复杂度。在数据较少的时候,模型过于复杂,是产生过拟合的主要因素,适当降低模型的复杂度可以避免模型过多的采样噪声。例如,在训练模型中减少网络层数,神经元个数等;在决策树算法中,降低模型的深度,进行剪枝等。
- 正则化。 给模型的参数加上一定的正则约束,比如将权值较小的加入到损失函数中。可以避免权值过大给模型带来的过拟合风险。
- 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。
降低“欠拟合”的常用方法
- 添加新特征。当特征不足或者现有特征与样本的相关性不强时,模型容易出现欠拟合。通过挖掘“上下文”特征“ID类特征”“组合特征”等新的特征,往往能够获得更好的效果。在深度学习中,很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、Deep_crossing等都可以成为丰富特征的方法。
- 增加模型的复杂度。简单的模型学习能力较差,通过增加模型的复杂度,可以使模型具有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中添加网络的层数或者神经元个数等。
- 减少正则化系数。正则化是用来方式过拟合的,但是模型出现欠拟合的时候,则需要有针对性的减少正则化系数。
过拟合与欠拟合的处理,属于“模型评估”的一部分,所以,正在学习机器学习和深度学习的同学们,一起加油吧!