集成学习:bagging、 boosting、stacking

一、什么是集成学习

集成学习通过构建并结合多个学习器来完成学习任务。要获得好的集成,学习器之间要具有差异性。

一. 集成学习的三大类:

  • 个体学习器间不存在强依赖关系、可同时生成的,用于减少方差的 bagging,如 Random Forest
  • 个体学习器间存在强依赖关系、必须串行生成的,用于减少偏差的 boosting, 如 Adaboosting, GBDT
  • 用于提升预测结果的stacking,投票机制
1. Bagging – 降低方差

Bagging使用装袋采样来获取数据子集训练基础学习器。最常用的集成算法原模型是随机森林。
算法过程如下:

  1. 从原始样本集中抽取训练集。每轮从原始样本集中有放回的抽样(可能抽到重复的样本),抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中).共进行k轮抽取,得到k个训练集.(k个训练集相互独立

为什么有放回:如果不是有放回的抽样,那么每棵树的训练样本都是不同的,都是没有交集的,这样每棵树都是"有偏的",都是绝对"片面的"(当然这样说可能不对),也就是说每棵树训练出来都是有很大的差异的;而随机森林最后分类取决于多棵树(弱分类器)的投票表决,这种表决应该是"求同",因此使用完全不同的训练集来训练每棵树这样对最终分类结果是没有帮助的,这样无异于是"盲人摸象"。)

  1. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型,所有弱分类器的权重相等
  2. 对分类任务使用投票的方式集成,而回归任务通过平均的方式集成。
    在这里插入图片描述

在随机森林中,每个树模型都是装袋采样训练的。另外,特征也是随机选择的,最后对于训练好的树也是随机选择的。这种处理的结果是随机森林的偏差增加的很少,而由于弱相关树模型的平均,方差也得以降低,最终得到一个方差小,偏差也小的模型。

在这里插入图片描述

2. boosting – 降低偏差

Boosting 每次都使用全部样本进行训练

a. AdaBoost
  • AdaBoost 主要是训练一系列的弱学习器,前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。对于错分数据给予较大的权重每一轮的训练集不变
  • 将各个训练得到的弱分类器组合成强分类器。加大分类误差率小的弱分类器的权重,而降低分类误差率大的弱分类器的权重
  • 对于训练好的弱分类器,如果是分类任务按照权重进行投票,而对于回归任务进行加权,然后再进行预测。
    在这里插入图片描述
b. GBDT
  • 另一种 Boosting 方法GBDT(Gradient Boost Decision Tree),与 AdaBoost 不同,GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型。
  • gbdt 无论用于分类还是回归一直都是使用的CART 回归树。不会因为我们所选择的任务是分类任务就选用分类树(分类问题转化成对概率的回归),核心是因为gbdt 每轮的训练是在上一轮的训练的残差基础之上进行训练的。这里的残差就是当前模型的负梯度值 。这个要求每轮迭代的时候,弱分类器的输出的结果相减是有意义的。残差相减是有意义的。如果选用的弱分类器是分类树,类别相减是没有意义的。

具体到分类这个任务上面来,我们假设样本 X 总共有 K类。来了一个样本 x,我们需要使用gbdt来判断 x 属于样本的哪一类。

  • 第一步 我们在训练的时候,是针对样本 X 每个可能的类都训练一个分类回归树。举例说明,目前样本有三类,也就是 K = 3。样本 x 属于 第二类。那么针对该样本 x 的分类结果,其实我们可以用一个 三维向量 [0,1,0] 来表示。0表示样本不属于该类,1表示样本属于该类。由于样本已经属于第二类了,所以第二类对应的向量维度为1,其他位置为0。

  • 针对样本有 三类的情况,我们实质上是在每轮的训练的时候是同时训练三颗树。第一颗树针对样本x的第一类,输入为(x,0)。第二颗树输入针对 样本x 的第二类,输入为(x,1)。第三颗树针对样本x 的第三类,输入为(x,0)

  • 在这里每颗树的训练过程其实就是就是我们之前已经提到过的CATR TREE 的生成过程。在此处我们参照之前的生成树的程序 即可以就解出三颗树,以及三颗树对x 类别的预测值f1(x),f2(x),f3(x)。那么在此类训练中,我们仿照多分类的逻辑回归 ,使用softmax 来产生概率,则属于类别 1 的概率
    在这里插入图片描述

  • 并且我们我们可以针对类别1 求出 残差y11(x)=0−p1(x);类别2求出残差y22(x)=1−p2(x);类别3求出残差y33(x)=0−p3(x)。

  • 然后开始第二轮训练 针对第一类 输入为(x,y11(x)), 针对第二类输入为(x,y22(x)), 针对 第三类输入为 (x,y33(x)).继续训练出三颗树。一直迭代M轮。每轮构建 3颗树。
    在这里插入图片描述

  • 当训练完毕以后,新来一个样本 x1 ,我们需要预测该样本的类别的时候,便可以有这三个式子产生三个值,f1(x),f2(x),f3(x)。样本属于 某个类别c的概率为
    在这里插入图片描述

3. stacking

Stacking是通过一个元分类器或者元回归器来整合多个分类模型或回归模型的集成学习技术。
基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值