梯度提升(Gradient boosting)和GBDT

一、梯度提升(Gradient boosting)

提升既可以用于分类,也可以用于回归。提升背后的思想是:每一步产生一个弱学习器,通过不断地把若学习器加权累加到总模型当中,来最终得到一个强预测模型。其基本公式如下:

                                                                                                             (1)

其中,m为基学习器个数,beta是系数,f 是基学习器,F就是总的模型。我们的最终目的是得到一个优秀的总模型,尽可能的使得损失函数最小,即:

              (2)

上面说了,F最终是由多个基学习器加权组成的,所以不可能同时求解。因此,梯度提升使用了一种贪心的算法,在刚开始时,模型F为一个常函数,然后每次只求解一个基学习器及其系数,从而一步一步地来提升F的性能。这听起来是不是很像梯度下降法,是的,Gradient boosting就是每次让新加的这一项等于损失函数的负梯度,从而最快地最小化损失函数。所以,新加的一项可以写成下式:

                                                                   (3)

上式中gamma为称为步长,包含了负梯度的负号以及beta参数。公式左边除去gamma的部分一般称为伪残差(也可以称为梯度),即:

                                                                 (4)

根据上式,F的上一步模型已知,对于每一个训练样本,我们总可以求出它的伪残差R。这样,只要假设一种基学习器,我们就可以根据训练样本的x和y值(即伪残差R,用基学习器来拟合)来训练得到当前的基学习器fm。最后将训练完的基学习器带入(2)式,使得损失函数最小,即可求出gamma。

二、GBDT(Gradient Boosting Decision Tree)

在GDBT中,其基学习器是CART决策树,也就是每一次用CART决策树去拟合各个样本的伪残差。另外,不管是分类还是回归问题,在拟合时使用的都是CART决策树中的回归树。

1、CART决策树

CART决策树是一种基于二叉树的机器学习算法,其既能处理回归问题,又能处理分类为题。这里简单介绍一下CART决策树中的回归树。
假设有n个训练样本,损失函数定义为均方误差(注意,这里的损失指的是树中的criterion,类似信息增益,Gini指数;而不是原问题中的loss,原问题既可以是分类也可以是回归)。这n个样本一开始都在根节点,那么此时进入该节点的样本预测值都为该节点的训练均值,所以此时的损失值为:
                                                                    (5)
接下来就是遍历每一个特征,然后在特征中寻找一个划分点,让大于和小于该值的样本分别进入左右两个子节点,使得左右两个节点的损失值之和最小。即:
  (6)
然后按照上述步骤递归下去,直到达到预设的条件为止,比如树的最大深度等。

2、GDBT

GDBT的第m颗树是根据伪残差训练拟合出来的。令第m颗树树有J个叶子节点即J个空间,则该树的输出可表示如下:
                                                               (7)
b是样本x进入叶子节点 j 后的预测值, I表示样本x是否属于第j个叶子节点。然后,最小化损失函数可表示为:
                     (8)
最后,使用线性搜索法 对树的每个区域分别计算步长,对每个区域的步长和每个区域的预测值合并,从而每个区域合并后的步长可通过下面两式求解:
                                      (9)
                                                               (10)

3、总结:

1)、GDBT中有两个基本的参数,一个是loss,一个是criterion。前者用来指定原问题的损失函数,比如log loss对应分类问题,最小平方误差对应回归问题;后者用来指定CART决策树做回归时衡量节点划分好坏的标准,比如mse。
2)、和其它模型一样,GDBT也会出现过拟合的现象,主要的解决方法有:控制树的深度;控制叶子节点的数目;设置叶子节点包含的最少样本数目等。另外,在拟合每一颗CART树时,可以设置训练样本采样比例小于1,采用随机梯度提升的方法,这样能够增加随机性,通过减少方差来防止过拟合。对于特征,也可通过设置采用的最大特征个数来达到同样的目的!

猜你喜欢

转载自blog.csdn.net/ye1215172385/article/details/79575029