本文介绍在模型评估可能会出现的过拟合与欠拟合两种现象,并对解决方法做一个总结。
解释
我们先通过图片来直观地解释这两种现象:
在上图中,右边是过拟合的情况,它指的是模型对于训练数据拟合过度,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。这是因为在这种条件下,模型过于复杂,导致把噪声数据的特征也学习到了模型中,导致模型的泛化能力下降,从而在后期的应用过程中很容易输出错误的预测结果。
左边是欠拟合的情况,它指的是在训练和预测时的表现都不好,这样的模型没有很好地捕捉到数据地特征,从而不能够很好地拟合数据。
相比而言,中间是拟合适当的情况,这种模型在应用中就具有很好的鲁棒性。
解决方法
针对过拟合
获取更多数据
更多的样本可以让模型学到更多有效的特征,从而减小噪声的影响。
当然,一般情况下直接增加数据是很困难的,因此我们需要通过一定的规则来扩充训练数据。比如,在图像分类问题上,我们可以使用数据增强的方法,通过对图像的平移、旋转、缩放等方式来扩充数据;更进一步地,可以使用生成式对抗网络来合成大量新的训练数据。降低模型复杂度
模型复杂度过高是数据量较小时过拟合的主要原因。适当降低模型的复杂度可以避免模型拟合过多的噪声。比如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。注意:网络深度增加引起的准确率退化不一定是过拟合引起的,这是因为深度造成的梯度消失、梯度爆炸等问题,这在ResNet的论文中有讨论,详细可以看我的博文deep-learning笔记:使网络能够更深——ResNet简介与pytorch实现。
正则化方法
这里的方法主要是权重正则化法,具体说明可以参考machine-learning笔记:机器学习中正则化的理解。交叉验证
交叉验证包括简单交叉验证(数据丰富时)、S折交叉验证(最常用)和留一交叉验证(数据匮乏时)。集成学习
即把多个模型集成在一起,从而降低单一模型的过拟合风险。主要有Bagging(bootstrap aggregating)和Boosting(adaptive boosting)这两种集成学习方法。
针对欠拟合
解决欠拟合问题也可以参照解决过拟合问题的思路;
模型选择准则
模型选择的信息准则有很多,我这里介绍我知道的两个比较常用的模型选择准则:
AIC准则
赤池信息准则(Akaike Information Criterion,AIC)公式定义如下:其中k表示模型参数个数(复杂度),L表示经验误差(似然函数)。
当需要从一组可供选择的模型中选择最佳模型时,通常选择AIC最小的模型。BIC准则
贝叶斯信息准则(Bayesian Information Criterion,BIC)是对AIC准则的改进,定义如下:与AIC不同,这里k的系数不再是常数。其中n代表的是样本量(数据量),这样,BIC准则就与样本量相关了。当样本量足够时,过拟合的风险变小,我们就可以允许模型复杂一些。
这里再次附上这张直观的图片,方便理解与体会。简析可参考machine-learning笔记:机器学习中正则化的理解。