如何有效地识别“过拟合”和“欠拟合”现象,并有针对性地进行模型调整,是不断改进机器学习模型的关键。
- 过拟合
- 模型对于训练数据拟合呈过当的情况
- 反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差
- 模型过于复杂,容易把噪声数据的特征也学习到模型中,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果
- 欠拟合
- 模型在训练和预测时表现都不好的情况
- 没有很好地捕捉到数据的特征,不能够很好地拟合数据
7.1 降低“过拟合”风险的方法
(1)获得更多的训练数据
- 使用更多的训练数据是解决过拟合问题最有效的手段
- 因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响
- 直接增加实验数据一般是很困难的,可以通过一定的规则来扩充训练数据
- 在图像分类的问题上,可以通过图像的平移、旋转、缩放等方式扩充数据
- 更进一步地,可以使用生成式对抗网络来合成大量的新训练数据
(2)降低模型复杂度
- 在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。
- 在神经网络模型中减少网络层数、神经元个数等
- 在决策树模型中降低树的深度、进行剪枝等
(3)正则化方法
-
给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中
- 以L2正则化为例,这样,在优化原来的目标函数C0的同时,也能避免权值过大带来的过拟合风险
C = C 0 + λ 2 n ⋅ ∑ i w i 2 C=C_0+\frac{\lambda}{2n}\cdot\sum_iw_i^2 C=C0+2nλ⋅i∑wi2
(4)集成学习方法
- 把多个模型集成在一起,来降低单一模型的过拟合风险
- 如Bagging方法
7.2 降低“欠拟合”风险的方法
(1)添加新特征
- 当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合
- 通过挖掘“上下文特征”“ID类特征”“组合特征”等新的特征,往往能够取得更好的效果
- 如因子分解机、梯度提升决策树、Deep-crossing等都可以成为丰富特征的方法
(2)增加模型复杂度
- 增加模型的复杂度可以使模型拥有更强的拟合能力
- 在线性模型中添加高次项
- 在神经网络模型中增加网络层数或神经元个数等
(3)减小正则化系数
- 正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。