集成学习之Adaboost算法

1. 回顾boosting算法的基本原理

    在集成学习原理小结中,我们已经讲到了boosting算法系列的基本思想,如下图:
集成学习之Adaboost算法

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

    不过有几个具体的问题Boosting算法没有详细说明:

  1. 如何计算学习误差率e?
  2. 如何得到弱学习器权重系 α\alpha ?
  3. 如何更新样本权重D?
  4. 使用何种结合策略?

2. Adaboost算法的基本思路

2.1、AdaBoost(Adaptive Boosting, 自适应增强)算法采取的方法是:

  1. 提高上一轮被错误分类的样本的权值,降低被正确分类的样本的权值;
  2. 线性加权求和。误差率小的基学习器拥有较大的权值,误差率大的基学习器拥有较小的权值。

2.2、Adaboost算法图解

集成学习之Adaboost算法

2.3、算法步骤

    Adaboost 算法有多种推导方式,比较容易理解的是基于 “加性模型”(additive model),即基学习器的线性组合。

    周志华《机器学习》p174有证明,加性模型的损失函数可为指数函数。指数损失函数是分类任务原本0/1损失函数的一致(consistent)替代损失函数,由于指数损失函数有更好的数学性质,例如处处可微,所以我们用它替代0/1损失作为优化目标。

    在 Adaboost 算法中,第一个基分类器 h1h_1 是通过直接将基学习算法用于初始数据分布而得;此后迭代地生成 hth_tαt\alpha_t,当基分类器 hth_t 基于分布 DtD_t 产生后,该基分类器的权重 αt\alpha_t 应使得 αtht\alpha_th_t 最小化指数损失函数

集成学习之Adaboost算法
    上式中 I()I(⋅) 是指示函数,I(f(x)=ht(x))I\left(f(x)=h_t(x)\right)表示在数据集 DtD_tf(x)=ht(x)f(x)=h_t(x) 的所有数据组成的集合。

    其中 ϵt=PxDt(ht(x)f(x))\epsilon_t=P_{x-D_t} \left(h_t(x)\not=f(x)\right),考虑指数损失函数的导数

集成学习之Adaboost算法
    令(8.10)为零可解得
集成学习之Adaboost算法

    这恰是算法图解(8.3)中算法第 6 行的分类器权重更新公式。

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

    注意到 f2(x)=ht2(x)=1f^2(x)=h^2_t(x)=1,式(8.12)可使用 ef(x)ht(x)e^{-f(x)h_t(x)} 的泰勒展式近似为
集成学习之Adaboost算法

    于是,理想的基学习器
集成学习之Adaboost算法
集成学习之Adaboost算法

    注意到 ExD[ef(x)Ht1(x)]E_{x-D} [e^{-f(x)H_{t-1}(x)}] 是一个常数,令 DtD_t 表示一个分布
集成学习之Adaboost算法
    根据数学期望的定义,这等价于令
集成学习之Adaboost算法
    由 f(x)h(x)f(x),h(x) \in{1,+1-1,+1},有
集成学习之Adaboost算法
    则理想的基学习器
集成学习之Adaboost算法

    由此可见,理想的 hth_t 将分布在 DtD_t 下最小化分类误差。因此,弱分类器将基于分布 DtD_t 来训练,且针对 DtD_t 的分类误差应小于 0.5 ,这在一定程度上类似 “残差逼近” 的思想,考虑到 DtD_tDt+1D_{t+1} 的关系,有
集成学习之Adaboost算法
    这恰是图 8.3 中算法第 7 行的样本分布更新公式。

3、Adaboost小结

    理论上任何学习器都可以用于Adaboost。但一般来说,使用最广泛的 Adaboost 弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。

3.1、Adaboost的主要优点

  1. Adaboost作为分类器时,分类精度很高
  2. 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
  3. 作为简单的二元分类器时,构造简单,结果可理解。
  4. 不容易发生过拟合

3.2、Adaboost的主要缺点

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

Adaboost前向分步学习算法推导