模式识别笔记4-集成学习之AdaBoost

目前集成学习(Ensemble Learning) 分为两类:

  • 个体学习器间存在强依赖关系、必须串行化生成的序列化方法:Boosting
  • 个体学习器间不存在强依赖关系,可同时生成的并行化方法:Bagging 和 随机森林

这里先来讲下代表Boosting家族的AdaBoost。
Boosting 是一族可以将弱学习器提升为强学习器的算法。

算法机制
从初始训练集训练一个基学习器(Base Learner) ,根据基学习器的表现对训练样本分布进行调整,对做错的样本赋予更大的权重,基于调整后的样本分布训练下一个基学习器,直到基学习器的数目达到指定的值 (T),,同时进行学习器权重调整。

1. AdaBoost分类算法流程

假设我们有:

  • 训练集 (D={(x_1, y_1), (x_2, y_2), cdots, (x_m, y_m)})

  • 训练轮数(学习器数目): (T)

  • 基学习器 (h_t(x), t={1,2,3,cdots,T}) ,对应于学习算法

  • 基学习器权重 (alpha_t)

  • 样本分布 (mathcal D), 训练集在第 (t) 个分类器上的样本权重为:

    [ otag mathcal{D}_t= (w_{t1},w_{t2},cdots, w_{tm}) ]

针对以上条件,AdaBoost的算法流程如下:

[egin{align} &mathcal D_1 =1/m\ & ext{for }t = 1,2, cdots,T ext{ do} otag \ & e_t = P(h_t(x_i) eq y_i) = sum_{i=1}^mw_{ti}I(h_t(x_i) eq y_i)\ & alpha_t = frac{1}{2}ln(frac{1-e_t}{e_t})\ & ext{update distribution }D_{t+1}: otag \ & w_{t+1,i} = frac{w_{t,i}}{Z_t} imesexp(-alpha_ty_ih_t(x_i)) ext{ for } i=1,2,cdots,m\ & ext{end for} otag end{align} ]

根据这个算法,我们一步步讲AdaBoost的流程。

(1) 初始化权重

对于每个样本,我们令其的初始化权重均为 (frac{1}{m})

对于指定的基学习器数目 (T),我们知道Boosting 是串行化训练,每一个基学习器都是基于上一个已训练的基学习器继续训练得到的,所以接下来要做 (T) 个循环

(2) 获得集合分类误差

以二分类 ({+1,-1})为例(多分类是二分类的推广),第 (t) 个基学习器在训练集上的加权误差即如公式(2)所示。

(3) 基学习器获得权重系数

由公式(3)可以得到当前基学习器的权重系数。

由公式可以知道,误差率越高,则当前基学习器的权重系数越小。至于为什么使用这个系数公式,我们放到Adaboost的损失函数优化的时候再讲。

(4) 更新样本权重

单独把公式(4)拿出来讲:

[egin{align} w_{t+1,i} = frac{w_{t,i}}{Z_t} imesexp(-alpha_ty_ih_t(x_i)) end{align} ]

其中 (Z_t) 是归一化因子:

[egin{align} Z_t = sum_{i=1}^mw_{t,i} imes exp(-alpha_ty_ih_t(x_i)) end{align} ]

可以看到,如果第 (i) 个样本分类错误,则 有:

[egin{align} y_ih_t(x_i)<0 & Rightarrow exp(-alpha_i y_ih_t(x_i))>1\ &Rightarrow w_{t+1,i}>w_{t,i} end{align} ]

则错误分类的样本会在下一个基学习器的训练中,在数据中占有更高的比重。具体为什么用这个权重更新公式,还是放到损失函数优化的时候讲。

(5) 最终的分类策略

最终的强分类器采用了加权平均:

[egin{align} H(x)= ext{sign}(sum_{t=1}^Talpha_th_t(x)) end{align} ]

2. AdaBoost损失函数

AdaBoost使用指数损失函数:

[egin{align} ell _{exp}(H|mathcal D)=sum_{i=1}^mexp (-y_iH_T(x)) end{align} ]

通过最小化这个损失函数,我们可以推导出基学习器的权重系数更新策略和样本权重更新策略。至于为什么最小化指数函数误差就可以最小化分类误差,将在最后推导。

基学习器权重更新策略推导

我们知道,(t) 轮训练获得的基学习器是由上一个轮的学习器所得,即有:

