基础概念
-
集成学习:集成学习通过构建并结合多个学习器来完成学习任务,先产生一组“个体学习器”,再用某种策略将它们结合起来。
-
个体学习器:分为基学习器与组件学习器。同质集成中的个体学习器称为基学习器,异质集成中的个体学习器称为组件学习器。所谓同质异质即指个体学习器的学习算法是否相同。
-
集成分类的输出: H ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) H(x) = sign (\sum_{i = 1}^{T}{h_i(x)}) H(x)=sign(∑i=1Thi(x)),其中 h i ( x ) h_i(x) hi(x) 表示第 i i i 个个体分类器对样本 x x x 的预测结果 s i g n ( x ) sign(x) sign(x) 为符号函数。集成学习中限制样本集合 D = { ( x i , y i ) } D = \{(x_i, y_i)\} D={(xi,yi)} 中所有 y i y_i yi 满足 y i ∈ { − 1 , 1 } y_i \in \{-1, 1\} yi∈{−1,1}, h i ( x ) h_i(x) hi(x) 同样如此。
-
假设个体分类器的错误率相互独立(且均为 ϵ \epsilon ϵ),由 H o e f f d i n g Hoeffding Hoeffding 不等式得到集成的错误率:
P ( H ( x ) ≠ f ( x ) ) ≤ exp ( − 1 2 T ( 1 − 2 ϵ ) 2 ) P(H(x) \neq f(x)) \leq \exp(-\frac {1}{2}T(1 - 2\epsilon)^2) P(H(x)=f(x))≤exp(−21T(1−2ϵ)2)
其中 T T T 为个体分类器的数目。
A d a B o o s t AdaBoost AdaBoost
- A d a B o o s t AdaBoost AdaBoost 算法是 B o o s t i n g Boosting Boosting 算法的一种,该算法的训练结构是一种串行结构,每轮训练一个个体分类器,同时为训练集中每个样本指派了一个权重 w t , i w_{t, i} wt,i,表示第 t t t 轮训练时第 i i i 个样本的权重;
- 通过提高上一轮中分类错误的样本的权重,使得上一轮中分类错误的样本在新一轮训练中得到更加多的关注,从而使得各个体人分类器之间“取长补短”,达到良好的集成效果;
- 除了样本有权重以外,每个个体分类器同样也有一个权重 α t \alpha_t αt,表示其在最终表决时的作用大小,取决于训练时的误分率 ϵ t \epsilon_t ϵt;
- 所有个体分类器的线性加权即为最终输出。
具体的算法步骤如下所示:
- 初始化各样本权重: w 1 , i = 1 N w_{1, i} = \frac {1}{N} w1,i=N1,其中 N N N 为样本总数;
- 基于样本权重和学习算法,得到第 t t t 轮产生的个体分类器 G t ( x ) G_t(x) Gt(x);
- 计算误差率 e t = ∑ i = 1 N w t , i I ( G t ( x i ) ≠ y i ) e_t = \sum_{i = 1}^{N}w_{t, i}I(G_t(x_i) \neq y_i) et=∑i=1Nwt,iI(Gt(xi)=yi);
- 计算弱学习器的权重 α t = 1 2 ln 1 − e t e t \alpha_t = \frac {1}{2}\ln \frac {1 - e_t}{e_t} αt=21lnet1−et;
- 更新样本权重 w t + 1 , i = w t , i ⋅ exp ( − α t y i G t ( x i ) ) / Z t w_{t + 1, i} = w_{t, i} · \exp (-\alpha_t y_i G_t(x_i)) /Z_t wt+1,i=wt,i⋅exp(−αtyiGt(xi))/Zt;
- 其中 Z t Z_t Zt 为归一化因子,因为要满足 ∑ i = 1 N w t + 1 , i = 1 \sum_{i = 1}^{N}{w_{t + 1, i}} = 1 ∑i=1Nwt+1,i=1,所以自然地 Z t = ∑ i = 1 N w t , i ⋅ exp ( − α t y i G t ( x i ) ) Z_t = \sum_{i = 1}^{N}w_{t, i} · \exp (-\alpha_t y_i G_t(x_i)) Zt=∑i=1Nwt,i⋅exp(−αtyiGt(xi));
- 反复迭代,直到满足停机条件。
最终分类器:
G
(
x
)
=
s
i
g
n
(
∑
i
=
1
T
α
i
G
i
(
x
)
)
G(x) = sign(\sum_{i = 1}^{T}\alpha_iG_i(x))
G(x)=sign(i=1∑TαiGi(x))
B a g g i n g Bagging Bagging
- B a g g i n g Bagging Bagging 算法的训练结构时并行的,各个个体分类器的依赖关系并不大,不像 A d a B o o s t AdaBoost AdaBoost 算法那样当前分类器的样本权重取决于上一个个体分类器及其误分率;
- 采用了自主采样法,每次随机采样操作从包含 m m m 个样本的数据集中随机取出一个样本,将样本放入采样集中,再把样本放回初始数据集,经过 m m m 次是这样的随机采样操作,得到一个含 m m m 个样本的采样集;
- 利用相对多数投票法组合 T T T 个个体分类器(个体分类器没有设置权重)
集成学习策略
-
投票法
- 绝对多数投票法:票数占一半以上;
- 相对多数投票法:票数最多;
- 加权投票法:加权后票数最多。
-
平均法
- 简单平均法:对各个分类器的输出结果取平均值;
- 加权平均法:各个分类器的线性加权。
-
学习法
- 比较有趣的一种策略。假设已经训练出了 T T T 个基分类器 G t G_t Gt,数据集 D D D 中共 m m m 个样本;
- 对于每个样本,把 T T T 个基分类器的输出结果拼接成一个向量,再加上样本的标签值,作为新的数据集 D ′ D' D′,采用某种学习算法(称为次级学习算法,基分类器用的称为初级学习算法),得到个新的分类器 G ′ ( x ) G'(x) G′(x);
- 对于待测样本 x x x,求出 ( G 1 ( x ) , G 2 ( x ) , . . . , G T ( x ) ) (G_1(x), G_2(x), ... , G_T(x)) (G1(x),G2(x),...,GT(x)) 作为分类器 G ′ ( x ) G'(x) G′(x) 的输入,其输出结果即为预测结果。
集成学习方法
- 训练样本扰动:如自主采样法,对决策树、神经网络更有效;
- 输入属性扰动:利用不同的属性子集训练出不同的个体学习器,如随机子空间、随机森林;
- 输出标记扰动:对训练样本的类标记稍作变动,多分类转二分类,如纠错输出码;
- 算法参数扰动:随机设置不同的参数来训练差别较大的个体学习器。比如,神经网络的隐层神经元数、初始连接权值等;
- 混合扰动:上述多种扰动方法一起使用。