GBDT学习笔记

157 阅读2分钟

GBDT属于集成学习Boosting中的一种算法,其中弱学习器为CART回归树。

迭代过程:假设上一轮通过迭代得到的强学习器是ft1(x)f_{t-1}(x),损失函数为L(y,ft1(x))L(y, f_{t-1}(x)),则本轮迭代目标是找到一个CART回归树模型的弱学习器ht(x)h_t(x),让本轮的损失函数L(y,ft(x))=L(y,ft1(x)+ht(x))L(y, f_{t}(x)) =L(y, f_{t-1}(x)+ h_t(x))最小,也就是说在本轮中要找到决策树使得样本损失尽可能变得更小。那么如何找到损失函数的拟合方法呢?

GBDT利用损失函数的负梯度来拟合本轮损失的近似值,再将该损失拟合的近似值作为本轮的因变量进而拟合一个CART回归树。

为什么使用损失函数的负梯度拟合损失呢?

GBDT的求解过程就是梯度下降在函数空间中的优化过程,我们通过对损失函数进行一阶泰勒展开证明负梯度是损失函数下降最快的方向。

损失函数一阶泰勒展开:f(θk+1)f(θk)+f(θk)θk(θk+1θk)f(\theta_{k+1})\approx f(\theta_k)+\frac{\partial f(\theta_k)}{\partial \theta_k}(\theta_{k+1}-\theta_k)

也就是说无论损失函数是什么形式,每个决策树拟合的都是负梯度。当损失函数是均方损失时,负梯度刚好是残差,残差只是特例,并非一开始设计GBDT的时候就是想去拟合残差。(公式推导后补))

第t轮的第i个样本的损失函数的负梯度表示为rti=[L(yi,f(xi)))f(xi)]f(x)=ft1    (x)r_{ti} = -\bigg[\frac{\partial L(y_i, f(x_i)))}{\partial f(x_i)}\bigg]_{f(x) = f_{t-1}\;\; (x)}

,将其作为因变量,利用(xi,rti)    (i=1,2,..m)(x_i,r_{ti})\;\; (i=1,2,..m),进一步拟合成CART回归树,也就得到了第t颗回归树,其对应的叶节点区域Rtj,j=1,2,...,JR_{tj}, j =1,2,..., JJJ为叶子节点个数。针对区域中每一个叶子节点里的样本,我们求出使损失函数最小,也就是拟合叶子节点最好的的输出值ctjc_{tj}ctj=arg  mincxiRtjL(yi,ft1(xi)+c)c_{tj} = \underbrace{arg\; min}_{c}\sum\limits_{x_i \in R_{tj}} L(y_i,f_{t-1}(x_i) +c),这样我们就得到了本轮的决策树拟合函数如下:ht(x)=j=1JctjI(xRtj)h_t(x) = \sum\limits_{j=1}^{J}c_{tj}I(x \in R_{tj})

最终在本轮得到的强学习器为:ft(x)=ft1(x)+j=1JctjI(xRtj)f_{t}(x) = f_{t-1}(x) + \sum\limits_{j=1}^{J}c_{tj}I(x \in R_{tj})