[机器学习] - 集成学习原理小结

 
集成学习模型的思想在机器学习领域越来越得到广泛的应用,在一般的工业界中用很广泛的应用,本专栏的内容包括以下四个部分:
 

[1] 集成学习原理小结 传送链接
[2] 集成学习之Adaboost算法原理小结
[3] 梯度提升树(GBDT)原理小结
[4] Bagging与随机森林算法原理小结
[5] XGBoost算法

 

本文介绍:[1] 集成学习原理小结


集成学习(ensemble learning)本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。


 
 

1: 集成学习概述

从下图,我们可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器(individual learner),通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。
在这里插入图片描述
也就是说,集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器

 
 

2: 集成学习之个体学习器

集成学习的第一个问题就是如何得到若干个个体学习器。这里有两种选择。第一种就是所有的个体学习器都是一个种类的,或者说是同质的(homogeneous),同质集成中的个体学习器也称为“基学习器”(base learner),相应的学习算法称为“基学习算法”(base learning algorithm)。比如都是决策树个体学习器,或者都是神经网络个体学习器。

第二种是所有的个体学习器不全是一个种类的,或者说是异质的(heterogeneous)。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。这时个体学习器一般不称为基学习器,而称作“组件学习器”(component leaner)或直接称为个体学习器。

弱学习器(weak learner):指泛化性能略优于随机猜测的学习器:例如在二分类问题精度略高于50%的分类器。

前面提到,集成学习的直觉是结合多个个体的能力,获得远超个体的集体能力优势。这种直觉在实际上对于“弱学习器”是非常符合的。故很多集成学习的研究也都是针对弱学习器,而基学习器有时也被直接称为弱学习器。一般经验中,如果把好坏不一的东西掺杂在一起,那么最终结果很可能是整体效果比最坏的东西要好一些,但又比最好的那个要坏一些,那么这种情况下不如就让最好的单独去工作,而不要参与混合。

但是集成学习还是对多个学习器进行了结合,那它怎么保证整体的效果会比最好的那个单一学习器的效果更好呢。用一个简单的例子来进行说明:在一个二分类任务中,假设三个分类器在三个测试样本上的表现如下图所示。假设集成学习的结果通过三个个体学习器用投票发(voting)产生,即“少数服从多数”,那么当三个个体学习器分别对三个测试例有不同的判别优势时,集成的效果也会不一样。

在这里插入图片描述
(a)中,每个分类器原本只有66.6%的精度,集成学习却达到了100%;
(b)中,每个分类器都是一样的,集成之后性能没有任何提高;
(c)中,每个分类器的精度只有33.3%,集成之后结果反而变得更糟。

这个例子表明:要获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的准确性,即学习器不能太坏,并且要有“多样性”(diversity),即学习器间具有差异。也就是说,可以通过增加集成的学习器来提高模型的准确率,也可以试想一下给每个学习器 h i h_i hi 增加一个权重系数 w i w_i wi 避免简单的线性叠加。

根据个体学习器生成方式的不同,目前集成学习方法大致可分为两大类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成的序列化方法,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法

 
 

3: 集成学习之boosting

boosting的算法原理我们可以用一张图做一个概括如下:
在这里插入图片描述

从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

也就是每个弱学习器会关心不同的训练样本,最后通过结合策略集成每个弱学习器后来达到对整个训练样本的学习。

Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。AdaBoost和提升树算法的原理在后面的文章中会专门来讲。

之前有些过AdaBoost算法的相关内容:
[机器学习] - 提升方法AdaBoost

 
 

4: 集成学习之bagging

Bagging的算法原理和 boosting不同,它的弱学习器之间没有依赖关系,可以并行生成。
在这里插入图片描述

由第一部分内容可知,要想获得泛化性能强的集成,集成中的个体学习器应尽可能相互独立。而“独立”在现实任务中比较难以做到,不过我们可以设法使基学习器尽可能具有较大的差异。给定一个训练集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器,这样,由于训练数据不同,我们获得的基学习器可望具有比较大的差异。然而,为获得好的集成,我们同时希望个体学习器不能太差。如果采样出的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据,那甚至不能进行有效的学习,更不谈确保产生比较好的基学习器了。于是,为了解决这个问题,我们使用相互有交叠的采样子集。

在这里插入图片描述
从上图可以看出,bagging的个体弱学习器的训练集是通过随机采样得到的。通过3次的随机采样,我们就可以得到3个采样集,对于这3个采样集,我们可以分别独立的训练出3个弱学习器(弱学习器表现出泛化能力强),再对这3个弱学习器通过集合策略来得到最终的强学习器。

对于这里的随机采样有必要做进一步的介绍,这里一般采用的是自助采样法 (Bootstap sampling) , 即对于 M M M 个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集 M M M 次,最终可以得到 M M M 个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

注:Bootstrap方法是非常有用的一种统计学上的估计方法。 Bootstrap是一类非参Monte Carlo方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。首先,Bootstrap通过重抽样,避免了Cross-Validation造成的样本减少问题,其次,Bootstrap也可以创造数据的随机性。Bootstrap是一种有放回的重复抽样方法,抽样策略就是简单的随机抽样。

随机森林(Random Forest,简称RF)是Bagging的一个扩展变体。其在以决策树作为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。

具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最有属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性用于划分;一般情况下,推荐值 k = l o g 2 d k={log_2}d k=log2d

RF简单、容易实现、计算开销小,而令人惊奇的是,它在很多学习任务中展现出强大的性能,被誉为“代表集成学习技术水平的方法”。

RF的收敛性与Bagging相似。如下图所示,随机森林的起始性能往往相对较差,特别是在集成中只包含一个基学习器时,这很容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所降低。然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。

在这里插入图片描述

 
 

5. 集成学习之结合策略

在上面几节里面我们主要关注于学习器,提到了学习器的结合策略但没有细讲,本节就对集成学习之结合策略做一个总结。我们假定我得到的T个弱学习器是 h 1 , h 2 , . . . h T {h1,h2,...hT} h1,h2,...hT
5.1 平均法

对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。

5.2 投票法
对于分类问题的预测,我们通常使用的是投票法。假设我们的预测类别是 c 1 , c 2 , . . . c K {c1,c2,...cK} c1,c2,...cK,对于任意一个预测样本x,我们的T个弱学习器的预测结果分别是(h1(x),h2(x)…hT(x))。

最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别 c i c_i ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。

5.3 学习法
上两节的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。

 
 
参考博客:
[1] https://www.cnblogs.com/pinard/tag/%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0/
[2] https://zhuanlan.zhihu.com/p/39920405
[3] https://blog.csdn.net/qq_32690999/article/details/78759463

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值