梯度提升树

梯度提升树,是利用损失函数的负梯度在当前模型的值作为残差的一个近似值,进行拟合回归树,这样只要可以求梯度的函数,我们都可以进行求解。
为了简便去掉求和符号和下标,改用向量化表示,则损失函数为:
loss=L(y,fm(x))=L(yfm1(x)hm(x;am))\text {loss}=L\left(y_, f_{m}\left(x\right)\right)=L \left(y-f_{m-1}\left(x\right)-h_{m}\left(x; a_{m}\right)\right)

按照泰勒一阶展开(注意这里xgboost用的是二阶展开式)进行展开:
 loss =L(y,fm1(x)+hm(x;am))=L(y,fm1(x))+L(y,fm1(x))fm1(x)hm(x;am)\text { loss }=L\left(y, f_{m-1}(x)+h_{m}\left(x ; a_{m}\right)\right)=L\left(y, f_{m-1}(x)\right)+\frac{\partial L\left(y, f_{m-1}(x)\right)}{\partial f_{m-1}(x)} h_{m}\left(x ; a_{m}\right)
在此处我们发现L(Y,Fm1(x))L(Y,F_{m-1}(x))是上一步m-1对应的损失,如果在此处,我们令
hm(x;am)=L(y,fm1(x))fm1(x)h_{m}\left(x ; a_{m}\right)=-\frac{\partial L\left(y, f_{m-1}(x)\right)}{\partial f_{m-1}(x)}
则可以保证,上式后面的部分减去的一定是一个正数,所以这样取负梯度,可以使得损失一步一步的降低,故理论上这种方法时有效的。
算法强化 —— 提升树算法(二)
进一步推到

我们的基分类器是回归树,一个包含J个叶子节点的回归树模型可以表示为
h(x;{bj,Rj}1J)=b=jJbjI(xRj)h\left(x ;\left\{b_{j}, R_{j}\right\}_{1}^{J}\right)=\sum_{b=j}^{J} b_{j} I\left(x \in R_{j}\right)
其中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)=Fm1(x)+ρmj=1JbjmI(xRjm)F_{m}(x)=F_{m-1}(x)+\rho_{m} \sum_{j=1}^{J} b_{j m} I\left(x \in R_{j m}\right)
bjmb_{jm}常用的计算方式可以落在该叶子节点的样本点的平均值,也就是:
bjm=averagexiRjmy~ib_{jm} = average_{x_i \in R_{jm}} \tilde{y}_i

有了下降的方向,我们还需要最好的步长,缩放因子ρm\rho_m是线性搜索方式的一种解决方案,我们先求bjmb_jm,然后在求解ρm\rho_m
γjm=ρmbjm\gamma_{jm} = \rho_{m}b_{jm}则表达式为:
Fm(x)=Fm1(x)+j=1JγjmI(xRjm)F_{m}(x)=F_{m-1}(x)+\sum_{j=1}^{J} \gamma_{j m} I\left(x \in R_{j m}\right)

这样就可以通过优化如下公式来获取最优的系γjm\gamma_{jm}
{γjm}1J=argminγj,1Ji=1NL(yi,Fm1(xi)+j=1JγjI(xRjm))\left\{\gamma_{j m}\right\}_{1}^{J}=\operatorname{argmin}_{\gamma_{j} ,_{1}^J} \sum_{i=1}^{N} L\left(y_{i}, F_{m-1}\left(x_{i}\right)+\sum_{j=1}^{J} \gamma_{j} I\left(x \in R_{j m}\right)\right)
由于回归树产生的叶子节点各个区域之间是不相交的,且所有的样本最终都会属于某个叶子节点,所以:
γjm=argminγxiRimL(yi,Fm1(xi)+γ)\gamma_{j m}=\operatorname{argmin}_{\gamma} \sum_{x_{i} \in R_{i m}} L\left(y_{i}, F_{m-1}\left(x_{i}\right)+\gamma\right)
给定当前Fm1(xi)F_{m-1}(x_i),γjm\gamma_{jm}可以作为叶子节点的值,该值可以看做是基于损失函数L的每个叶子节点的最理想的常数更新值,也可以认为γjm\gamma_{jm}是既有下降方向又有下降步长的值。
算法强化 —— 提升树算法(二)

相关文章:

  • 2021-12-03
  • 2021-09-18
  • 2021-08-05
  • 2021-06-10
  • 2021-08-10
  • 2022-02-23
  • 2021-06-13
  • 2021-07-25
猜你喜欢
  • 2021-05-20
  • 2022-12-23
  • 2021-10-01
  • 2021-08-26
  • 2021-09-20
  • 2021-11-10
相关资源
相似解决方案