Gradient Boosting Decision Tree梯度决策提升树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradient Boosting Decision Tree梯度决策提升树相关的知识,希望对你有一定的参考价值。

参考技术A

GBDT = 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

参考网址:

1. GBDT(MART) 迭代决策树入门教程 | 简介

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梯度决策提升树的主要内容,如果未能解决你的问题,请参考以下文章

Gradient Boosting 总结

Gradient Boosting

Parallel Gradient Boosting Decision Trees

梯度提升树(Gradient Boosting Decision Tree---GBDT)

Python中Gradient Boosting Machine(GBM)调参方法详解

机器学习中的数学-模型组合(Model Combining)之Boosting与Gradient Boosting