机器学习——集成学习
一、个体与集成
集成学习通过构建并结合多个学习器来完成学习任务。
集成学习的一般结构:
先产生一组“个体学习器”,再用某种策略将它们结合起来,个体学习器通常由一个现有的学习算法从训练数据产生。若集成中只包含同种类型的个体学习器,例如:“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,则称这样的集成是同质的。
同质集成中的个体学习器也称为“基学习器”,相应的学习算法称为“基学习算法”。
同时包含不同类型的个体学习器的集成是“异质”的,异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法;相应的,个体学习器一般不称为基学习器,常称为“组件学习器”。
二、集成个体应该“好而不同”
在一个二分类任务中,假定三个分类器在三个测试样本上的表现如上图所示,其中√表示分类正确,×表示分类错误,集成学习的结果通过投票法产生,即“少数服从多数”。图(a)中,每个分类器都只有66.6%的精度,但集成学习却达到了100%的精度;图(b)中,三个分类器的性能没有差别,集成之后性能也没有提高;图©中,每个分类器的精度都只有33.3%,集成学习的结果变得更差。
要获得好的集成,个体学习器应“好而不同” ,即个体学习器要有一定的“准确性”,即学习器不能太差,并且要有“多样性”,即学习器 间具有差异
事实上,个体学习器的“准确性”和“多样性”本身就存在冲突,一般的,各个学习器准确性很高之后,学习器之间存在很大的相似性,要增加多样性就需要牺牲准确性。
根据个体学习器的生成方式,目前的集成学习方法大致可分为两个大类。
个体学习器间存在强依赖关系,必须串行生成的序列化方法
{
A
d
a
B
o
o
s
t
G
r
a
d
i
e
n
t
B
o
o
s
t
L
P
B
o
o
s
t
⋯
}
B
o
o
s
t
i
n
g
族
个体学习器间存在强依赖关系,必须串行生成的序列化方法 \left. \begin{cases} AdaBoost \\ GradientBoost\\ LPBoost\\ \cdots \end{cases} \right\} Boosting族
个体学习器间存在强依赖关系,必须串行生成的序列化方法⎩
⎨
⎧AdaBoostGradientBoostLPBoost⋯⎭
⎬
⎫Boosting族
个体学习器间不存在强依赖关系,可同时生成的并行化方法
{
B
a
g
g
i
n
g
随机森林
R
a
n
d
o
m
F
o
r
e
s
t
R
a
n
d
o
m
s
u
b
s
p
a
c
e
⋯
个体学习器间不存在强依赖关系,可同时生成的并行化方法 \begin{cases} Bagging \\ 随机森林 Random&Forest\\ Random&subspace\\ \cdots \end{cases}
个体学习器间不存在强依赖关系,可同时生成的并行化方法⎩
⎨
⎧Bagging随机森林RandomRandom⋯Forestsubspace
三、Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。
工作机制:
先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多的关注,然后基于调整后的训练样本分布来训练下一个基学习器,如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行 加权结合。
Boosting算法要求基学习器能对特定的数据分布进行学习,可通过“重赋权法”实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重,对无法接受带权样本的基学习算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样得到的样本集对基学习器进行训练。
Boosting主要关注降低偏差。
四、Bagging
Bagging是并行式集成学习算法,主要是基于“自助采样法”。
给定包含m个样本的数据集,先随机取出一个放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m个随机操作,得到包含m个样本的采样集,初始训练集中约有63.2%的样本出现在采样集中。