Bagging

Bagging的策略

  • 从样本集中重采样(有重复的)选出n个样本
  • 在所有属性上,对这n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等)
  • 重复以上两步m次,即获得了m个分类器
  • 将数据放在这m个分类器中,最后根据这m个分类器的投票结果,决定数据属于哪一类。

Boosting

  • 提升是一个机器学习计数,可以用于回归和分类问题,它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gradient boosting)
  • 梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合;提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部极小值。
  • 提升的理论意义:如果一个问题存在弱分类器,则可以通过提升的方法得到强分类器。

提升算法推导

Bagging and Boosting

GBDT(梯度提升决策树)

梯度提升的典型基函数即决策树(尤其是CART)
在第m步的梯度提升是根据伪残差数据计算决策树tm(x)t_m(x)。令树tm(x)t_m(x)的叶结点数目为J,即树tm(x)t_m(x)将输入空间划分为J个不相交区域R1m,...,RJmR_{1m},...,R_{Jm},并且决策树tm(x)t_m(x)可以在每个区域中给出某个类型的确定性预测。使用指示记号I(x)I(x),对于输入x,tm(x)t_m(x)为:
tm(x)=j=1JbjmI(xRjm)t_m(x)=\sum_{j=1}^{J}b_{jm}I(x\in R_{jm})
其中,bjmb_{jm}是样本x在区域RjmR_{jm}的预测值。

  • 使用线性搜索计算学习率,最小化损失函数:
    Fm(x)=Fm1(x)+γmtm(xi)F_m(x)=F_{m-1}(x)+\gamma_m\cdot t_m(x_i)
    γm=argminγi=1nL(yi,Fm1(xi)+γtm(xi))\gamma_m=argmin_{\gamma}\sum_{i=1}^{n}L(y_i, F_{m-1}(x_i)+\gamma\cdot t_m(x_i))
  • 进一步:对树的每个区域分别计算步长,从而系数bjmb_{jm}被合并到步长中,从而:
    Fm(x)=Fm1(x)+j=1JγjmI(xRjm)F_m(x)=F_{m-1}(x)+\sum_{j=1}^{J}\gamma_{jm}I(x\in R_{jm})
    γjm=argminγxiRjmL(yi,Fm1(xi)+γtm(xi))\gamma_{jm}=argmin_{\gamma}\sum_{x_i\in R_{jm}}L(y_i, F_{m-1}(x_i)+\gamma\cdot t_m(x_i))

XGboost

算法推导
Bagging and Boosting

XGboost的实现中使用了并行运算,因此训练速度很快。

Adaboost

理论推导
Bagging and Boosting

  • 总结
    • Bagging可以减少训练方差,对于不剪枝的决策树,神经网络等学习器有良好的集成效果
    • Boosting可以减少偏差,能够基于泛化能力较弱的学习器构造强学习器

相关文章: