Gradient Boosted Decision Tree详解
第二次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇的内容主要来自于《机器学习》和《机器学习技法》,以及自己的一些见解。
预备知识:
这一部分主要是谈一谈Adaboost的适用范围,以及Adaboost的更新中涉及到的基础数学公式和定理的推导。
Adaboost的适用范围
若f(x)f\left(x\right)f(x)为样本xxx的实际标签值,H(x)H\left(x\right)H(x)为样本xxx的预测标签值,则Adaboost的指数损失函数可以表示为,

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

由此可见,Adaboost在未经修改的情况下只适用于二元分类问题。
Adaboost的更新
Adaboost的每轮迭代都会基于当前样本权值产生一个基学习器hth_tht,和这个基学习器的权重αt\alpha_tαt,并基于这两个条件进行样本分布(权值)的更新,假设第t-1轮迭代产生了学习器Ht−1=∑i=1t−1αihiH_{t-1}=\sum_{i=1}^{t-1}\alpha_ih_iHt−1=∑i=1t−1αihi,根据Adaboost中给出的指数损失函数,可以推得第t轮的基学习器hth_tht和权重αt\alpha_tαt的选取要满足下面的式子

即,他们的选取要以最小化Adaboost的指数损失函数为目标。
推导过程
主要分为五部分:Gradient Boost、训练基学习器、选择基学习器的权值αt\alpha_tαt、训练集样本的更新和Gradient Boosted Decision Tree。
Gradient Boost
由于未经修改的AdaBoost使用指数损失函数作为目标函数,且使用二元分类器作为其基学习器,导致其适用范围不是很广泛【1】,因此在Gradient Boost中,决定采用任意的学习算法产生基学习器,并将损失函数变为适用于基学习器的“任意”损失函数。
同样,假设第t-1轮迭代产生了学习器Ht−1=∑i=1t−1αihiH_{t-1}=\sum_{i=1}^{t-1}\alpha_ih_iHt−1=∑i=1t−1αihi,则第t轮的基学习器hth_tht和权重αt\alpha_tαt的选取要满足下面的式子

其中,err(~)err\left(\tilde{}\right)err(~)可以为平方损失函数、hinge损失函数等等,由此可见,Gradient Boost可以通过扩展误差的度量方式,来达到接收更多类型的基学习器的目的(e.g. regression/soft classification/etc),下面以回归(Regression)任务为例。
训练基学习器
由式(1)可知,如果先忽略权重αt\alpha_tαt的影响(先假设αt\alpha_tαt为一个常数,下面式(3)的推导中用到),基学习器hth_tht