本文摘抄并总结自周志华教授的《机器学习》一书。特此声明,以表敬意!
-
集成学习的概念
通过将多个学习器结合在一起来完成学习任务,有时也被称为多分类器系统、基于委员会的学习(集成学习的原理就像委员会投票一样,少数服从多数,因此得名)等。
-
集成学习的结构
先产生一组个体学习器,再用某种策略将他们结合起来。
如果一个集成中只包含同种类型的个体学习器,例如:决策树集成中全是决策树,那么该集成是同质的。同质集成中的个体学习器称为基学习器,相应的学习算法称为基学习算法。
如果一个集成中包含不同类型的个体学习器,例如:同时包含决策树和神经网络,那么该集成是异质的。异质集成中的个体学习器称为组件学习器或直接称为个体学习器,且不再有基学习算法。
-
集成学习研究的核心
集成学习的很多理论研究都是基于弱学习器(在二分类问题上精度略高于50%的分类器)进行的,但在实践中出于种种考虑,人们往往会使用比较强的分类器。接下来我们看一个简单的例子:
从这个例子中可以看出:要获得好的集成,个体学习器应“好而不同”。即个体学习器要有一定的准确性,也要有多样性(学习器间具有差异)。但是准确性与多样性之间本身就存在冲突,当准确性很高之后,要增加多样性就要牺牲准确性。如何产生并结合“好而不同”的个体学习器,是集成学习研究的核心。
-
两类集成学习方法
根据个体学习器的生成方式,目前的集成学习方法大致可以分为两类:
- 个体学习器间存在强依赖关系,必须串行生成的序列化方法。代表方法为:Boosting
- 个体学习器间不存在强依赖关系,可同时生成的并行化方法。代表方法为:Bagging和随机森林(Random Forest)
从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此它能基于泛化性能相当弱的学习器构建出很强的集成。Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。
Boosting
工作原理:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先设定的值T,最终将这T个基学习器进行加权结合。
Boosting族算法最著名的代表是Adaboost,其可通过加性模型(基学习器的线性组合)来最小化指数损失函数的方法来推导。该算法的详细介绍就略了,具体去看书吧。从AdaBoost的算法流程来看,标准的AdaBoost只适用于二分类问题。
Boosting算法对于数据分布的学习包括以下两种方法:
- 重赋权法:在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。
- 重采样法:对于无法接受带权样本的的基学习算法,在每一轮学习中,根据样本分布对训练集重新进行采样,再用新样本集对基学习器进行训练。
Bagging
先前提到集成学习研究的核心是好而不同,为了增加多样性,个体学习器应该尽可能的相互独立。因此Bagging使用有放回采样的方式来选取训练集。对于包含m个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,这样训练集中有接近36.8%的样本没有被采到。按照相同的方式重复进行,我们就可以采集到T个包含m个样本的数据集,从而训练出T个基学习器,最终对这T个基学习器的输出进行结合(通常对分类任务使用简单投票法,对回归任务使用简单平均法)。
可以看出Bagging主要通过样本的扰动来增加基学习器之间的多样性,因此Bagging的基学习器应为那些对训练集十分敏感的不稳定学习算法,例如:神经网络与决策树等。可通过多次重复训练提高稳定性。不同于AdaBoost的是,Bagging可以十分简单地移植到多分类、回归等问题。
随机森林(Random Forest)
随机森林(Random Forest)是Bagging的一个拓展体,它的基学习器固定为决策树,多棵树也就组成了森林,而“随机”则在于选择划分属性的随机,随机森林在训练基学习器时,也采用有放回采样的方式添加样本扰动,同时它还引入了一种属性扰动,即在基决策树的训练过程中,在选择划分属性时,RF先从候选属性集中随机挑选出一个包含K个属性的子集,再从这个子集中选择最优划分属性,一般推荐K=log2(d)。
这样随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,从而进一步提升了基学习器之间的差异度。相比决策树的Bagging集成,随机森林的起始性能较差(由于属性扰动,基决策树的准确度有所下降),但随着基学习器数目的增多,随机森林往往会收敛到更低的泛化误差。同时不同于Bagging中决策树从所有属性集中选择最优划分属性,随机森林只在属性集的一个子集中选择划分属性,因此训练效率更高。
-
结合策略
结合策略指的是在训练好基学习器后,如何将这些基学习器的输出结合起来产生集成模型的最终输出。主要有以下几种:
- 学习法:简单平均法和加权平均法。一般而言,在个体学习器性能相差较大时使用加权平均法,在个体学习器性能相近时使用简单平均法。学习法常用于回归问题。
- 投票法:绝对多数投票法、相对多数投票法、加权投票法。投票法常用于分类问题。
- 学习法:学习法是一种更高级的结合策略,即学习出一种“投票”的学习器,Stacking是学习法的典型代表。
-
多样性
在集成学习中,基学习器之间的多样性是影响集成器泛化性能的重要因素。因此增加多样性对于集成学习研究十分重要,一般的思路是在学习过程中引入随机性,常见的做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。