过拟合、欠拟合

1、过拟合和欠拟合

无论在机器学习还是深度学习建模当中都可能会遇到两种最常见结果,一种叫过拟合(over-fitting )另外一种叫欠拟合(under-fitting)。

首先谈谈什么是过拟合呢?什么又是欠拟合呢?网上很直接的图片理解如下:

所谓过拟合(over-fitting)

其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。打个比喻就是当我需要建立好一个模型之后,比如是识别一只狗狗的模型,我需要对这个模型进行训练。恰好,我训练样本中的所有训练图片都是二哈,那么经过多次迭代训练之后,模型训练好了,并且在训练集中表现得很好。基本上二哈身上的所有特点都涵括进去,那么问题来了!假如我的测试样本是一只金毛呢?将一只金毛的测试样本放进这个识别狗狗的模型中,很有可能模型最后输出的结果就是金毛不是一条狗(因为这个模型基本上是按照二哈的特征去打造的)。所以这样就造成了模型过拟合,虽然在训练集上表现得很好,但是在测试集中表现得恰好相反,在性能的角度上讲就是协方差过大(variance is large),同样在测试集上的损失函数(cost function)会表现得很大。

所谓欠拟合(under-fitting)

相对过拟合欠拟合还是比较容易理解。还是拿刚才的模型来说,可能二哈被提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至二哈都无法识别。

 

2、过拟合原因

(1)建模样本抽取错误,包括(但不限于)样本数量太少。

抽样方法错误, 抽样时没有足够正确考虑业务场景或业务特点,不能有效足够代表业务逻辑或业务场景。

(2)参数太多、模型复杂度高。

(3)决策树模型没有合理剪枝

如果我们对于决策树的生长没有合理的限制和修剪的话, 决策树的自由生长有可能每片叶子里只包含单纯的事件数据(event)或非事件数据(no event), 可以想象,这种决策树当然可以完美匹配(拟合)训练数据, 但是一旦应用到新的业务真实数据时,效果是一塌糊涂。

(4)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征

 

3、判断是否过拟合?

欠拟合情况:随着训练样本数增大,训练集得分和验证集得分收敛,并且两者的收敛值很接近。

过拟合情况:随着训练样本数增大,训练集得分和验证集得分相差还是很大。

 

4、如何解决过拟合?

(1)权重衰减、正则化:

回想下我们的模型,假如我们采用梯度下降算法将模型中的损失函数不断减少,那么最终我们会在一定范围内求出最优解,最后损失函数不断趋近0。那么我们可以在所定义的损失函数后面加入一项永不为0的部分,那么最后经过不断优化损失函数还是会存在。其实这就是所谓的“正则化”。

正则化方法包括L1正则和L2正则, 而正则一般是在目标函数之后加上对于的范数。但是在机器学习中一般使用L2正则

  • L1 范数是指向量中各个元素绝对值之和。
  • L2 范数是指向量各元素的平方和然后求平方根。可以使得W的每个元素都很小,都接近于0, 可以使得W的每个元素都很小,都接近于0, 但与L1范数不同,它不会让它等于0,而是接近于0。L2正则项起到使得参数w变小加剧的效果。

但是为什么可以防止过拟合呢?一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低, 对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合, 以提高模型的泛化能力。

下面这张图片就是加入了正则化(regulation)之后的损失函数。这里m是样本数目,表示的是正则化系数。

注意:当t(landa)过大时,则会导致后面部分权重比加大,那么最终损失函数过大,从而导致欠拟合

   当t(landa)过小时,甚至为0,导致过拟合。

(2)dropout

dropout的思想是当一组参数经过某一层神经元的时候,去掉这一层上的一部分神经元,让参数只经过一部分神经元进行计算。注意这里的去掉并不是真正意义上的去除,只是让参数不经过一部分神经元计算而已。

(3)减小网络规模

对于神经网络,参数膨胀原因可能是因为随着网路深度的增加,同时参数也不断增加,并且增加速度、规模都很大。那么可以采取减少神经网络规模(深度)的方法。

(4)增大训练样本

增大训练样本规模同样也可以防止过拟合。

(5)机器学习集成思想

(6)early stop

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值