写在前面
Adaboost是通过提升错分数据点的权重来定位模型的不足,而Gradient Boosting 是通过计算梯度(gradient)来定位模型的不足。
提升树(Boosting Decision Tree)BDT
我们利用平方误差来表示损失函数,其中每一棵回归树学习的是之前所有树的结论和残差,拟合得到一个当前的残差回归树。其中残差=真实值-预测值,提升树即是整个迭代过程生成的回归树的累加。
我们通过以下例子来详解算法过程,希望通过训练提升树来预测年龄。训练集是4个人,A、B、C、D年龄分别是14、16、24、26。样本中有购物金额、上网时长、经常到百度知道提问等特征。提升树的过程如下:
我们能够直观的看到,预测值等于所有树值的累加,如A的预测值=树1左节点(15)+树2左节点(-1)=14。因此给定当前决策树模型ft-1(x),只需拟合决策树的残差,便可迭代得到提升树.
负梯度
我们介绍了Boosting Decision Tree的基本思路,但是没有解决损失函数拟合方法的问题。针对这个问题,Freidman提出用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。了解Boosting Decision Tree方法后,我们便可将Gradient与Boosting Decision Tree相结合得到Gradient Boosting Decision Tree的负梯度拟合。