Gradient Boosted Decision Tree详解

Gradient   Boosted   Decision   Tree详解

第二次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇的内容主要来自于《机器学习》和《机器学习技法》,以及自己的一些见解。

预备知识:

这一部分主要是谈一谈Adaboost的适用范围,以及Adaboost的更新中涉及到的基础数学公式和定理的推导。

Adaboost的适用范围

  若 f ( x ) 为样本 x 的实际标签值, H ( x ) 为样本 x 的预测标签值,则Adaboost的指数损失函数可以表示为,

其中, H ( x ) 符合加性模型,即

  由此可见,Adaboost在未经修改的情况下只适用于二元分类问题。

Adaboost的更新

  Adaboost的每轮迭代都会基于当前样本权值产生一个基学习器 h t ,和这个基学习器的权重 α t ,并基于这两个条件进行样本分布(权值)的更新,假设第t-1轮迭代产生了学习器 H t 1 = i = 1 t 1 α i h i ,根据Adaboost中给出的指数损失函数,可以推得第t轮的基学习器 h t 和权重 α t 的选取要满足下面的式子

即,他们的选取要以最小化Adaboost的指数损失函数为目标。

推导过程

主要分为五部分:Gradient   Boost、训练基学习器、选择基学习器的权值 α t 、训练集样本的更新和Gradient   Boosted   Decision   Tree。

Gradient   Boost

  由于未经修改的AdaBoost使用指数损失函数作为目标函数,且使用二元分类器作为其基学习器,导致其适用范围不是很广泛【1】,因此在Gradient   Boost中,决定采用任意的学习算法产生基学习器,并将损失函数变为适用于基学习器的“任意”损失函数。
  同样,假设第t-1轮迭代产生了学习器 H t 1 = i = 1 t 1 α i h i ,则第t轮的基学习器 h t 和权重 α t 的选取要满足下面的式子

其中, e r r ( ~ ) 可以为平方损失函数、hinge损失函数等等,由此可见,Gradient Boost可以通过扩展误差的度量方式,来达到接收更多类型的基学习器的目的(e.g.   regression/soft   classification/etc),下面以回归(Regression)任务为例。

训练基学习器

  由式(1)可知,如果先忽略权重 α t 的影响(先假设 α t 为一个常数,下面式(3)的推导中用到),基学习器 h t 要满足

其中, H t 1 = i = 1 t 1 α i h i ,可以得到

  另外,由Taylor公式可知,当 α t h t ( x n ) 很小时,其对 e r r ( ~ ) 的影响可以由下式代替

α t h t ( x n ) e r r ( ~ ) 梯度的乘积。由于误差损失函数 e r r ( H i ( x n ) , y n ) = ( H i ( x n ) y n ) 2 ,式(2)可近似等价于,

忽略掉常数项(constants)的影响后,上式等价于

若要使式(3)达到最小,最简单的办法是令 h t ( x n ) = a ( H t 1 ( x n ) y n ) ,其中, a > 0 ,在 h t ( x n ) 没有任何限制的情况下, a 可以取到 +
  但是,一般情况下,我们不希望 h t ( x n ) 的数量级过大,因此在式(3)中加入 L 2 正则项 ( h t ( x n ) ) 2 ,得到下式

经过配方法后得到,

忽略常数项的影响,得到

  由上式可以看输出,当 x n 为一个向量,输入为 ( x n , y n ) ,预测输出为 h t ( x n ) ,实际输出为 ( y n H i ( x n ) ) ,即数据集为 ( x n , ( y n H i ( x n ) ) ) 时,基学习器的选择要使上述平方误差达到最小,这与多变量回归问题十分相近,因此可以使用类似的算法(e.g.   C&RT,etc)解决上述问题。需要注意的是,这里的实际输出是上一轮迭代产生的学习器在样本 x n 上的预测输出 H t 1 ( x n ) ,与样本实际输出值 y n 的余数(residual)。

选择基学习器的权值 α t

  当基学习器 h t 决定下来后,由式(1)可知,权值 α t 要满足

即训练集为 ( h t ( x n ) , ( y n H t 1 ( x n ) ) )   n = 1 , 2 , . . . , N ,其中 h t ( x n ) 为一个变量时,权值 α t 的选取要使上述平方误差最小化,这与单变量回归问题十分相似,因此可采用类似算法(e.g.   SVR)解决上述问题。需要注意的是,这里的输入是基学习器 h t 对样本 x n 的预测输出值(大小为1X1,即一个变量),这里的实际输出与训练基学习器时一样。

训练集样本的更新

  用于训练基学习器 h t 的训练样本为 ( x n , ( y n H t 1 ( x n ) ) )   n = 1 , 2 , . . . , N ,这里的 x n 即原始数据集的输入不需要做任何改动,而实际输出 ( y n H t 1 ( x n ) ) 会随着迭代次数的改变和集成学习器 H i 的更新而更新。
  用于选择权值 α t 的训练样本为 ( h t ( x n ) , ( y n H t 1 ( x n ) ) )   n = 1 , 2 , . . . , N ,这里需要进行两个更新,其中, h t ( x n ) 在已经确定好基学习器 h t 后就成为了一个变量,他随每一轮迭代产生的 h t 的改变而更新,而实际输出 ( y n H t 1 ( x n ) ) 会随着迭代次数的改变和集成学习器 H i 的更新而更新。

Gradient   Boosted   Decision   Tree

伪代码如下图所示,

注:图中 g t = h t , s n = H t 1 ( x n ) .


参考资料

【1】《机器学习》周志华
【2】《机器学习技法》林轩田

猜你喜欢

转载自blog.csdn.net/qq_40793975/article/details/80976499