统计学习方法--提高树模型(Boosting Tree)与梯度提高树(GBDT)

一、主要内容算法

  介绍提高树模型以及梯度提高树的算法流程函数

二、Boosting Tree学习

  提高树模型采用加法模型(基函数的线性组合)与前向分步算法,同时基函数采用决策树算法,对待分类问题采用二叉分类树,对于回归问题采用二叉回归树。提高树模型能够看做是决策树的加法模型:spa

  

  其中T()表示决策树,M为树的个数, Θ表示决策树的参数;blog

  提高树算法采用前向分部算法。首先肯定f0(x) = 0,第m步的模型是:学习方法

  

  对决策树的参数Θ的肯定采用经验风险最小化来肯定:方法

  

  对于不一样的问题采用的损失函数不一样,在决策树中使用的就是0/1损失函数,这部分的推导和前面的adaBoost中的关于分类的推导相同,不作详细介绍。对与回归问题来讲,通常采用平方偏差函数。im

  对于回归问题,关于回归树的生成能够参考CART算法中回归树的生成。对于如下问题:统计

  输入:经验

  输出:fM(x)

  对于一颗回归树能够表示为:

  

  那么在前向分步算法的第m步中也就是求解第m个回归树模型时,为了肯定参数须要求解:

  

  当采用平方偏差损失函数时,损失函数为:

  

  将上面的待求解式子带入到下面的平方偏差函数中能够获得如下表达式:

  

  这就代表每一次进行回归树生成时采用的训练数据都是上次预测结果与训练数据值之间的残差。这个残差会逐渐的减少。

  算法流程:

  (1)、初始化f0(x) = 0;

    (2)、对于m=1,2,...,M

   (a)按照 r= yi - fm-1(x)计算残差做为新的训练数据的 y

   (b) 拟合残差 r 学习一颗回归树,获得这一轮的回归树

   (c) 更新 

  (3) 获得回归提高树:

    

三、GBDT梯度提高树

  对于梯度提高树其学习流程与提高树相似只是再也不使用残差做为新的训练数据而是使用损失函数的梯度做为新的新的训练数据的y值,具体的来讲就是使用损失函数对f(x)求梯度而后带入fm-1(x)计算:

  

 GDBT与提高树之间的关系:

 提高树模型每一次的提高都是靠上次的预测结果与训练数据的label值差值做为新的训练数据进行从新训练,GDBT则是将残差计算替换成了损失函数的梯度方向,将上一次的预测结果带入梯度中求出本轮的训练数据,这两种模型就是在生成新的训练数据时采用了不一样的方法,那么在这个背后有啥区别?使用残差有啥很差?

  李航老师《统计学习方法》中提到了在使用平方偏差损失函数和指数损失函数时,提高树的残差求解比较简单,可是在使用通常的损失偏差函数时,残差求解起来不是那么容易,因此就是用损失函数的负梯度在当前模型的值做为回归问题中残差的近似值。 这是否是说通常的损失函数的梯度也得好求才能够啊。

相关文章
相关标签/搜索