机器学习23:过拟合和欠拟合的常用处理方法

机器学习23:过拟合和欠拟合的常用处理方法(整理)

1.过拟合和欠拟合概述:

           在机器学习和深度学习的训练过程中,经常会出现过拟合和欠拟合的现象。训练初期模型通常会欠拟合,在对模型进行优化后训练到一定程度的时候就需要解决过拟合的问题。在训练过程中会定义训练误差、验证集误差和测试集误差(泛化误差),训练误差总是减少的,而泛化误差开始会减少,但到一定程度后不减反而增加,这时候便出现了过拟合的现象。

           从直观上理解,欠拟合就是还没有充分学习到数据的特征,仍然有待继续学习,而过拟合则是学习进行的太彻底,以至于把数据的一些局部特征或者噪声带来的特征学到,所以在进行测试的时候泛化误差不佳。

           

2.欠拟合的处理方法:

           (1)增加特征:

                    欠拟合是由于学习不足,可以考虑添加特征,从数据中挖掘出更多的特征,有时候还需要对特征进行变换,使用组合特征和高次特征。

           (2)增加模型复杂度:

                     模型简单也会导致欠拟合,例如线性模型只能拟合一次函数的数据。尝试使用更高级的模型有助于解决欠拟合,例如使用SVM,神经网络等。

           (3)减少正则化参数:

                     正则化参数是用来防止过拟合的,出现欠拟合的情况也要考虑减少正则化参数。

3.过拟合的处理方法:

           (1)增大训练的数据量:

                    训练数据集要足够大才能使得数据中的特征被模型学习到,还需要清洗数据,尽量减少数据中的噪声,以防止这些噪声被模型学习到。

          (2)正则化:

                    正则化方法常用来处理过拟合,正则化就是再用小数据集拟合模型的过程中强行加入人为偏转,从而控制拟合出来的模型的复杂度以避免过拟合。

                    正则化包括L1正则化和L2正则化,正则项通常是一个范数。L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”,通常可以用来做特征选择,在嵌入式特征选择使用的就是L1范数;L2范数是指向量各元素的平方和然后求平方根,通常的结果会使权重参数变小,使得模型的复杂度变低,符合奥卡姆剃刀原则,以防止过拟合。

           (3)Dropout:

                    在神经网络中经常使用Dropout方法,或者称之为随机失活,每次训练的时候随机去掉一部分隐藏层的神经元,每次单元丢弃都理解为一次再采样,以增大样本量、减少特征量的方式防止过拟合。

           (4)提前终止:

                    提前终止(early stoppping)可以防止模型复杂度过于增加,从而防止过拟合。采用交叉验证提前终止,当交叉验证错误率最小时认为泛化性能最好,这时即使训练集错误率仍然下降,也终止训练。

           (5)逐层归一化(batch normalization):

                     给每层的输出做归一化相当于加了一个线性变换),这样使得下一层的输入相当于高斯分布(正态分布),这个方法相当于下一层的权重参数训练时避免了其输入以偏概全, 因而泛化效果也比较好。

           (6)模型平均(bagging):

                      模型平均方法通过分别训练几个不同的模型,再用相同的测试集在这样一些模型上测试,并收集所有模型在测试集上的输出产生最终输出结果。

                      模型平均方法可以可靠地减少泛化误差,但是会增加计算量和存储量。
4.参考资料:

             (1)https://www.jianshu.com/p/f8b86af75020

发布了84 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39504171/article/details/103918568