集成学习(Ensemble Learning)-bagging-boosting-stacking

45 篇文章 1 订阅
29 篇文章 0 订阅

基本概念

元算法(meta-algorithm),所谓“三个臭皮匠,顶个诸葛亮”,在做决策时,通常会听取多个专家而不只是一个人的意见。例如,医院在遇到罕见病例时会组织多个专家进行临床会诊,共同分析病例以给出手术方案。这就是元算法背后的思路,元算法也叫集成方法(ensemble method)。

集成学习(Ensemble Learning)就是使用一系列学习器进行学习,并使用某种规则将各个学习器的结果进行整合,从而获得比单个学习器效果更好的学习效果的一种方法。集成学习可以用于分类问题,回归问题,特征选取,异常点检测等的集成,本文采用分类进行说明。

弱分类器,weak classifer, 是指分类器仅能对少量样本进行正确分类,其分类效果仅略优于随机猜测。

强分类器,strong classifier, 是指对样本分类的正确率很高的分类器。

有放回采样,sampling with replacement.对于n个样本的训练集T进行采样,每次采用得到的样本被放回原训练集T中,下次对训练集T进行采样时该样本仍有可能被采集到。

无放回采样,sampling without replacement.对于n个样本的训练集T进行采样,每次采样得到的样本不再被放回原训练集T中,以后对训练集T进行采样时,这个样本以后都不会被采样到。

集成学习的条件

通过集成学习提高分类器的整体泛化能力有以下两个条件:

1.基分类器之间具有差异性。如果使用的是同一个分类器集成,集成分类器的性能是不会有提升的。

2.每个基分类器的分类精度必须大于0.5。如下图所示,当基分类器精度小于0.5时,随着集成规模的增加,分类集成分类器的分类精度会下降;但是如果基分类器的精度大于0.5时,集成分类器的最终分类精度是趋近于1的。

å¨è¿éæå¥å¾çæè¿°

 

集成学习的俩个关键点:

1.如何构建具有差异性的基分类器

2.如何对基分类器的结果进行整合

构建差异性分类器一般有以下三种方法:

1.通过处理数据集生成差异性分类器

2.通过处理数据特征构建差异分类器

3.对分类器的处理构建差异性分类器

集成学习常见的三种元算法是Bagging, Boosting和Stacking。Bagging用于提升机器学习算法的稳定性和准确性。Boosting主要用于减少bias(偏差)和variance(方差),是将一个弱分类器转化为强分类器的算法。Stacking是一种组合多个模型的方法。
Bagging(Bootstrap Aggregating, 引导聚合)

bagging,对训练集采用有放回采样。通过对原数据集进行有放回的采样,构建出大小和原数据集T一样的新数据集T1,T2,T3…,然后用这些新的数据集训练多个分类器f1,f2,f3…。最终分类结果根据这些分类器各自结果的投票来决定。

å¨è¿éæå¥å¾çæè¿°

 bagging算法中,基分类器之间不存在依赖关系,基分类器可以并行生成。

bagging的性能依赖于基分类器的稳定性,如果基分类器是不稳定的,bagging有助于减低训练数据的随机扰动导致的误差,但是如果基分类器是稳定的,即对数据变化不敏感,那么bagging方法就得不到性能的提升,甚至会减低。

Bagging算法伪代码

1.给定一个大小为n训练集T;

2.agging通过从T中进行有放回采样,得到n’个新的训练集Ti, 每个Ti的大小为m;

3.将得到的n’个新训练集,分别用于训练分类器,得到n’个结果;

4.将n’个结果进行投票,票数多的为最终分类值。

基于Bagging算法的一个典型例子:随机森林,采用的基分类器是决策树。

Boosting

Boosting,是一个迭代的过程,每次在新分类器中强调上一个分类器中被错误分类的样本(增加错误分类样本的权重),最后将这些模型组合起来的方法。每次对正确分类的样本降权,对错误分类的样本加权,最后分类器是多个弱分类器的加权组合。Boosting没有对样本进行重采样,而是对样本的分布进行了调整。
å¨è¿éæå¥å¾çæè¿°

 boosting算法中,基分类器之间存在强依赖关系,基分类器需要串行生成。

Boosting算法伪代码

1.在训练集T上,训练一个弱分类器;

2.根据上一步的结果对训练集T进行权值调整,训练集T中数据被赋予新的权值:对错分的样本数据增加权重,对正确分类的样本数据进行降低权重;得到权值调整后,更新好的训练集T’;

3.在权值调整后的训练集T’上,进行弱分类器的学习训练;

4.迭代步骤2,直到弱学习器数达到事先指定的数目X

5.最终将这X个弱学习器通过结合策略进行整合,得到最终的强学习器。

Stacking(Stacked generalization)

Stacking的基本思想是训练一个基本分类器池,然后使用另一个分类器来组合它们的预测,目的是减少泛化误差。

Stacking算法伪代码

1.将训练集分成两个不想交的部分;

2.在第一部分的训练集上训练若干个基本学习器;

3.在第二部分的训练集上测试得到的基本学习器;

4.使用步骤3中的预测结果作为输入,将正确的响应(responses)作为输出,训练更高级别的学习器。

步骤1到3,类似与交叉验证(cross-validation),但是不同于winner-takes-all的策略,stacking通过组合基本分类器来得到更高级的学习结果。

å¨è¿éæå¥å¾çæè¿°

 总结一下,组合算法(combiner algorithm)使用所有其他算法的预测作为附加输入(additional inputs)来训练得到最终的预测结果。理论上可以表示任何一种组合学习方法(ensemble techniques);实际中,单层的逻辑回归模型(single-layer logistic regression model)通常被用作组合器(combiner)。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值