《西瓜书》-8.集成学习

8.集成学习

8.1.个体与集成

集成学习(ensemble learning)指的是将多个学习器进行有效地结合,组建一个“学习器委员会”,其中每个学习器担任委员会成员并行使投票表决权,使得委员会最后的决定更能够四方造福普度众生,即其泛化性能要能优于其中任何一个学习器。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。

 

在上图的集成模型中,若个体学习器都属于同一类别,例如都是决策树或都是神经网络,则称该集成为同质的(homogeneous);若个体学习器包含多种类型的学习算法,例如既有决策树又有神经网络,则称该集成为异质的(heterogenous)。

上面我们已经提到要让集成起来的泛化性能比单个学习器都要好,虽说团结力量大但也要选择合适的学习器。

集成学习的两个重要概念:准确性和多样性(diversity)。

准确性指的是个体学习器不能太差,要有一定的准确度;

多样性则是个体学习器之间的输出要具有差异性。

通过下面的这三个例子可以很容易看出这一点,准确度较高,差异度也较高,可以较好地提升集成性能。

 所以,我们需要产生“好而不同”的个体学习器,根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即

*个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表是Boosting

*个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表是Bagging和“随机森林”(Random Forest).

8.2.Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合.

Boosting族算法最著名、使用最为广泛的就是AdaBoost,因此下面主要是对AdaBoost算法进行介绍。

AdaBoost迭代流程如下图

AdaBoost迭代算法分为3步

(1)初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。

(2)训练弱分类器。即如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;反之权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。

(3)将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。

从偏差-方差分解来看:Boosting算法主要关注于降低偏差,每轮的迭代都关注于训练过程中预测错误的样本,将弱学习提升为强学习器。从AdaBoost的算法流程来看,标准的AdaBoost只适用于二分类问题。

8.3.Bagging与随机森林

相比之下,Bagging与随机森林算法就简洁了许多,上面已经提到产生“好而不同”的个体学习器是集成学习研究的核心,即在保证基学习器准确性的同时增加基学习器之间的多样性。而这两种算法的基本思想都是通过“自助采样”的方法来增加多样性。

 

Bagging

Bagging[Breiman,1996a]是并行式集成学习方法最著名的代表。从名字即可看出,它直接基于我们前面介绍过的自助采样法(bootstrap sampling)。

给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。

由上式可知,初始训练集中约有63.2%的样本出现在采样集中。

照这样,我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程。

在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。

假定基学习器的计算复杂度为,则Bagging的复杂度大致为(其中为训练的轮数),考虑到采样与投票/平均过程的复杂度很小,而通常是一个不太大的常数,因此,训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,这说明Bagging是一个很高效的集成学习算法。

另外,与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务。

值得一提的是,自助采样过程还给Bagging带来了另一个优点:由于每个基学习器只使用了初始训练集中约63.2%的样本,剩下约36.8%的样本可用作验证集来对泛化性能进行“包外估计”(out-of-bag estimate)。

从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。

利用Bagging算法对西瓜数据集的分类边界如图

随机森林

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

具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有个属性)中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

这里的参数控制了随机性的引入程度:若令,则基决策树的构建与传统决策树相同;若令,则是随机选择一个属性用于划分;一般情况下,推荐值

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

可以看出,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。

下图为随机森林与Bagging的对比

随机森林的收敛性与Bagging相似,随机森林的起始性能往往相对较差,特别是在集成中只包含一个基学习器时。然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。值得一提的是,随机森林的训练效率常优于Bagging。

8.4.结合策略

结合策略指的是在训练好基学习器后,如何将这些基学习器的输出结合起来产生集成模型的最终输出,下面将介绍一些常用的结合策略:

首先,假定集成包含个基学习器,其中在示例上的输出为

平均法(回归问题)

对数值型输出,最常见的结合策略是使用平均法(averaging).

一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。

投票法(分类问题)

对分类任务来说,学习器将从类别标记集合中预测出一个标记,最常见的结合策略是使用投票法(voting)。

为便于讨论,我们将在样本上的预测输出表示为一个维向量,其中在类别标记上的输出。

标准的绝对多数投票法(8.24)提供了“拒绝预测”选项,这在可靠性要求较高的学习任务中是一个很好的机制。但若学习任务要求必须提供预测结果,则绝对多数投票法将退化为相对多数投票法。因此,在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为“多数投票法”.

在现实任务中,不同类型个体学习器可能产生不同类型的值,常见的有:

学习法

学习法是一种更高级的结合策略,通过另一个学习器来进行结合,即学习出一种“投票”的学习器。

Stacking是学习法的典型代表。这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器(meta-learner)。

Stacking先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。

在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大;因此,一般是通过使用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。

8.5.多样性(diversity)

在集成学习中,基学习器之间的多样性是影响集成器泛化性能的重要因素。因此增加多样性对于集成学习研究十分重要,一般的思路是在学习过程中引入随机性,常见的做法有:

数据样本扰动即利用具有差异的数据集来训练不同的基学习器。例如:自助采样法

输入属性扰动即随机选取原空间的一个子空间来训练基学习器。例如:随机森林。但若训练集只包含少量属性,则不宜使用属性扰动。 

输出表示扰动此类做法可对训练样本的类标稍作变动,或对基学习器的输出进行转化。

算法参数扰动通过随机设置不同的参数,例如:神经网络中,随机初始化权重与随机设置隐含层节点数。

在此,集成学习就介绍完毕,看到这里,大家也会发现集成学习实质上是一种通用框架,可以使用任何一种基学习器,从而改进单个学习器的泛化性能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值