摘自李航的《统计学习方法》
一、简介
提升算法(Boosting)是一种常用的统计学习方法。在解决分类或者回归问题当中,通过训练可以得到许多若模型,可以对这些若模型进行线性组合从而得到一个更可靠的模型,从而提升模型的准确率或者精度,这就是Boosting算法。
对于弱分类器的产生以及强分类器的组合,AdaBoost的做法是:
- 提高每一轮被上一个分类器分错样本的权值(被分错的样本会受到更大的关注),从而迭代产生弱分类器。
- 加大误差小的弱分类器权值,使其在强分类器中有更大的决策作用。
二、AdaBoost算法
1 弱学习算法
(1)初始化训练数据的权值分布(对于$omega$,左下标是第几轮的分类器,右下标是第几个样本)
$$D_{1}=(omega_{11},...,omega_{1i},...,omega_{1N})$$
$$omega_{1i}=frac{1}{N}$$
(2)对m=1,2,...,M
(a)使用具有权值分布$D_{m}$的训练数据集学习,得到基本分类器
$$G_{m}(x):chi ightarrow left { -1,+1 ight }$$
(b)计算$G_{m}$在训练数据集上的分类误差率
$$e_{m}=P(G_{m}(x_{i}) eq y_{i})=sum_{i=1}^{N}omega_{mi}I(G_{m}(x_{i}) eq y_{i})$$
(c)计算$G_{m}(x)$的系数
$$alpha_{m}=frac{1}{2}logfrac{1-e_{m}}{e_{m}}$$
(d)更新训练数据集的权值分布
$$D_{m+1}=(omega_{m+1,1},...,omega_{m+1},i,...,omega_{m+1,N})$$
$$w_{m+1,i}=frac{omega_{mi}}{Z_{m}}exp(-alpha_{m}y_{i}G_{m} (x_{i})), i=1,2,...,N$$
$Z_{m}$是规范化因子,他使得$D_{m+1}$成为一个概率分布
$$Z_{m}=sum_{i=1}^{N}omega_{mi}exp(-alpha_{m}y_{i}G_m(x_{i}))$$
(e)可以简写为
$$omega_{m+1,i}=egin{Bmatrix}
frac{omega_{mi}}{Z_{m}}e^{-alpha_{m}}&,G_{m}(x_{i})=y_{i}\
frac{omega_{mi}}{Z_{m}}e^{alpha_{m}}&, G_{m}(x_{i})
eq y_{i}
end{Bmatrix}$$
(3)构建基本分类器的线性组合
$$f(x)=sum_{m=1}^{M}alpha_{m}G_{m}(x)$$
2 AdaBoost算法的训练误差分析
AdaBoost的最终训练误差
$$frac{1}{N}sum_{i=1}^{N}I(G(x_{i}) eq y_{i})leqslant frac{1}{N}sum_{i}^{} exp(-y_{i}f(x_{i}))=prod_{m}^{}Z_{m}$$
二分类问题AdaBoost的训练误差界
$$prod_{m}^{M}Z_{m}=prod_{m=1}^{M}[2sqrt{e_{m}(1-e_{m})}]=prod_{m=1}^{M}sqrt{(1-4 gamma_{m}^{2})}leqslant exp(-2sum_{m=1}^{M}gamma_{m}^{2})$$