西瓜书笔记:第八章 集成学习

1.集成学习

集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,用以达到减小方差
(bagging)、偏差(boosting)或改进预测(stacking)的效果。
集成学习有如下特点:

  • 将多个分类方法(可以是不同的算法,也可以是相同的算法)聚集在一起,以提高分类的准确率。
  • 集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类。
  • 严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。
  • 通常一个集成分类器的分类性能会好于单个分类器
  • 如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。

2.Bagging(Bootstrap Aggregating)

Bagging和Boosting都是ensemble learing 中的学习框架,代表着不同的思想。

  • boosting派系,它的特点是各个弱学习器之间有依赖关系。
  • bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。
  • Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”
  • 在这里插入图片描述随机采样(bootsrap)就是从我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回。也就是说,之前采集到的样本在放回后有可能继续被采集到。对于我们的Bagging算法,一般会随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。
  • bagging算法流程
    在这里插入图片描述

3.Boosting

Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。Boosting是一种提高任意给定学习算法准确度的方法。它的思想起源于 Valiant提出的 PAC( Probably Approxi mately Correct)学习模型。
关于Boosting的两个核心问题:

1)在每一轮如何改变训练数据的权值或概率分布?
  通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

2)通过什么方式来组合弱分类器?
  通过加法模型将弱分类器进行线性组合,比如:
  AdaBoost(Adaptive boosting)算法:刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。
  GBDT(Gradient Boost Decision Tree),每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型
在这里插入图片描述

Bagging,Boosting二者之间的区别

1、Bagging和Boosting的区别:

1)样本选择上:
  Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
  Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:
  Bagging:使用均匀取样,每个样例的权重相等
  Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:
  Bagging:所有预测函数的权重相等。
  Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:
  Bagging:各个预测函数可以并行生成
  Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

4、Stacking

Stacking的思想是一种有层次的融合模型,比如我们将用不同特征训练出来的三个GBDT模型进行融合时,我们会将三个GBDT作为基层模型,在其上在训练一个次学习器(通常为线性模型LR),用于组织利用基学习器的答案,也就是将基层模型的答案作为输入,让次学习器学习组织给基层模型的答案分配权重。
Stacking的主要思想是训练模型来学习使用底层学习器的预测结果,下图是一个5折stacking中基模型在所有数据集上生成预测结果的过程,次学习器会基于模型的预测结果进行再训练,单个基模型生成预测结果的过程是:

  1. 首先将所有数据集生成测试集和训练集(假如训练集为10000,测试集为2500行),那么上层会进行5折交叉检验,使用训练集中的8000条作为喂养集,剩余2000行作为验证集(橙色)。
    在这里插入图片描述
    每次验证相当于使用了蓝色的8000条数据训练出一个模型,使用模型对验证集进行验证得到2000条数据,并对测试集进行预测,得到2500条数据,这样经过5次交叉检验,可以得到中间的橙色的52000条验证集的结果(相当于每条数据的预测结果),52500条测试集的预测结果。

  2. 接下来会将验证集的52000条预测结果拼接成10000行长的矩阵,标记为A1,而对于52500行的测试集的预测结果进行加权平均,得到一个2500一列的矩阵,标记为B1。
    在这里插入图片描述

  3. 上面得到一个基模型在数据集上的预测结果A1、B1,这样当我们对3个基模型进行集成的话,相于得到了A1、A2、A3、B1、B2、B3六个矩阵。
    以上就是Stacking的思想,进行Stacking集成同样需要基学习器尽量保持独立,效果相近。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值