Gradient Boosting Decision Tree梯度决策提升树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradient Boosting Decision Tree梯度决策提升树相关的知识,希望对你有一定的参考价值。
参考技术AGBDT = Gradient Boosting + Decision Tree
先从Decision Tree开始讲,单个决策树容易过拟合,但我们可以通过各种方法,抑制决策树的复杂性,降低单颗决策树的拟合能力,然后通过其他手段来集成多个决策树,最终能够很好的解决过拟合的问题。
GBDT中的树都是回归树,不是分类树!!!
GBDT中的树都是回归树,不是分类树!!!
GBDT中的树都是回归树,不是分类树!!!
GBDT的核心在于 累加所有树的结果作为最终结果 ,而分类树的结果显然是没办法累加的,这点对理解GBDT相当重要(PS: 尽管GBDT调整后也可用于分类但不代表GBDT的树是分类树)。
上面说的手段就是Boosting。Boosting 是一族可将弱学习器提升为强学习器的算法,属于集成学习(ensemble learning)的范畴。
基于梯度提升算法的学习器 叫做 GBM(Gradient Boosting Machine)。理论上,GBM 可以选择各种不同的学习算法作为基学习器。GBDT 实际上是 GBM 的一种情况。
决策树可以认为是 if-then 规则的集合,易于理解,可解释性强,预测速度快。同时,决策树算法相比于其他的算法需要更少的特征工程,比如可以不用做特征标准化,可以很好的处理字段缺失的数据,也可以不用关心特征间是否相互依赖等。
弱决策树们通过梯度提升(Gradient Boosting)的方法,提升模型准确度。由此可见,梯度提升方法和决策树学习算法是一对完美的搭档。
GBDT 算法可以看成是由 K 棵树组成的加法模型。加法模型的通常表达:
其中, 为基函数, 为基函数的参数, 为基函数的系数。
在给定训练数据以及损失函数 的条件下,学习加法模型 成为 经验风险极小化即损失函数极小化问题 :
解决加法模型的优化问题,可以用前向分布算法(forward stagewise algorithm)因为学习的是加法模型,如果能够从前往后,每一步只学习一个基函数及其系数(结构),逐步逼近优化目标函数,那么就可以简化复杂度。具体地, 每步只需要优化如下损失函数:
更加具体的流程
提升树算法采用前向分步算法。首先确定初始提升树 , 第m步的模型是:
其中, 为当前模型,通过经验风险极小化确定下一棵决策树的参数
针对不同问题的提升树学习算法,损失函数的选择也不同。
在梯度提升算法中负梯度也被称为伪残差(pseudo-residuals)。
提升树用加法模型与前向分布算法实现学习的优化过程。当损失函数为平方损失和指数损失函数时,每一步优化是很简单的。但对于一般损失函数而言,往往每一步都不那么容易。对于这问题,Freidman提出了梯度提升算法。这是利用最速下降法的近似方法, 其关键是利用损失函数的负梯度在当前模型的值:
作为回归问题在当前模型的残差的近似值,拟合一个回归树。
为什么要拟合负梯度呢?这就涉及到泰勒公式和梯度下降法了。
定义: 泰勒公式是一个用函数在某点的信息描述其附近取值的公式。
公式:
一阶泰勒展开式:
在机器学习任务中,需要最小化损失函数 ,其中 是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选择初值 ,不断迭代更新 ,进行损失函数极小化。
迭代公式:
相对的,在函数空间里,有
此处把 看成提升树算法的第t步损失函数的值, 为第t-1步损失函数值,要使 ,则需要 , 此处 为当前模型的负梯度值,即第t步的回归树需要拟合的值。
对于Huber损失和分位数损失,主要用于健壮回归,也就是减少异常点对损失函数的影响。
总结一下 GBDT 的学习算法:
算法步骤解释:
Gradient Boosting
参考网址:
2. Wikipedia: Gradient boosting
一般Gradient Boosting:
输入:训练集$\{(x_{i}, y_{i})\}_{i=1}^{n}$,可导损失函数$L(y, F(x))$,迭代次数$M$
算法:
1. 用常数值初始化模型
\[F_{0}=\argmin_{\gamma} \sum_{i=1}^{n} L(y_{i}, \gamma)\]
2. 从m=1到M:
1)计算“伪残差”:
\[
\gamma_{im}=-[\frac{\partial L(y_{i}, F(x_{i}))}{\partial F(x_{i})}|_{F(x)=F_{m-1}(x)}], i=1, ..., n
\]
\[ \sum_{k=1}^n k^2 = \frac{1}{2} n (n+1).\]
\[ \frac{\partial u}{\partial t}
= h^2 \left( \frac{\partial^2 u}{\partial x^2}
+ \frac{\partial^2 u}{\partial y^2}
+ \frac{\partial^2 u}{\partial z^2}\right)\]
The Newton‘s second law is F=ma.
The Newton‘s second law is $F=ma$.
The Newton‘s second law is
$$F=ma$$
The Newton‘s second law is
\[F=ma\]
Greek Letters $\eta$ and $\mu$
Fraction $\frac{a}{b}$
Power $a^b$
Subscript $a_b$
Derivate $\frac{\partial y}{\partial t} $
Vector $\vec{n}$
Bold $\mathbf{n}$
To time differential $\dot{F}$
Matrix (lcr here means left, center or right for each column)
\[
\left[
\begin{array}{lcr}
a1 & b22 & c333 \\
d444 & e555555 & f6
\end{array}
\right]
\]
Equations(here \& is the symbol for aligning different rows)
\begin{align}
a+b&=c\\
d&=e+f+g
\end{align}
\[
\left\{
\begin{aligned}
&a+b=c\\
&d=e+f+g
\end{aligned}
\right.
\]
以上是关于Gradient Boosting Decision Tree梯度决策提升树的主要内容,如果未能解决你的问题,请参考以下文章
Parallel Gradient Boosting Decision Trees
梯度提升树(Gradient Boosting Decision Tree---GBDT)