Bagging & Stacking方法
Bagging方法(Bootstrap Aggregating 自助聚合)
核心思想
- 基于一个数据集训练多个学习器,预测新样本时综合所有模型的预测结果作为最终结果
- 一般选择同质学习器,通过自助采样的方法基于样本数据集构建多个子数据集,每个学习器在不同子数据集上进行训练
模型表示
-
令 h i ( x ) h_i(x) hi(x)是基于自助采样 D b s i D_{bsi} Dbsi训练得到的同质学习器
-
分类模型可以表示为:
H ( x ) = a r g m a x y P ( h ( x ) = y ) H(x)=\underset{y}{argmax}\ P(h(x)=y) H(x)=yargmax P(h(x)=y)
即取各个学习器预测结果中出现最多的类别(投票) -
回归模型可以表示为:
H ( x ) = E D b s [ h ( x ) ] H(x)=E_{D_{bs}}[h(x)] H(x)=EDbs[h(x)]
即取各个学习器预测结果的均值
相关概念
- 自助采样 Bootstrapping:
- 对样本数据集进行m次有放回采样得到有m个样本的采样集(可以重复选中)
- 共重复T次,得到T个样本数目为m的样本集。
优化原理
-
多个学习器的共同决策有助于降低误差
-
以二分类问题为例
-
假设真实函数为 f f f,每个基分类器存在独立的泛化误差 ϵ \epsilon ϵ,即对基分类器 h i h_i hi,有预测错误概率:
P ( h i ( x ) ≠ f ( x ) ) = ϵ P(h_i(x)≠f(x))=ϵ P(hi(x)=f(x))=ϵ -
结合T个分类器
H ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) H(x)=sign(\sum_{i=1}^Tℎ_i(x)) H(x)=sign(i=1∑Thi(x)) -
集成后,只有一半以上基分类器预测错误时H才会犯错,结合hoeffding不等式,泛化误差为
P ( H ( x ) ≠ f ( x ) ) = ∑ k = 1 T / 2 C T k ( 1 − ϵ ) k ϵ T − k ≤ e − 1 2 T ( 2 ϵ − 1 ) 2 P(H(x)\neq{f(x)})=\sum_{k=1}^{T/2}C_T^k(1-\epsilon)^{k}\epsilon^{T-k}\leq{e^{-\frac12T(2\epsilon-1)^2}} P(H(x)=f(x))=k=1∑T/2CTk(1−ϵ)kϵT−k≤e−21T(2ϵ−1)2
即随集成规模T的增大,泛化误差以指数形式下降
-
-
学习器种类的选取:选择不稳定的分类器(对训练数据敏感)
-
集成不稳定学习器可以显著降低方差
-
以回归方法为例:
H ( x ) = E b s [ h ( x ) ] = = > f ( x ) − H ( x ) = E b s [ f ( x ) − h ( x ) ] \begin{aligned} &H(x)=E_{bs}[h(x)]\\ ==>\ &f(x)-H(x)=E_{bs}[f(x)-h(x)] \end{aligned} ==> H(x)=Ebs[h(x)]f(x)−H(x)=Ebs[f(x)−h(x)]
由不等式 ( E ( x ) 2 ≤ E ( x 2 ) ) (E(x)^2\leq{E(x^2)}) (E(x)2≤E(x2)):
( f ( x ) − H ( x ) ) 2 = ( E b s [ f ( x ) − h ( x ) ] ) 2 ≤ E b s [ ( f ( x ) − h ( x ) ) 2 ] (f(x)−H(x))^2=(E_{bs}[f(x)-h(x)])^2\leq{E_{bs}[(f(x)-h(x))^2]} (f(x)−H(x))2=(Ebs[f(x)−h(x)])2≤Ebs[(f(x)−h(x))2]
即, H ( x ) H(x) H(x)的均方差小于 h ( x ) h(x) h(x)的均方差,该差距来源于:
E D b s [ h ( x ) ] 2 < E D b s [ h ( x ) 2 ] E_{D_{bs}}[h(x)]^2<E_{D_{bs}}[h(x)^2] EDbs[h(x)]2<EDbs[h(x)2]
可以理解为 H ( x ) H(x) H(x)在集成不同基学习器时,对方差的降低来源于不同基学习器之间方差的差距,只有自助采样产生的不同学习器之间差距很大时,bagging集成才能带来很大的提升即,Bagging方法选择不稳定的分类器才会有更好的效果
具体方法
- 随机森林
- Bagging方法中,每个基分类器的不同来自于自助采样产生的样本集不同
- 随机森林引入了随机特征选择,除了样本集的采样,在每棵决策树生成,选择分割点的时候,先对特征进行一次随机采样,再在取出的特征子集上进行分割点选取
- 由于加入了特征选择机制,随机森林在训练阶段比bagging算法更快(考虑的特征减少),且决策边界更加灵活(泛化性更好)
-
Stacking 方法
- Stacking方法既可以看作是多种集成学习方法的泛化,也可看作是一种通过学习进行结合的方法
核心思想
-
使用原始数据训练一组一级学习器
-
将一级学习器的输出作为输入特征,标记仍为原始标记,构建一个新的数据集
-
使用新数据集训练二级学习器
stacking方法过程可用如下图表示
注意点
-
stacking方法通常使用异质基学习器在同一样本集上训练
-
一般会先将样本划分,用一部分训练一级学习器,结束后再用另一部分训练样本训练二级学习器
若用一级学习器的训练数据集构建新数据集,会导致高过拟合风险
-
可以使用交叉验证法进行训练样本的划分与验证