过拟合的处理
过拟合是什么
机器学习中过拟合是经常出现的问题,那什么是过拟合呢?
我们通过一定的机器学习算法,对训练样本进行训练,如果我们对这个样本学习的太好了,就可能出现过拟合。因为我们的训练样本中可能存在一些噪声数据,如果我们把这部分也学的很好,那我们训练出来的模型,就会对现有的数据拟合的很好,而对未知的数据拟合性很差。
引用莫烦的话说就是:自负。也就是机器学习模型于自信. 已经到了自负的阶段了. 那自负的坏处, 大家也知道, 就是在自己的小圈子里表现非凡, 不过在现实的大圈子里却往往处处碰壁.
过拟合无法彻底的避免,我们能做到的只是尽可能的缓解。下面介绍一些常用的方法。
- 增加数据, 学习到更多的特性
- 加入正则项,也就是防止目标函数过于复杂
- Dropout
- early stopping
- 决策树的剪枝
L0 L1 L2
正则化项即罚函数,该项对模型向量进行“惩罚”,从而避免单纯最小二乘问题的过拟合问题。具体这部分看 深入理解 L1 L2 正则部分 吧。
Dropout
还有一种专门用在神经网络的正规化的方法, 叫作 dropout. 在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”. 用一个不完整的神经网络训练一次.
到第二次再随机忽略另一些, 变成另一个不完整的神经网络. 有了这些随机 drop 掉的规则, 我们可以想象其实每次训练的时候, 我们都让每一次预测结果都不会依赖于其中某部分特定的神经元. 像 l1, l2 正规化一样, 过度依赖的 W , 也就是训练参数的数值会很大, l1, l2 会惩罚这些大的 参数. Dropout 的做法是从根本上让神经网络没机会过度依赖.