集成学习(总结)

       集成学习是一种机器学习范式,多个学习器被训练来解决同一个问题。与普通的机器学习方法试图从训练数据中学习一个假设不同,集成方法试图构建一组假设并将它们组合起来,简单理解就是指采用多个弱分类器组成一个强分类器,然后,对数据进行预测,从而提高整体分类器的泛化能力。

       集成方法可以分类为:

  1. Bagging
  2. Boosting
  3. Stacking
  4. Blending

一、Bagging

       Bagging 算法(Boostrap aggregating, 引导聚集算法),又称为装袋算法,以随机森林算法为代表。Bagging 算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。

Bagging 方法有很多种,其主要区别在于随机抽取训练子集的方法不同:

     ①. 如果抽取的数据集的随机子集是样里的随机子集,称为 Pasting

     ②. 如果样例抽取是有放回的,称为 Bagging

     ③. 如果抽取的数据集的随机子集是特征的随机子集,称作随机子空间(Rondom Subspaces)

     ④. 如果基估计器构建在对于样本和特征抽取的子集之上时,称为随机补丁(Rondom Patches)

Bagging 算法流程

     输入为样本集 ,学习轮次为 

     输出为最终的强分类器 

     ①. 对于 : 

       a. 对训练集进行第次随机采样,共采样次,得到包含个样本的采样集 。(需要注意的训练集中的样本存在一直不被采到的可能)。

       b. 用采样集训练第个弱学习器 

     ②. 如果是分类算法预测,则个弱学习器投出最多票数的类别或者类别之一为最终类别。

           如果是回归算法预测,则个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

Bagging 的总结

     ①. Bagging 通过降低基分类器的方差,改善了泛化的误差

     ②. 某性能依赖于基分类器的稳定。

           如果基分类器不稳定,Bagging 有助于降低训练数据的随机波动导致的误差

           如果稳定,则集成分类器的误差主要由基分类器的偏移引起的。

     ③. 由于每个样本被选中的概率是相同的,因此 Bagging 并不侧重于训练数据集中的任何特定实例。
参考:机器篇——集成学习(一) 细说 Bagging 算法

二、Boosting

       Boosting 是一种将弱分类器通过某种方式结合起来得到一个分类性能大大提高的强化分类器的分类算法。该方法可以把一些粗略的经验规则转变为高度准确的预测法则。训练过程为阶梯状,基模型按次序一一进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化。对所有基模型预测的结果进行线性综合产生最终的预测结果。

第一步:初始化训练数据的权重,w1=w2=...=wn=1/N,N为样本的数量。

第二步:训练第一个基模型,计算模型的错误率,计算模型的系数。

第三步:更新数据集的权重,分类错误的数据的权重调大,分类正确的数据权值调小。重新训练一个新的基类模型。重复第二、三步。

第四步:每个模型对测试数据,进行预测。

第五部:对所有基模型的预测结果进行加权求和。准确率高的模型调大权值,准确率低的模型减小权值。

Boosting 的特点:

     ①. Boosting 是一种框架算法,拥有不同系列算法

具体参考机器篇——集成学习(三) 细说 提升(Boosting) 算法

     ②. 可以提高任意给定算法准确度

具体算法:AdaBoost 算法梯度提升(Gradient Boost)算法细说 GBDT 算法(含代码)XGBoost 算法
 

三、Stacking

       Stacking的主要思想是训练模型来学习使用底层学习器的预测结果,下图是一个5折(个人理解是5等分)stacking中基模型在所有数据集上生成预测结果的过程,次学习器会基于模型的预测结果进行再训练,单个基模型生成预测结果的过程是:

1)首先将所有数据集生成测试集和训练集(Training data为10000,Testing data为2500行),在训练集上模型会进行5折交叉检验,使用训练集中的8000条作为喂养集,剩余2000行作为验证集(橙色)

2)每次验证相当于使用了蓝色的8000条数据训练出一个模型,使用模型对验证集进行验证得到2000条数据,这样重复经过5次交叉检验,可以得到中间的橙色的5*2000条验证集的结果,拼接成10000行长的矩阵,标记为A1(相当于每部分数据的预测结果)

3)每次验证的同时会使用蓝色的8000条数据训练出的模型对测试集作预测,得到5*2500条测试集的预测结果。对于5*2500行的测试集的预测结果进行加权平均,得到一个2500一列的矩阵,标记为B1。  每次验证使用的模型一样。

4)上面得到一个基模型在数据集上的预测结果A1、B1,这样当我们对3个基模型(不同的模型)进行集成的话,相于得到了A1、A2、A3、B1、B2、B3六个矩阵。

5)之后将A1、A2、A3并列在一起成10000行3列的矩阵作为training data,B1、B2、B3合并在一起成2500行3列的矩阵作为testing  data,让次学习器(通常是线性模型LR)基于这样的数据进行再训练。再训练是基于每个基础模型的预测结果作为特征(三个特征A1、A2、A3),次学习器会学习训练如何往这样的基模型学习的预测结果上赋予权重w,来使得最后的预测最为准确。

Stacking特点

      (1)模型数量多,计算成本高,但是性能优异(相对于数据量庞大的训练而言)数据集较少时可能会出现效果不如单个训练器的情况,参考模型融合之Stacking(含代码示例)        

      (2)自动化的大型集成策略可以通过添加正则项有效的对抗过拟合,而且并不需要太多的调参和特征选择。所以从原则上讲,stacking非常适合于那些“懒人”        

参考:数据挖掘竞赛利器-Stacking和Blending方式

四、Blending

将训练数据进行划分,划分之后的训练数据一部分训练基模型,一部分经模型预测后作为新的特征训练元模型。测试数据同样经过基模型预测,形成新的测试数据。最后,元模型对新的测试数据进行预测。Blending框架图如下所示:

第一步:将原始训练数据划分为训练集和验证集。

第二步:使用训练集对训练T个不同的模型。

第三步:使用T个基模型,对验证集进行预测,将验证集结果拼接作为次学习器的训练数据。

第四步:使用拼接的验证集结果,训练一个元模型。

第五步:使用T个基模型,对测试数据进行预测,将测试集结果拼接作为新的测试数据。

第六步:使用元模型对新的测试数据进行预测,得到最终结果。

Blending集成方式的优劣:
优点:实现简单,没有太多的理论的分析。
缺点:只使用了一部分数据集作为留出集进行验证,对数据来说是很奢侈浪费。

Stacking和Blending对比

1.Blending方式和Stacking方式很类似,相比Stacking更简单点,两者区别是:        

     *blending是直接准备好一部分10%留出集只在留出集上继续预测,用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。          

2.blending 的优点是:比stacking简单,不会造成数据穿越(所谓数据创越,就比如训练部分数据时候用了全局的统计特征,导致模型效果过分的好),generalizers和stackers使用不同的数据,可以随时添加其他模型到blender中。                

3.缺点在于:blending只使用了一部分数据集作为留出集进行验证,而stacking使用多折交叉验证,比使用单一留出集更加稳健 
 

参考文章:集成学习--Bagging、Boosting、Stacking、Blending

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值