集成学习方法分为两大类:
1)基于boost的方法:
基本原理就是利用一系列弱学习器组成一个强学习器。这些弱学习按顺序依次训练得到。
这个方法是首先给每个样本赋一个权值,这个权值被利用到损失函数中。然后训练第一个弱学习器,完成训练之后,根据这个弱学习器在训练集的上的表现,更新样本权值,具体来说就是预测错误的样本被赋予更大的权值,预测正确的值被赋予更小的权值,然后继续训练第二个弱学习器。这样训练N个弱学习器后,将这个N个弱学习器加权求和,作为最终的强学习器。这个N个弱学习器的权重完全根据他们自己的性能确定,性能越好权重越大。
比较典型的就是adaboost算法。此算法要点就是,样本权重如何更新,以及弱基学习器的权重如何求。实际上,adaboost算法是前向分步算法的特例,在前向分步算法的损失函数为指数损失函数时,可以推导出adaboost算法中弱基学习器的权重计算公式,以及样本权重的更新规则。
假设已经训练好了m−1m-1m−1个基分类器G1(x),...,Gm−1(x){G_{1}(x),..., G_{m-1}(x)}G1(x),...,Gm−1(x),因为前面m−1m-1m−1个弱基分类器的权重分别为{α1,...,αm−1}\{\alpha_1,...,\alpha_{m-1}\}{α1,...,αm−1},且
fm−1=∑i=1m−1αiGi(x)f_{m-1}=\sum\limits_{i=1}^{m-1}\alpha_iG_{i}(x)fm−1=i=1∑m−1αiGi(x),
或者fm−1=fm−2+αm−1Gm−1(x),f0=0f_{m-1}=f_{m-2}+\alpha_{m-1}G_{m-1}(x), f_0=0fm−1=fm−2+αm−1Gm−1(x),f0=0。
指数损失函数
L(αm,Gm(x))=∑i=1Nexp(−yifm(xi))=∑i=1Nexp(−yi(fm−1(xi)+αmGm(xi)))=∑i=1Nexp(−yifm−1(xi))exp(−yiαmGm(xi))L(\alpha_m,G_m(x))
\\=\sum\limits_{i=1}^Nexp(-y_if_m(x_i))
\\=\sum\limits_{i=1}^Nexp(-y_i(f_{m-1}(x_i)+\alpha_mG_m(x_i)))
\\=\sum\limits_{i=1}^Nexp(-y_if_{m-1}(x_i))exp(-y_i\alpha_mG_m(x_i))L(αm,Gm(x))=i=1∑Nexp(−yifm(xi))=i=1∑Nexp(−yi(fm−1(xi)+αmGm(xi)))=i=1∑Nexp(−yifm−1(xi))exp(−yiαmGm(xi))
因为exp(−yifm−1(xi))exp(-y_if_{m-1}(x_i))exp(−yifm−1(xi))是常数,记为w‾m,i=exp(−yifm−1(xi))\overline w_{m,i}=exp(-y_if_{m-1}(x_i))wm,i=exp(−yifm−1(xi))。
(此处可看出,在已知前m-1个分类器以及其系数的情况下,如果求Gm(x)G_m(x)Gm(x)使得整体最优,相当于最小化Gm(x)G_m(x)Gm(x)的加权损失函数,其未归一化权值为exp(−yifm−1(xi))exp(-y_if_{m-1}(x_i))exp(−yifm−1(xi))。)
指示函数:
I(z)={1,z为真0,z为假\mathbb{I}(z)=\left\{
\begin{array}{rcl}
1, & z为真\\
0, & z为假
\end{array} \right.I(z)={1,0,z为真z为假
argminαmL(αm,Gm(x))=argminαm∑i=1Nw‾m,iexp(−yiαmGm(xi))=argminαm∑i=1Nw‾m,i(exp(−αm)I(yi=Gm(xi))+exp(αm)I(yi≠Gm(xi))=argminαm∑i=1Nw‾m,i(exp(−αm)(1−I(yi≠Gm(xi)))+exp(αm)I(yi≠Gm(xi))arg\min\limits_{\alpha_m} L(\alpha_m,G_m(x))
\\=arg\min\limits_{\alpha_m}\sum\limits_{i=1}^N\overline w_{m,i}exp(-y_i\alpha_mG_m(x_i))
\\=arg\min\limits_{\alpha_m}\sum\limits_{i=1}^N\overline w_{m,i}(exp(-\alpha_m)\mathbb{I}(y_i=G_m(x_i))+exp(\alpha_m)\mathbb{I}(y_i\neq G_m(x_i))
\\=arg\min\limits_{\alpha_m}\sum\limits_{i=1}^N\overline w_{m,i}(exp(-\alpha_m)(1-\mathbb{I}(y_i\neq G_m(x_i)))+exp(\alpha_m)\mathbb{I}(y_i\neq G_m(x_i))argαmminL(αm,Gm(x))=argαmmini=1∑Nwm,iexp(−yiαmGm(xi))=argαmmini=1∑Nwm,i(exp(−αm)I(yi=Gm(xi))+exp(αm)I(yi=Gm(xi))=argαmmini=1∑Nwm,i(exp(−αm)(1−I(yi=Gm(xi)))+exp(αm)I(yi=Gm(xi))
令∂L∂αm=0\frac{\partial L}{\partial \alpha_m}=0∂αm∂L=0
则:
αm=12ln∑i=1Nw‾m,i−∑i=1Nw‾m,iI(yi≠Gm(xi))∑i=1Nw‾m,iI(yi≠Gm(xi))\alpha_m=\frac{1}{2}ln\frac{\sum\limits_{i=1}^{N}\overline w_{m,i}-\sum\limits_{i=1}^{N}\overline w_{m,i}\mathbb{I}(y_i\neq G_m(x_i))}{\sum\limits_{i=1}^{N}\overline w_{m,i}\mathbb{I}(y_i\neq G_m(x_i))}αm=21lni=1∑Nwm,iI(yi=Gm(xi))i=1∑Nwm,i−i=1∑Nwm,iI(yi=Gm(xi))
因为adaboost算法加权错误率为:
ϵm=∑i=1Nw‾m,iI(yi≠Gm(xi))∑i=1Nw‾m,i\epsilon_m=\frac{\sum\limits_{i=1}^{N}\overline w_{m,i}\mathbb{I}(y_i\neq G_m(x_i))}{\sum\limits_{i=1}^{N}\overline w_{m,i}}ϵm=i=1∑Nwm,ii=1∑Nwm,iI(yi=Gm(xi))
所以:
αm=12ln1−ϵmϵm\alpha_m=\frac{1}{2}ln\frac{1-\epsilon_m}{\epsilon_m}αm=21lnϵm1−ϵm
也就是说当前的弱基分类器的权重和且只和它的性能有关。
然后我们考虑如何更新样本权重:
argminGm(x)L(αm,Gm(x))=argminGm(x)∑i=1Nw‾m,iexp(−yiαmGm(xi))=argminGm(x)∑i=1Nw‾m,i(exp(−αm)(1−I(yi≠Gm(xi)))+exp(αm)I(yi≠Gm(xi))=argminGm(x)∑i=1Nw‾m,i(exp(αm)−exp(−αm))I(yi≠Gm(xi))=argminGm(x)∑i=1Nw‾m,iI(yi≠Gm(xi))=argminGm(x)∑i=1Nw‾m,iI(yi≠Gm(xi))∑i=1Nw‾m,i=argminGm(x)∑i=1Nwm,iI(yi≠Gm(xi))arg\min\limits_{G_m(x)} L(\alpha_m,G_m(x))
\\=arg\min\limits_{G_m(x)}\sum\limits_{i=1}^N\overline w_{m,i}exp(-y_i\alpha_mG_m(x_i))
\\=arg\min\limits_{G_m(x)}\sum\limits_{i=1}^N\overline w_{m,i}(exp(-\alpha_m)(1-\mathbb{I}(y_i\neq G_m(x_i)))+exp(\alpha_m)\mathbb{I}(y_i\neq G_m(x_i))
\\=arg\min\limits_{G_m(x)}\sum\limits_{i=1}^N\overline w_{m,i}(exp(\alpha_m)-exp(-\alpha_m))\mathbb{I}(y_i\neq G_m(x_i))
\\=arg\min\limits_{G_m(x)}\sum\limits_{i=1}^N\overline w_{m,i}\mathbb{I}(y_i\neq G_m(x_i))
\\=arg\min\limits_{G_m(x)}\frac{\sum\limits_{i=1}^N\overline w_{m,i}\mathbb{I}(y_i\neq G_m(x_i))}{\sum\limits_{i=1}^N\overline w_{m,i}}
\\=arg\min\limits_{G_m(x)}\sum\limits_{i=1}^N w_{m,i}\mathbb{I}(y_i\neq G_m(x_i))argGm(x)minL(αm,Gm(x))=argGm(x)mini=1∑Nwm,iexp(−yiαmGm(xi))=argGm(x)mini=1∑Nwm,i(exp(−αm)(1−I(yi=Gm(xi)))+exp(αm)I(yi=Gm(xi))=argGm(x)mini=1∑Nwm,i(exp(αm)−exp(−αm))I(yi=Gm(xi))=argGm(x)mini=1∑Nwm,iI(yi=Gm(xi))=argGm(x)mini=1∑Nwm,ii=1∑Nwm,iI(yi=Gm(xi))=argGm(x)mini=1∑Nwm,iI(yi=Gm(xi))
再一次可以清晰看到,在已知前m-1个分类器以及其系数的情况下(αm\alpha_mαm为正的未知系数,不影响结果),如果求Gm(x)G_m(x)Gm(x)使得整体最优,等价于最小化Gm(x)G_m(x)Gm(x)的加权损失函数,其未归一化权值为exp(−yifm−1(xi))exp(-y_if_{m-1}(x_i))exp(−yifm−1(xi)),归一化权重为wm,iw_{m,i}wm,i。
并且有效损失函数权重为:
wm,i=w‾m,i∑i=1Nw‾m,iw_{m,i}=\frac{\overline w_{m,i}}{\sum\limits_{i=1}^N\overline w_{m,i}}wm,i=i=1∑Nwm,iwm,i
且可以推导出权重更新公式:
因为
w‾m,i=exp(−yifm−1(xi))\overline w_{m,i}=exp(-y_if_{m-1}(x_i))wm,i=exp(−yifm−1(xi))
则
w‾m+1,i=exp(−yifm(xi))=exp(−yi(fm−1+αmGm(xi)))=exp(−yi(fm−1))exp(−yiαmGm(xi))=w‾m,iexp(−yiαmGm(xi)\overline w_{m+1,i}=exp(-y_if_{m}(x_i))
\\=exp(-y_i(f_{m-1}+\alpha_mG_m(x_i)))
\\=exp(-y_i(f_{m-1}))exp(-y_i\alpha_mG_m(x_i))
\\=\overline w_{m,i}exp(-y_i\alpha_mG_m(x_i)wm+1,i=exp(−yifm(xi))=exp(−yi(fm−1+αmGm(xi)))=exp(−yi(fm−1))exp(−yiαmGm(xi))=wm,iexp(−yiαmGm(xi)
则新权重为:
w‾m+1,i′=wm,iexp(−yiαmGm(xi))\overline w_{m+1,i}'=w_{m,i}exp(-y_i\alpha_mG_m(x_i))wm+1,i′=wm,iexp(−yiαmGm(xi))
归一化后有效权重为:
wm+1,i=w‾m+1,i′∑i=1Nw‾m+1,i′w_{m+1,i}=\frac{\overline w_{m+1,i}'}{\sum\limits_{i=1}^N\overline w_{m+1,i}'}wm+1,i=i=1∑Nwm+1,i′wm+1,i′
每次基于旧的有效权重生成新的权重后,新的权重都需要归一化来成为有效权重。
2)Bagging方法
Bagging相对简单,可以并行得到多个弱基分类器,然后投票或者其他方法融合。
需要注意的是,Bagging方法中,为保证分类器的差异性,需要保证训练集的差异性。一般才有有放回采样,也就是在N个样本的数据集中有放回采样M个样本作为第一个基分类器的样本,然后同样的方法构造其它基分类器的训练集。