GBDT(Gradient Boosting Decision Tree)
1.提升树
提升树模型的基分类器为决策树,每次训练的结果影响下一次训练的决策树。我们这里只谈回归问题,训练的结果为M个决策树相加。对于二分类问题只需把AdaBoost算法的基分类器换为决策树。
用前向分步模型表示
fm(x)=fm−1(x)+T(x;θm)
其中
T(xi;θm)=∑j=1JcjI(xi∈Rj)
T(xi;θm) 为回归决策树,它将特征空间分割J个区域,每个区域表示为 Rj ,每个区域设定一个值 cj ,当 xi∈Rj 时 决策树的输出为 cj 。
当使用平均方差损失函数时
L(yi,fm(xi))=12(yi−fm−1(xi)−T(xi;θm))2=12(rmi−T(xi;θm))2=L(rmi,T(xi;θm))
rmi 是当前模型 fm−1(x) 的残差 yi−fm−1(xi) 。因此我们可以用当前模型的残差去拟合下一颗决策树。
2.梯度提升
当损失函数不是平均方差时,用损失函数的负梯度近似去代替当前模型的残差
[−∂L(yi,f(x))∂f(x)]f(x)=fm−1(x)
算法:
初始化 f0(x)=argminc∑Ni=1L(yi−c)
对于 m= 1,2,.., M
a 对于 i = 1,.., N 计算
rmi=[−∂L(yi,f(x))∂f(x)]f(x)=fm−1(x)
b 对 rm 拟合一颗回归树,得到第m颗树的叶结点区域 Rmj ,j=1,2,..,Jc 对 j=1,2,,…J 计算
cmj=argminc∑xi∈RmjL(yi,fm−1(x)+c)
d 更新 fm(x)=fm−1(x)+∑jj=1cmjI(x∈Rmj)得到提升数 fM(x) .