← 上一篇 下一篇 →

传统监督学习方法续-集成学习

6. 提升方法 (李航书只写了adaboost,这里参考西瓜书,全补上了。)

提升方法基于一个定理:若一个概念是弱可学习的,那么它必然是强可学习的。
提升方法的三类基本方式 :stacking,bagging,boosting。 它们的结构图可以参考这篇,非常形象。
在提升算法中,基学习器可以是同质的,也可以是异质的。

  1. 输入$S = {(X_1,y_1),…(X_n,y_n)};$ 初始化样本权重$D_0 = {w_1, w_2,… w_n},其中 w_i = \frac{1}{N}$ ;弱分类器h(x) 。
  2. 假设最后输出的强学习器为$H_T(x)$,初始化$H_1(x) = 0$,那么需要进行T轮迭代,每轮在上一轮的基础上训练一个弱学习器,同时改变样本权重:
  3. for t = 1 to T do
    1. 计算当前样本权重D_t下的弱分类器$h_t(x)$的加权错误率 $\epsilon_t = P_{x~D_t}(h_t(x) \neq y) = \sum_{i=1}^{N} w_i I(h_t(x_i) \neq y_i)$ (这里容易发现算得就是误分类样本的权重的和)
    2. 通过$\epsilon_t$计算该弱分类器的权重 $\alpha_t = \frac{1}{2}ln(\frac{1-\epsilon_t}{\epsilon_t})$ 这个对数项确保当$\epsilon_t<0.5$时,模型比瞎猜好,$\alpha_t > 0$,分类器误差率越小,$\alpha_t$越大,这一轮的弱学习器就越重要。
    3. 更新样本权重,在这之前先算一个归一化因子$Z_t = \sum_{i=1}^{N} w_i exp(-\alpha_t y_i h_t(x_i))$,然后更新样本权重:
    4. 更新权重 $w_i \leftarrow w_i exp(-\alpha_t y_i h_t(x_i))/Z_t$,其中$y_i h_t(x_i)$为1表示分类正确,为-1表示分类错误,所以分类错误的样本权重会增加,分类正确的样本权重会减小(Adaptive),归一化因子确保权重仍然是和为1的概率分布。
    5. 组合得到当前的强分类器 $H_t(x) = H_{t-1}(x) + \alpha_t h_t(x)$
  4. end for
  5. 输出最终的强分类器 $H_T(x) = sign(\sum_{t=1}^{T} \alpha_t h_t(x))$
  6. 返回 $H_T(x)$

6.1.3 超级梯度提升 XGBoost

Extreme Gradient Boosting,是Gradient Boosting的一种高效实现,主要是在损失函数上做了改进,加入了正则项,使得模型更加健壮。

6.1.4 轻量梯度提升机LightGBM

关于GBDT和XGBoost,可以参考这里。
梯度提升决策树,是一种迭代的决策树算法,每次迭代都在训练集上拟合一个回归树,然后根据残差更新模型。

6.2 Bagging

Bagging方法的代表就是RF。