[egin{align} H_t(x)=H_{t-1}(x)+alpha_th_t(x) end{align} ]

最小化 (t) 轮学习后得到的强分类器损失:

[egin{align} (alpha_t, h_t(x) )=argminlimits_{alpha, h}sum_{i=1}^mexp(-y_i(H_{t-1}(x)+alpha_th_t(x))) end{align} ]

我们令 (w_{ti}’=exp(-y_iH_{t-1}(x))),显然,它的值不依赖于 $alpha_t $ 和 (h_t(x)), 仅仅依赖于 (H_{t-1}(x)), 随着迭代改变。

带回式子(12),得

[egin{align} (alpha_t, h_t(x) )=argminlimits_{alpha, h}sum_{i=1}^mw_{ti}'exp(-y_ialpha_th_t(x)) end{align} ]

为了极小化这个损失函数,我们需要极小化第 (t) 个分类器误差。即:

[egin{align} h_t(x)=argmin limits_{h}sum_{i=1}^mw_{ti}'I(y_i eq h(x_i)) end{align} ]

将(14)带入损失函数:

[egin{align} otag sum_{i=1}^mw_{ti}'exp(-y_ialpha_th_t(x))&=sum_{y_i=h_t(x_i)}w_{ti}'e^{-alpha}+sum_{y_i eq h_t(x_i)}w_{ti}'e^alpha\ &=sum_{i=1}^mw_{ti}'e^{-alpha}-sum_{y_i eq h_t(x_i)}w_{ti}'e^{-alpha}+sum_{y_i eq h_t(x_i)}w_{ti}'e^alpha\ otag &=(e^alpha-e^{-alpha})sum_{y_i eq h_t(x_i)}w_{ti}'+e^{-alpha}sum_{i=1}^m w_{ti}' end{align} ]

对于(15)求偏导,令其为0,得:

[egin{align} (e^alpha+e^{-alpha})sum_{y_i eq h_t(x_i)}w_{ti}'-e^{-alpha}sum_{i=1}^m w_{ti}'=0 end{align} ]

在基学习器的迭代中,每轮的分类误差为:

[egin{align} e_t = sum_i^m w_{ti}I(y_i eq h_t(x_i))=sum_{y_i eq h_t(x_i)}w_{ij} end{align} ]

注意到 :

[egin{align} e_t = frac{ sum_i^m w_{ti}I(y_i eq h_t(x_i))}{sum_{i=1}^m w_{ti}'} end{align} ]

则,式(16)变为:

[egin{align} (e^{alpha_t}+e^{-alpha_t})e_t - e^{-alpha_t}=0 end{align} ]

解得:

[egin{align} alpha_t = frac{1}{2}ln left( frac{1-e_t}{e_t} ight) end{align} ]

样本权重更新策略推导

根据上一节自定义的 (w_{ti}'),我们知道它与 权重参数只差一个归一化因子 (Z_t)。有:

[egin{align} w_{t+1,i}'&=exp (-y_iH_t(x))\ &=exp(-y_i(H_{t-1}(x)+alpha_th_t(x)))\ &=exp(-y_iH_{t-1}(x)·exp(-y_ialpha_th_t(x))\ &=w_{t,i}'·exp(-y_ialpha_th_t(x)) end{align} ]

最小化指数函数误差=最小化分类误差?

最后讲下为什么最小化指数函数误差=最小化分类误差。

回顾一下指数函数误差。

[egin{align} ell _{exp}(H|mathcal D)=sum_{i=1}^mexp (-y_iH_T(x)) end{align} ]

为了最小化误差,我们对 (H(x))求偏导:

[ abla H(x)=e^{H(x)}P(y=-1|x)-e^{-H(x)}P(y=+1|x) ]

( abla H(x)=0), 解得:

[egin{align} H(x)&=frac{1}{2}lnfrac{P(y=+1|x)}{P(y=-1|x)} end{align} ]

则最终强分类器:

[egin{align} ext{sign}(H(x))&= ext{sign}left(frac{1}{2}lnfrac{P(y=+1|x)}{P(y=-1|x)} ight)\ &=mathop{ ext{arg max}} limits_{yin{+1,-1}}P(y|x) end{align} ]

这意味着最终强分类器达到了贝叶斯最优错误率。换言之,若指数函数最小化,则分类错误率也最小化。

参考资料

原文地址:https://www.cnblogs.com/HolyShine/p/9101672.html