Gradient Boost

大致介绍

Gradient Boost是一种用于regression和classification的机器学习技术,如同其他Boost算法一样,它是通过将弱学习器(Decision Tree)集成起来的。
​
在Gradient Boost算法的第m轮(1<m<M),假设存在性能不佳的model $F_m$。Gradient Boost算法打算通过添加一个估计值h来构建一个新的模型$F_{m+1}$:$F_{m+1} = F_{m} + h(x)$。为了找到h,Gradient Boost算法假设有以下等式
因此,Gradient Boosting会让h来拟合残差$y-F_m(x)$.
​
正如在其它Boost算法里一样,$F_{m+1}(x)$是试图纠正前一model $F_m(x)$的errors。对于classification问题,将这一想法推广到除了square error function之外的loss function之中,可以推测残差值$y-F_m(x)$对于给定model即是square error loss function $\frac{1}{2}(y-F(x))^2$对$F(x)$的导数。故,Gradient Boosting算法可以视为Gradient Descent算法一种变形,并且为了泛化Gradient Boost将会需要”插入“不同的loss function和gradient。

算法流程

在许多监督学习问题中,都会有一个输出值y和一个输入向量x且其满足联合分布律$P(x,\ y)$. 使用对于已知变量x和对应变量y的训练集${\{(x_1,\ y_1 ), ...,(x_n,\ y_n)\}}$ ,目的是为了找到函数F(x)的近似值$\hat{F}(x)$ ,从而最小化loss function$L(y,\ F(x))$的期望值:

$ \hat{F} = \operatorname*{argmin}_F\ E_{x, y}[L(y,\ F(x))] $

GBDT算法梳理

Gradient Boosting Tree

假设$J_m$为decision tree$h_m(x)$的叶子。将树按输入空间分为$J_m$的邻接空间$R_{1m},...,R_{J_mm}$并且在每一个区域内都会得到一个常量预测值。使用Inicator function,$h_m(x)$的输入x可以被写成如下求和式子: $h_m(x) = \sum^{J_m}_{j=1}b_{jm}I_{R_{jm}}(x)$,$b_{jm}$就是在区域$R_{jm}$内的预测值。

然后系数$b_{jm}$是,并使用线性搜索来优化loss function使得模型更新如下:

GBDT算法梳理

 

Friedman试图修改这个算法使得其在不同树的区域内选择各自的最优值$\gamma_{jm}$,而不是整个树使用一个$\gamma_{m}$。他将其称为TreeBoost算法。系数$b_{jm}$来自树拟合的过程在此不作使用并将模型更新规则更改为:SizeGBDT算法梳理

Size of trees

J是树中的终端节点,一般设置为4到8之间。

正则化

一种常见的正则化方法就是选取合适的迭代次数M,避免当M过大时所造成的overfit情形。

Shrinkage

GBDT算法梳理

乘上对应learning rate $v$来使其达到正则化的作用。当小于0.1时,会提升模型的泛化能力,然而这使得计算代价变大和迭代次数增多。

应用场景

一般应用Learning to rank的场景之中。像Yahoo和Yandex等搜索引擎中,就曾其machine-learned ranking engines中使用到gradient boost的变种算法。

Reference

https://en.wikipedia.org/wiki/Gradient_boosting

 

相关文章:

  • 2022-01-09
  • 2021-11-08
  • 2021-12-12
  • 2021-07-20
  • 2021-10-20
猜你喜欢
相关资源
相似解决方案