传统机器学习-集成学习和随机森林

目录

1-什么是集成学习

boosting

bagging

集成学习的优点

2- Soft Voting Classifer

3-Bagging和Pasting

4-oob(out-of-bag)和关于Bagging的更多讨论

5-随机森林和Extra-Trees

6-Ada Boosting和Gradient Boosting

7-Stacking


1-什么是集成学习

         集成学习通过构建并结合多个学习器来完成学习任务,先产生一组“个体学习器”,再用某种策略将他们结合起来。集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化能力。这对“弱学习器”尤为明显。要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,即学习器不能太坏,并且要有“多样性”,即学习器间具有差异。事实上,个体学习器的“准确性”和“多样性”是矛盾的。往往准确性很高之后,要增加多样性就必须牺牲准确性。依据个体学习器的生成方式,集成学习方法大致可以分为两类,(1)个体学习器间存在强依赖关系、必须串行生成的序列化方法,其代表boosting;(2)个体学习器间不存在强依赖关系,可同时生成的并行化方法,其代表bagging和“随机森林”。

boosting

boosting工作机制类似

         boosting方法的训练过程为阶梯状,及基模型按次序一一进行训练,基模型的训练集按照某种策略每次进行一定的转换,然后对所有基模型预测的结果进行线性综合,产生最终的预测结果

         先从初始训练集训练出一个基学习器,再依据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至学习器数目达到事先指定的值T,最终将这T个基学习器进行加权求和。

         boosting族算法最著名的代表是AdaBoost  https://blog.csdn.net/qq_xuanshuang/article/details/105605148

         boosting算法要求学习基学习器能对特定的数据分布进行学习,可通过“重赋权法”实施,即在训练过程的每一轮中,依据学习器的表现为每个训练样本重新赋予一个权重。对无法接受带权样本的基学习器算法,可通过“重采样法”来处理,即在每一轮学习中,依据学习器表现对样本进行重采样,再用重新采样后的样本对基学习器进行训练。

         需要注意的是boosting算法在每一轮学习中,都要检查当前生成的基学习器是否满足基本条件(例如检查当前基分类器是否比随机猜测好),一旦不满足条件,当前基学习器被抛弃,且学习过程停止。这种情况可能未达到指定的基学习器数目T,导致包含的基学习器比较少从而性能不佳。若采用“重采样法”,则可获得“重启动”机会以避免学习过程过早停止,即抛弃不满足条件的当前基学习器后,依据当前分布重新对训练样本进行采样,再基于新的采样结果重新训练基学习器,使得学习过程可以持续到预设的T轮。

        boosting主要关注降低偏差,因此boosting能基于泛化性能相当弱的学习器构建出很强的集成。

bagging

        bagging方法是从训练集中抽样得到每个基模型所需要的子训练集,然后对所有基模型预测的结果进行综合,产生最终的预测结果

        直接基于自助采样法给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现,初始训练集中约有63.2%的样本出现在采样集中。我们可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是bagging的基本流程。剩下的约36.8%的样本可用作验证集来对泛化性能进行“包外估计”。由于是随机采样,因此每次的采样集和原始的训练集不同,和其他采样集也不同,这样就可以得到多个不同的弱学习器

        假定基学习器的计算复杂度为O(m),则Bagging的复杂度大致为T(O(m)+O(s)),考虑到采样与投票/平均过程的复杂度O(s)很小,而T往往是一个不太大的常数,因此,训练一个bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,说明bagging是一个高效的集成学习算法。

        bagging主要关注降低方差(训练样本的随机采样),因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。

        与标准的AdaBoost只适用于二分类任务不同,Bagging能不经修改的用于多分类、回归等任务

集成学习的优点

  1. 从统计方面,学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因为误选导致泛化性能不佳,结合多个学习器则会减少这一风险。
  2. 从计算方面,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险。
  3. 从表示方面,某些学习任务的真实假设可能不再当前学习算法所考虑放入假设空间中,此时若使用单学习器则肯定无效,通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。

2- Soft Voting Classifer

         soft voting classifer:要求每个模型都能估计概率。

3-Bagging和Pasting

集成学习

虽然有很多机器学习方法,但是从投票的角度看,仍然不够多。那么需要创建更多的字模型,集成更多的字模型,子模型之间不能一致,子模型之间要有差异性。

如何创建差异性?

1)每个子模型只看样本数据的一部分。例如:一共有500个样本数据,每个子模型只看100个样本数据。

取样:放回取样(Bagging),不放回取样(Pasting),Bagging更常用。

2)针对特征进行随机采样

3)即针对样本,有针对特征进行随机采样

每个子模型不需要太高的准确率。

        决策树这种非参数学习的模型,更容易产生差异比较大的子模型,很多的参数和剪枝方式更能帮助我们集成的子模型更加有差异和随机性。

4-oob(out-of-bag)和关于Bagging的更多讨论

        直接基于自助采样法给定包含m个样本的数据集,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现,初始训练集中约有63.2%的样本出现在采样集中。

        放回取样导致一部分样本很有可能没有取到,平均大约有37%的样本没有取到。这就可以不使用测试数据集,而使用这部分没有取到的样本做测试/验证;当基学习器是决策树时,可使用这些包外样本来辅助剪枝;当基学习器是神经网络时,可使用包外样本来辅助早期停止以减小过拟合风险。

        Bagging的思路极易进行并行化处理。

5-随机森林和Extra-Trees

        随机森林是bagging的一个扩展变体,RF在以决策树为基础的基学习器构建bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前节点的属性集合(假定有d个属性)中选择一个最优属性;而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。参数k控制了随机性的引入程度:若k=d,则基决策树的构建与传统决策树相同;若k=1,则是随机选择一个属性用于划分;通常推荐k=log_2d

bagging的多样性:

  1. 通过样本扰动(通过对初始训练集采样)

随机森林的多样性:

  1. 样本扰动
  2. 属性扰动

这就使得随机森林最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。同时随机森林的训练效率常优于bagging,因为在个体决策树的构建过程中,bagging使用的是“确定型”决策树,在选择划分属性时要对节点的所有属性进行考察,而随机森林使用的“随机型”决策树则只需要考察一个属性子集。

        sklearn中的随机森林的决策树在节点划分上,在随机的特征子集上寻找最优划分特征。

        Extra-Trees中的决策树在节点划分上,使用随机的特征和随机的阈值。提供额外的随机性,抑制过拟合,但是加大了bias。更快的训练速度。

6-Ada Boosting和Gradient Boosting

          boosting:集成多个模型,每个模型都在尝试增强(boosting)整体的效果。

         Ada Boosting:基础模型可以随意选取(不一定要是决策树),主要思路是样本权重的改变。初始时样本权重一样,后面会依据前一轮学习的结果对样本重新分配权重,前一轮预测对的样本的权重减小,预测错的样本权重加大,然后在此基础上进行下一轮预测。也即着重学习前一轮分类错误的样本。例如下图(深颜色的代表高权重)。

         Gradient Boosting:基础模型只能是决策树,思想该轮是对上一轮残差的拟合。如下图,左面的三个是对残差的学习,右侧的三个是整体的模型,右侧第一个模型即是左侧的第一个模型,右侧的第二个模型是左侧两个模型的和,右侧的第三个模型是左侧的三个模型的和。

7-Stacking

 

参考:https://coding.imooc.com/learn/list/169.html

           机器学习,周志华

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值