在模型的评估过程中,我们经常会遇到“过拟合”和“欠拟合”的情况,如何针对这些情况进行调整是改进机器学习算法的关键,特别是在实际项目中更应该采用多种方法来处理“过拟合”和“欠拟合”。
什么是“过拟合”和欠拟合
小编用一个例子来为大家解释:小明同学在大学本科期间的学习非常优异,每次的英语考试成绩都是满分,突然有一个小明想去美国留学来提升自己。经过半年的准备,小明踏上了留美之路,当他来到美国的华盛顿街头,信心满满的向一个人打招呼:"Dear gentlewoman, How fares our gracious lady",别人一脸疑惑,这恐怕是个疯子吧。同样只学过几个英语单词的小李也来到了华盛顿的街头,也向陌生人打了招呼:"Good",别人也是一脸疑惑,这个人到底想要干什么。在故事中的小明就属于过拟合的情况,而小李则属于欠拟合的情况,用一幅图表示:
中间一幅图是正常的模型,第一幅图中的线没有很好的捕捉到数据的特征,第三幅图拟合的情况过于复杂,把噪声也学习到了模型中。概括来说就是:过拟合是指模型对于训练数据集拟合过当的情况,在训练集上表现很好,但是在测试集和新数据上表现较差。欠拟合是指模型在训练集和测试集上表现都不好的情况。
通常,我们度量模型在测试集样本上的性能,来评估机器学习模型的泛化(在先前未观测到的输入上表现良好的能力被称为泛化)能力。下面要做的事情就是如何避免过拟合和欠拟合的发生
(1)通过调整模型的容量来控制模型:
通俗的说,模型的容量是指其拟合各种函数的能力。容量低的模型可能会出现欠拟合,容量高的模型可能会出现过拟合。具体的做法是当模型出现过拟合时,可以适当的降低模型的复杂度,避免模型拟合过多的噪声;当模型出现欠拟合时,可以适当的增加模型的复杂度,使模型拥有较强的拟合能力。
(2)正则化方法:
例如在线性回归时用到的L2正则
其中λ是我们提前挑选的值,控制我们偏好小范数的程度。在线性回归中我们希望上式越小越好,当λ=0时,我们没有任何偏好,越大的λ偏好范数越小的权重。如下图所示:
过大的λ值,使我们偏好更小的w,容易形成图中所示的常函数的情况。而过小的的λ更容易使我们偏好更大的w值,从而出现图中的过拟合现象。
(3)调整数据
获得更多的训练数据可以有效的解决过拟合问题,因为更多的训练数据能让模型学习到更多的有效特征,减少噪声对其的影响。比如在神经网络中,我们可以对图片做平移、选装、缩放等处理。添加数据的有效特征可以有效解决欠拟合的问题,当特征不足或者特征与样本标签的相关性不强都容易导致欠拟合的发生。
(4)集成学习
对于过拟合还可以使用集成学习的方法,把多个模型集成在一起,也可以有效的降低单一模型的过拟合。
更多内容请扫描下方二维码关注小编公众号:程序员大管