梯度提升树
梯度提升树,是利用损失函数的负梯度在当前模型的值作为残差的一个近似值,进行拟合回归树,这样只要可以求梯度的函数,我们都可以进行求解。
为了简便去掉求和符号和下标,改用向量化表示,则损失函数为:
loss=L(y,fm(x))=L(y−fm−1(x)−hm(x;am))
按照泰勒一阶展开(注意这里xgboost用的是二阶展开式)进行展开:
loss =L(y,fm−1(x)+hm(x;am))=L(y,fm−1(x))+∂fm−1(x)∂L(y,fm−1(x))hm(x;am)
在此处我们发现L(Y,Fm−1(x))是上一步m-1对应的损失,如果在此处,我们令
hm(x;am)=−∂fm−1(x)∂L(y,fm−1(x))
则可以保证,上式后面的部分减去的一定是一个正数,所以这样取负梯度,可以使得损失一步一步的降低,故理论上这种方法时有效的。

进一步推到
我们的基分类器是回归树,一个包含J个叶子节点的回归树模型可以表示为
h(x;{bj,Rj}1J)=b=j∑JbjI(x∈Rj)
其中KaTeX parse error: Expected '}', got '\right' at position 11: \left{ R_J\̲r̲i̲g̲h̲t̲}_1^J不相交的区域,可以认为落在一颗决策树叶子节点上的x的值的集合,他们的集合覆盖了预测值的空间,KaTeX parse error: Expected '}', got '\right' at position 11: \left{ b_j\̲r̲i̲g̲h̲t̲}_1^J是叶子节点的值,也就是决策树预测的值,可以认为是模型h的系数。
利用上述回归树的表示方法
Fm(x)=Fm−1(x)+ρmj=1∑JbjmI(x∈Rjm)
而bjm常用的计算方式可以落在该叶子节点的样本点的平均值,也就是:
bjm=averagexi∈Rjmy~i
有了下降的方向,我们还需要最好的步长,缩放因子ρm是线性搜索方式的一种解决方案,我们先求bjm,然后在求解ρm
令γjm=ρmbjm则表达式为:
Fm(x)=Fm−1(x)+j=1∑JγjmI(x∈Rjm)
这样就可以通过优化如下公式来获取最优的系γjm
{γjm}1J=argminγj,1Ji=1∑NL(yi,Fm−1(xi)+j=1∑JγjI(x∈Rjm))
由于回归树产生的叶子节点各个区域之间是不相交的,且所有的样本最终都会属于某个叶子节点,所以:
γjm=argminγxi∈Rim∑L(yi,Fm−1(xi)+γ)
给定当前Fm−1(xi),γjm可以作为叶子节点的值,该值可以看做是基于损失函数L的每个叶子节点的最理想的常数更新值,也可以认为γjm是既有下降方向又有下降步长的值。
