如何防止过拟合及欠拟合
1 过拟合
1.1 定义
是指模型对于训练数据拟合呈现过当的情况,反映到评估指标上就是模型在训练集上的表现很好,但是在测试集上的表现较差。结果就是训练出的模型泛化能力差。
1.2 如何防止过拟合
防止过拟合的方法有4种:
1)增加训练集数据;
该方式是从数据入手,将更多的数据参与到模型的训练中,这是最有效的方法,这样可以让模型学习到更多更有效的特征,降低噪声对模型的影响。
但是往往直接增加数据是困难的,因此可以通过一定的规则来扩充训练数据。列举两种方式:
①如图像分类问题中可以通过对图像的平移,缩放,旋转等方式来扩充;
②也可以使用生成式对抗网络类合成大量数据。
2)降低模型复杂度;
在数据量较少的情况下,模型过于复杂将会导致过拟合,因此可以通过降低模型的复杂度来防止过拟合,这样就可以一定程度上避免模型拟合过多的采样噪声。
比如:
①神经网络中减少网络成熟,神经元个数等;
②决策树中降低树的深度和进行剪枝。
3)增加正则化约束项;
比如将权值的大小加入到损失函数中,避免权值过大带来的过拟合风险。
4)通过集成学习的方式训练模型。
集成学习是把多个模型集成到一起来作为共同的模型,可以降低单一模型的过拟合风险。如bagging方法。
2 欠拟合
2.1 定义
是指模型在训练集合测试集数据上的表现均不好的情况。结果就是训练出的模型表达能力不够,精度不够。
2.2 如何防止欠拟合
防止欠拟合的方法有3种:
1)增加特征数;
当特征不足或者现有特征与样本标签的相关性不强时,模型易出现欠拟合。
可以通过挖掘上下文特征,ID类特征,组合特征等新的特征,可以取得较好的效果。这属于特征工程相关的内容,如因子分解机,梯度提升决策树,deep_crossing都可以丰富特征。
2)增加模型复杂度;
模型简单时其表达能力较差,容易导致欠拟合,因此可以适当地增加模型复杂度,使模型拥有更强的拟合能力。
如线性模型中添加高次项,神经网络中增加网络层数或神经元个数。
3)减小正则化系数。
正则化是用于防止过拟合的,但是当出现欠拟合时,就有必要针对性地减小正则化系数。