Boosting是一种通过组合弱学习器来产生强学习器的方法。
基本思想:
※ Boosting算法可以看做是Bagging算法的改良版,它强调关注训练集中预测错误的样本。通过不同基分类器的联合来提升整体的预测准确率。
※ Boosting算法是一系列算法的统称,具体有代表性的经典有:AdaBoost、GBDT
AdaBoost,是英文”Adaptive Boosting“(自适应增强)的缩写,由Robert Schapire在1995年提出。 前一个弱分类器分错的样本的权值(样本对应的权重)会得到加强,权重更新后的样本再次被用来训练下一个新的弱分类器。在每轮训练中,用总体(样本总体)训练新的弱分类器,产生新的样本权重。每个弱分类器的权重,会一直迭代,直到达到预定的错误率或达到指定的最大迭代次数。

Robert Schapire

https://www.cs.princeton.edu/~schapire/papers/explaining-adaboost.pdf
数据描述为一系列的$x$和$y$,$x$属于$X$样本集合,$y$的取值是-1和+1。
$(x_1, y_1),...,(x_m, y_m)$ 其中 $x_i ∈ X , y_i ∈ {−1,+1}.$
初始化训练数据的权重分布。每个样本的初始化权重$w=1/m$。(m为样本总数)
$D_1(i) = 1/m$ $i ∈ 1,...,m$
进行多次迭代,t=1,2….T。T表示迭代次数。
$t = 1,...,T$
使用$D_t$时刻的样本来训练弱学习器。
获得一个弱学习器 $h_t: X → {−1,+1}$
目标:选择一个最小权重误差的$h_t$
$ε_t = Pr_{i∼D_t}[h_t(x_i)\neq y_i]$
计算弱分类器的权重$α_t$,表示弱分类器在最终分类器中的重要程度。其中 $ε_t$ 就是为上步中的$ε_t$(误差函数的值)
$α_t =\frac{1}{2}ln(\frac{1−ε_t}{ε_t})$
更新 $i = 1,...,m$ 每个样本的权重,得到下一个训练数据集$D_{t+1}$
$D_{t+1}(i) = \frac{D_t(i)exp(-\alpha_ty_ih_t(x_i))}{Z_t}$
其中 $Z_t$ 是一个归一化因子(选择它是为了使 $D_{t+1}$ 成为一个分布)。
组合弱学习器,输出最终强学习器组合$H(x)$
$H(x) = sign(\sum_{t=1}^{T}\alpha_th_t(x))$
$sign$ 函数用于求数值的正负。数值大于0,为1。小于0,为-1.等于0