AdaBoost
Swift Lv6

AdaBoost 是属于 boosting 的一种经典算法。

Overview

AdaBoost算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2。如此重复进行,直到弱学习器数达到事先指定的数目 $T$ ,最终将这 $T$ 个弱学习器通过集合策略进行整合,得到最终的强学习器。

AdaBoost分类算法流程

输入样本集 $\boldsymbol{T}=\left\{\left(x, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots\left(x_{m}, y_{m}\right)\right\}$ ,类别为$\{ -1, +1 \}$,弱分类器迭代次数 $K$。输出为最终的强分类器 $f(x)$ 。

  1. 初始化样本集权重为:

  2. 对于 $k=1, 2, \dots, K$ :

    1. 使用具有权重 $D_k$ 的样本集来训练数据,得到弱分类器 $G_k(x)$

    2. 计算 $G_k(x)$ 的分类误差率:

    3. 计算弱分类器的权重系数:

      从上式可以看出,如果分类误差率 $e_k$ 越大,则对应的弱分类器权重系数 $\alpha_{k}$ 越小。即误差率小的弱分类器权重系数越大。

    4. 更新样本集的权重分布:

      其中 $Z_K$ 是归一化因子:

      从上式可以看出,如果第 $i$ 个样本分类错误,则 $y_{i} G_{k} < 0$ ,导致样本的权重在第 $k+1$ 个弱分类器中增大;如果分类正确,则权重在第 $k+1$ 个弱分类器中减少。

  3. 构建最终分类器:

对于Adaboost多元分类算法,其原理和二元分类类似。最主要区别在弱分类器的系数上。比如Adaboost SAMME算法,它的弱分类器的系数:

其中 $R$ 为类别数。如果 $R=2$ ,那么上式即是二分类的弱分类器系数。

AdaBoost回归算法流程

输入样本集 $\boldsymbol{T}=\left\{\left(x, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots\left(x_{m}, y_{m}\right)\right\}$ ,弱分类器迭代次数 $K$。输出为最终的强分类器 $f(x)$ 。

  1. 初始化样本集权重为:

  2. 对于 $k=1, 2, \dots, K$ :

    1. 使用具有权重 $D_k$ 的样本集来训练数据,得到弱分类器 $G_k(x)$

    2. 计算训练集上的最大误差:

    3. 计算每个样本的相对误差:

      • 线性误差:$e_{k i}=\frac{\left|y_{i}-G_{k}\left(x_{i}\right)\right|}{E_{k}}$
      • 平方误差:$e_{k i}=\frac{(y_{i}-G_{k}(x_{i}))^2}{E_{k}^2}$
      • 指数误差:$e_{k i}=1-\exp \left(\frac{-\left|y_{i}-G_{k}\left(x_{i}\right)\right|}{E_{k}}\right)$
    4. 计算回归误差率:

    5. 计算弱学习器的权重系数:

    6. 更新样本集的权重分布:

      其中 $Z_K$ 是归一化因子:

  3. 构建最终强学习器:

即取所有 $ ln \frac{1}{\alpha_{k}}, k=1,2, \ldots . K$ 的中位数值对于序号 $k^{*}$ 对应的弱学习器。

AdaBoost正则化

为了防止AdaBoost过拟合,我们加入正则化项:

与GBDT类似,该正则化项称作学习率。对于同样的训练集学习效果,较小的 $v$ 意味着我们需要更多的弱学习器的迭代次数。

AdaBoost总结

优点

  • Adaboost作为分类器时,分类精度很高
  • 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活
  • 不容易发生过拟合

缺点

  • 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性

参考

Powered by Hexo & Theme Keep
Unique Visitor Page View