avatar

机器学习(八)集成学习之AdaBoost

一、模型介绍

   AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分(更富信息)的样本上。虽然AdaBoost方法对于噪声数据和异常数据很敏感。但相对于大多数其它学习算法而言,却又不会很容易出现过拟合现象。

   AdaBoost是一种”加性模型”,即基学习器的线性组合:

   整体要做的事情,就是最小化指数损失函数:

1、训练过程

   最初,训练集会有一个初始的样本权值分布(平均分布),基于训练集$ D$ 与该分布$ D_t$ 训练一个基学习器$ h_t$ ,估计$ h_t$ 的分类误差,根据误差确定分类器$ h_t$的权重,根据误差等信息重新确定样本的权值分布$ D_{t+1}$ (为分类错误的样本增加权重),伪代码如下图所示:

1

   接下来的部分是伪代码中的公式推导,如果不想看的,可直接跳过这些,直接到样本分布&重采样后再看。


2、损失函数的确定

   我们为什么要用指数损失函数呢?下面来看,当我们最小化指数损失函数是,我们是否能够得到最优的分类器$ H(x)$ 。

   计算损失函数对$ H(x)$ 的偏导:

   令偏导数为0,我们可得:

   看一下,我们得到的$ H(x)$ 是都是最优的,是否满足分类要求?

   我们可以知道,$ sign(H(x))$ 达到了贝叶斯最优错误率,也就是说该损失函数是可以的。


3、分类器权重$ \alpha_t$ 的确定

   我们基于分布$ D_t$ 训练出来了一个分类器$ h_t$ ,那么我们该给他们分配怎样的权重,才能最小化损失函数呢?

   观察$ \alpha_th_t$ 的损失函数形式:

   其中$ \epsilon_t = P_{x\sim D_t}(h_t(x)\ne f(x))$ ,$ Ⅱ(·)$ 表示概率,计算损失函数对$ \alpha_t$ 的导数:

   令导数为0,我们可得:


4、样本权重分布的确定

   AdaBoost算法,在获得$ H_{t-1}$ 之后,样本分布将进行调整,使下一轮的基学习器$ h_t$ 能纠正$ H_{t-1}$ 的一些错误,理想的$ h_t$ 能纠正$ H_{t-1}$ 的全部错误,即最小化:

   我们对$ e^{-f(x)h_t(x)}$ 进行泰勒展开,并考虑到$ f^2(x)=h_t^2(x)=1$ ,我们得到:

   因此,我们要得到的理想的基学习器是:

   在第$ t$ 次迭代时,$ H_{t-1}(x)$ 是已知的,因此可以将其当作常数,则上式转换为:

   我们可以令$ D_t$ 表示为下面这个分布:

   根据数学期望的定义,这等价于:

   因为$ f(x),h(x) \in {-1,1}$ ,那么:

   那么,我们得到的理想的学习器,就是:

   因此,在分布$ D_t$ 下,我们的弱分类器就能够得到最优值,根据残差逼近的思想,对分布进行迭代式的逼近,得到:


5、样本分布&重采样

   Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。

   对无法接受带权样本的基学习器算法,则可通过“重采样法”进行处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得到的样本集对基学习器进行训练。


6、AdaBoost示例

2

我们可以将基分类器设为线性分类器,那么迭代过程中的分类效果图如上图所示。


7、AdaBoost 总结

  • 简单,不用做特征筛选
  • 不用担心overfitting!
  • adaboost是一种有很高精度的分类器
  • 只适用于二分类任务


参考链接

文章作者: 白丁
文章链接: http://baidinghub.github.io/2020/04/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E5%85%AB%EF%BC%89%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0%E4%B9%8BAdaBoost/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BaiDing's blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论