机器学习中的过拟合问题以及解决方案


笔者希望该笔记能够记录每个机器学习算法的过拟合问题。


发生过拟合的主要原因可以有以下三点:

(1)数据有噪声

(2)训练数据不足,有限的训练数据

(3)训练模型过度导致模型非常复杂

(参考文献:大白话解释模型产生过拟合的原因)


——————————————————————————


相关内容:

1、 R语言︱ROC曲线——分类器的性能表现评价

2、机器学习中的过拟合问题

3、R语言︱机器学习模型评估方案(以随机森林算法为例)


——————————————————————————



过拟合问题举例



右图在训练数据上拟合完美,但是预测第11个时候,

左图虽然拟合不完全,但是更合理;右图的-953,误差极大。



一、随机森林不会发生过拟合的原因


 

在建立每一棵决策树的过程中,有两点需要注意 -采样与完全分裂。首先是两个随机采样的过程,random forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。

假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。

然后进行列采样,从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。 按这种算法得到的随机森林中的每一棵都是很弱的,但是大家组合起来就很厉害了。

可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数据),可以用不同的角度去看待它,最终由各个专家,投票得到结果。



二、(1)数据有噪声

为什么数据有噪声,就可能导致模型出现过拟合现象呢?


所有的机器学习过程都是一个search假设空间的过程!我们是在模型参数空间搜索一组参数,使得我们的损失函数最小,也就是不断的接近我们的真实假设模型,而真实模型只有知道了所有的数据分布,才能得到。


往往我们的模型是在训练数据有限的情况下,找出使损失函数最小的最优模型,然后将该模型泛化于所有数据的其它部分。这是机器学习的本质!


那好,假设我们的总体数据如下图所示:



我这里就假设总体数据分布满足一个线性模型y = kx+b,现实中肯定不会这么简单,数据量也不会这么少,至少也是多少亿级别,但是不影响解释。反正总体数据满足模型y


此时我们得到的部分数据,其中还有噪声的话,如图所示:




那么由上面训练数据点训练出来的模型肯定不是线性模型(总体数据分布下满足的标准模型),比如训练出来的模型如下:





那么我拿着这个有噪声训练的模型,在训练集合上通过不断训练,可以做到损失函数值为0,但是拿着这个模型,到真实总体数据分布中(满足线性模型)去泛化,效果会非常差,因为你拿着一个非线性模型去预测线性模型的真实分布,显而易得效果是非常差的,也就产生了过拟合现象!



三、训练数据不足,有限的训练数据



当我们训练数据不足的时候,即使得到的训练数据没有噪声,训练出来的模型也可能产生过拟合现象,解释如下:

假设我们的总体数据分布如下:




那么我拿着这个有噪声训练的模型,在训练集合上通过不断训练,可以做到损失函数值为0,但是拿着这个模型,到真实总体数据分布中(满足线性模型)去泛化,效果会非常差,因为你拿着一个非线性模型去预测线性模型的真实分布,显而易得效果是非常差的,也就产生了过拟合现象!
那么由这个训练数据,我得到的模型是一个线性模型,通过训练较多的次数,我可以得到在训练数据使得损失函数为0的线性模型,拿这个模型我去泛化真实的总体分布数据(实际上是满足二次函数模型),很显然,泛化能力是非常差的,也就出现了过拟合现象!



四、维度灾难的实例讲解

如果只使用一个特征,例如使用图片的平均红色程度red。

图2展示了只使用一个特征并不能得到一个最佳的分类结果。因此,我们觉得增加第二个特征:图片的平均绿色程度green。

图3. 增加第二个特征仍然不能线性分割,即不存在一条直线能够将猫和狗完全分开

最后,我们决定再增加第三个特征:图片的平均蓝色程度,得到了三维特征空间:

图4. 增加第三个特征实现了线性可分,即存在一个平面完全将猫和狗分开来

在三维特征空间,我们可以找到一个平面将猫和狗完全分开。这意味着三个特征的线性组合可以对10个训练样本进行最佳的分类。

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值