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 \rightarrow \left \{ -1,+1 \right \}$$

    (b)计算$G_{m}$在训练数据集上的分类误差率

$$e_{m}=P(G_{m}(x_{i})\neq y_{i})=\sum_{i=1}^{N}\omega_{mi}I(G_{m}(x_{i})\neq y_{i})$$

    (c)计算$G_{m}(x)$的系数

$$\alpha_{m}=\frac{1}{2}log\frac{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}=\begin{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})\neq 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})\neq 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}[2\sqrt{e_{m}(1-e_{m})}]=\prod_{m=1}^{M}\sqrt{(1-4 \gamma_{m}^{2})}\leqslant exp(-2\sum_{m=1}^{M}\gamma_{m}^{2})$$ 

posted @ 2020-07-25 11:11  ylxn  阅读(112)  评论(0编辑  收藏  举报