模型训练中拟合现象的分析和处理办法

举报
名字好难 发表于 2020/10/21 17:31:37 2020/10/21
【摘要】 在模型训练和评估调整的过程中,我们往往会遇到“过拟合”或“欠拟合”的情况。如何有效地识别“过拟合”和“欠拟合”现象,并有针对性地进行模型调整,是不断改进训练模型的关键。特别是在实际项目中,采用多种方法、从多个角度降低“过拟合”和“欠拟合”的风险是算法工程师应当具备的领域知识。

在模型训练和评估调整的过程中,我们往往会遇到“过拟合”或“欠拟合”的情况。如何有效地识别“过拟合”和“欠拟合”现象,并有针对性地进行模型调整,是不断改进训练模型的关键。特别是在实际项目中,采用多种方法、从多个角度降低“过拟合”和“欠拟合”的风险是算法工程师应当具备的领域知识。

我们将模型在训练集上的误差称之为训练误差(经验误差),在新的数据集(比如测试集)上的误差称之为泛化误差(也可以说为在总体样本上的误差)。对于一个好的模型应该是经验误差约等于泛化误差,也就是经验误差要收敛于泛化误差。

过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。欠拟合指的是模型在训练和预测时表现都不好的情况。具体表现如下图1所示:

image.png

图1

可以看出,图(a)是欠拟合的情况,拟合的黄线没有很好地捕捉到数据的特征,不能够很好地拟合数据。图(c)则是过拟合的情况,模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果。

image.png

图2

从图2中可以看出,如果模型一直训练下去,训练集上的误差可以无限小,但此时的泛化误差就很大。

欠拟合和过拟合都是非正常现象,我们需要通过不同的手段使得模型训练的结果符合使用要求。

降低“欠拟合”风险的方法

(1)添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘“上下文特征”“ID类特征”“组合特征”等新的特征,往往能够取得更好的效果。在深度学习潮流中,有很多模型可以帮助完成特征工 程,如因子分解机、梯度提升决策树、Deep-crossing等都可以成为丰富特征的方法。

(2)增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。 

(3)减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现 象时,则需要有针对性地减小正则化系数。

降低“过拟合”风险的方法

(1)从数据入手,获得更多的训练数据。使用更多的训练数据是解决过拟合 问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。当然,直接增加实验数据一般是很困难的,但是可以通过一定的规则来扩充训练数据。比如,在图像分类的问题上,可以通过图像的平移、旋转、 缩放等方式扩充数据;更进一步地,可以使用生成式对抗网络来合成大量的新训练数据。

(2)降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因 素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。

(3)正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加 入到损失函数中。以L2正则化为例:

image.png

这样,在优化原来的目标函数C0的同时,也能避免权值过大带来的过拟合风险。

(4)Dropout。Dropout是深度学习中最常用的控制过拟合的方法,主要用在全连接层处,该方法是在一定的概率上(通常设置为0.5,原因是此时随机生成的网络结构最多)隐式的去除网络中的神经元,具体如图3:

image.png

Dropout会导致网络的训练速度慢2、3倍,而且数据小的时候,Dropout的效果并不会太好。因此只会在大型网络上使用。

(5)集成学习方法。集成学习是一种在机器学习中处理过拟合的常用方法,把多个模型集成在一起,来降低单一模型的 过拟合风险,如Bagging方法。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。