转自公众号码渣小姐姐
在模型评估与优化过程中,我们经常会遇到过拟合和欠拟合的情况,那么到底什么是过拟合和欠拟合。
过拟合是指模型对于训练集数据呈现过当的情况,从评估指标上看就是模型在训练集上表现的很好,但是在测试集合新的数据上就表现得很差。
欠拟合是指在训练集上和测试集上表现得都不好的情况。
BAT面试官最喜欢问的问题之一:怎么解决过拟合和欠拟合情况?
左图就是欠拟合的情况,虚线没有很好的区分数据类别,不能够很好的拟合数据,右图的模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果。
想要降低过拟合的风险,该怎么办?
1 从数据入手,获得更多的训练数据。使用更多的训练数据是解决过拟合问题最有效的方法,更多的数据能让模型学习到更多有效的特征,减少噪声的影响。在实际的工作中,直接增加训练数据有一定困难,但是可以通过一定的规则来扩充。比如,在图像分类问题上,通过图像的平移、旋转、缩放等方式扩充数据,更复杂的方法,还可以使用生成对抗网络来合成大量的新的训练数据。
2 降低模型的复杂度。在数据较少的时候,模型过于复杂是产生过拟合的主要原因,适当的降低模型复杂度可以避免模型拟合过多的噪声数据。例如,在决策树模型中,适当的剪枝或者降低树的深度;在神经网络模型中减少网络层数、神经元个数等。
3 正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。
4 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,比如Bagging方法。
想要降低欠拟合的方向,该怎么办?
1 扩展新的特征。当特征不足或者现有的特征数据跟样本标签的相关性不强时,很容易处罚欠拟合现象。通过挖掘上下文特征,组合特征等行的特征,一般都会得到不错的效果。在深度学习潮流中,有很多模型可以帮助完成特征工程,比如因子分解机、梯度提升决策树、Deep-crossing等都可以成为扩展特征的方法。
2 增加模型的负责度。简单模型的学习能力较差,通过增加模型的负责度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或者神经元个数等。
3 减小正则化系数。正则化是用来防止过拟合的,当模型出现欠拟合的时候,需要根据实际情况减小正则化系数。