本文记录周志华《机器学习》集成学习内容:***(文中公式内容均来自周志华《机器学习》)***
集成学习通过构建并结合多个学习器来完成学习任务,一般结构为:先产生一组“个体学习器”,再用某种策略将他们结合起来。如果个体学习器均是同种类型,则这样的集成是“同质”,反之集成也可包含不同类型的个体学习器,此时这样的集成为“异质”。
要获得好的集成,个体学习器应该既有一定的准确性,即学习器表现不能太坏(弱学习器),并且要有多样性,即学习器之间具有差异。
目前集成学习方法大致分为两类:1.个体学习器间存在强依赖关系、必须串行生产的序列化方法(Boosting算法);2.个体学习器间不存在强依赖关系、可同时生成的并行化方法(Bagging和随机森林算法)。
Boosting:
Boosting是一族可将弱学习器提升为强学习器的算法。先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前集学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,重复执行,最近将这T个基学习器进行加权结合。
其中D(x)表示当前样本分布,ht为当前模型,α表示权重, Zt为归一化常数,算法中第4步可理解为误分类样本权值相加。
Z
t
=
2
ε
t
(
1
−
ε
t
)
{Z_t} = 2\sqrt {{\varepsilon _t}(1 - {\varepsilon _t})}
Zt=2εt(1−εt)
具体解释,可参考Adaboost算法原理分析和实例
Boosting算法要求基学习器能对特定的数据分本进行学习,可通过“重赋权法”,即在每一轮,根据样本分布对每个样本重新赋予一个权重。对于无法接受带权样本的基学习算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新采样,再用新得到的
样本集对基学习器进行训练,
从偏差-方差角度来看,Boosting主要关注降低偏差。
Bagging:
在初始数据集(数据量为m)中,先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时仍有可能被选中,这样经过m次随机采样,得到m个样本的采样集。重复操作,可得到T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。
在对预测输出进行结合时,分类任务常采用简单投票法,回归任务采用简单平均法。
从偏差-方差角度来看,Bagging主要关注降低方差。
随机森林(RF):
RF是在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入随机属性选择。
传统决策树在选择划分属性时是在当前节点的属性集合(含有d个属性)中选择一个最有属性;在RF中,对决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性进行划分,一般情况下
k
=
log
2
d
{k = {\log _2}d}
k=log2d
随机森林中基学习器的多样性不仅来源于样本扰动,还来自属性扰动,增强了最终集成的泛化性。
结合策略:
-
平均法: H ( x ) = 1 T ∑ i = 1 T h i ( x ) {H(x) = {1 \over T}\sum\limits_{i = 1}^T {{h_i}(x)}} H(x)=T1i=1∑Thi(x),针对数值型输出
-
加权平均法: H ( x ) = ∑ i = 1 T w i h i ( x ) {H(x) = \sum\limits_{i = 1}^T {{w_i}{h_i}(x)}} H(x)=i=1∑Twihi(x),w为个体学习器的权重,一般来说w>0,且 ∑ i = 1 T w i = 1 {\sum\limits_{i = 1}^T {{w_i} = 1}} i=1∑Twi=1
-
投票法:1.绝对多数投票法:若某标记得票超过半数,则预测为该标记;否则拒绝预测。2.相对多数投票法:预测为的票最多的标记,若同时有多个标记得票均最高,则随机选取。
-
学习法(Stacking算法):通过另一个学习器来进行结合,在此我们称个体学习器为初级学习器,用于结合的学习器称为次级学习器或元学习器。
Stacking先从初始数据集训练出初级学习器,然后生成一个新数据集用于训练次级学习器,在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。此时初级集成可以是异质的。
多样性增强: -
数据样本扰动:给定初始数据集,可从中产生不同的数据子集,然后训练出不同的个体学习器,一般用于”不稳地基学习器“(决策树、神经网络)
-
输入属性扰动:训练样本通常由一组属性描述,不同的子空间(属性子集)提供了不同观察数据的角度,因此训练出的个体学习器必然有所不同。著名的”随机子空间算法“,就是从初始属性集中去除若干属性子集,再基于每个属性子集训练一个基学习器。一般用于稳定基学习器(线性学习器、支持向量机、朴素贝叶斯、k近邻学习器)
-
输出表示扰动:对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,随机改变一些训练样本的标记;也可对输出表示进行转化,将分类输出转化为回归输出后构建个体学习器。
-
算法参数扰动:通过随机设置不同的参数,往往可产生差别较大的个体学习器