AdaBoost

摘自李航的《统计学习方法》

一、简介

  提升算法(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})$$ 

原文地址:https://www.cnblogs.com/ylxn/p/13375940.html