GBDT算法(Gradient Boosting Decision Tree),由于其出色的非线性拟合能力,被广泛应用在各种回归,分类的机器学习问题中。
除了能在日常工作中调用该算法取得好的结果之外,我们更需要深入理解这个算法的原理,以及其中涉及到的概念。
名词拆解
Boosting
GBDT中Gradient Boosting和Decision Tree是两个独立的概念。Boosting意思是把多个弱分类器组合起来形成一个强分类器。因此这不是某个算法,而一种理念。而和这个理念对应的是直接训练一次性构造一个强分类器,例如SVM,LR等等。
通常通过相加来组合分类器,形式如下:
Fm(x)=f0+α1f1(x)+α2f2(x)+……+αmfm(x)(1)
其中x表示输入的特征, Fm 表示最终得到的分类器, f1,f2,……,fm 分别表示m个弱分类器, f0 是一个常数, α1,α2,……,αm 分别表示每个弱分类器对应的权重。
Gradient Boosting Model
Gradient Boosting Model,以下简称GBM。这是一种构造弱分类的方法。同样地,这不是某个具体的算法,仍然是只是一个理念。
先看一个典型的优化问题:
find x̂ =arg minxf(x)
针对这种优化问题,最常用的解决方法是steepest descent(gradient descent),算法逻辑如下:
- 1.给定一个起始点 x0
- 2.对i=1,2,……K分别做如下迭代:
- a) xi=xi−1+γi−1∗gi−1 ,这里 gi−1=−∂f∂x∣x=xi−1 表示 f 在
xi−1 点的梯度
- a) xi=xi−1+γi−1∗gi−1 ,这里 gi−1=−∂f∂x∣x=xi−1 表示 f 在
- 3.直到 |gi−1| 足够小,或者是 |xi−xi−1| 足够小
以上迭代过程可以这么理解:整个寻优的过程就是个小步快跑的过程,每跑一小步,都往函数当前下降最快的那个方向走一点。
这样寻优得到的结果可以表示成加和形式,即
xk=x0+γ1g1+γ2g2+……+γkgk
这个等式的形式和前面Eq.(1)弱分类器组合成强分类器 Fm 如出一辙,Gradient Boosting就是由此启发而来。构造 Fm 本就是一个寻找最优的过程,只不过我们寻找的不是一个最优点,而是一个最优的函数。优化的目标通常都是通过一个损失函数来定义,即
find Fm=arg minFL(F)=arg minF∑i=0NLoss(F(xi)