GBDT算法原理

GBDT(Gradient Boosting Decision Tree)又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法。

1 .DT:回归树 Regression Decision Tree

GBDT 中的树全部都是回归树,核心就是累加所有树的结果作为最终结果。只有回归树的结果累加起来才是有意义的,分类的结果累加是没有意义的。

GBDT 调整之后可以用于分类问题,但是内部还是回归树。

这部分和决策树中的是一样的,无非就是特征选择。回归树用的是最小化均方误差,分类树是用的是最小化基尼指数(CART)

2. GB:梯度迭代 Gradient Boosting

首先 Boosting 是一种集成方法。通过对弱分类器的组合得到强分类器,他是串行的,几个弱分类器之间是依次训练的。GBDT 的核心就在于,每一颗树学习的是之前所有树结论和的残差。

Gradient 体现在:无论前面一颗树的 cost function 是什么,是均方差还是均差,只要它以误差作为衡量标准,那么残差向量都是它的全局最优方向,类似于求梯度,这就是 Gradient。

3 Shrinkage

Shrinkage(缩减)是 GBDT 算法的一个重要演进分支,目前大部分的源码都是基于这个版本的。

核心思想在于:Shrinkage 认为每次走一小步来逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易防止过拟合。

也就是说,它不信任每次学习到的残差,它认为每棵树只学习到了真理的一小部分,累加的时候只累加一小部分,通过多学习几棵树来弥补不足。每一步的残差计算其实变相的增大了分错样本的权重,而已经分对的样本则都趋向于 0。这样后面就更加专注于那些分错的样本。

具体的做法就是:仍然以残差作为学习目标,但是对于残差学习出来的结果,只累加一小部分(step* 残差)逐步逼近目标,step 一般都比较小 0.01-0.001, 导致各个树的残差是渐变而不是陡变的。

本质上,Shrinkage 为每一颗树设置了一个 weight,累加时要乘以这个 weight,但和 Gradient 没有关系。

这个 weight 就是 step。跟 AdaBoost 一样,Shrinkage 能减少过拟合也是经验证明的,目前还没有理论证明。

4 GBDT 适用范围

  • GBDT 可以适用于回归问题(线性和非线性);
  • GBDT 也可用于二分类问题(设定阈值,大于为正,否则为负)和多分类问题。

RF与GBDT之间的区别与联系?

1)相同点:

都是由多棵树组成

最终的结果都由多棵树共同决定。

2)不同点:

a 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成

b 组成随机森林的树可以并行生成(Bagging);GBDT 只能串行生成(Boosting);这两种模型都用到了Bootstrap的思想。

c 随机森林的结果是多数表决表决的,而GBDT则是多棵树加权累加之和

d 随机森林对异常值不敏感,而GBDT对异常值比较敏感

e 随机森林是减少模型的方差,而GBDT是减少模型的偏差

f 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化

g随机森林对训练集一视同仁权值一样,GBDT是基于权值的弱分类器的集成 

GBDT的优缺点

GBDT主要的优点有:

    1) 可以灵活处理各种类型的数据,包括连续值和离散值。

    2) 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。

    3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。

很好的利用了弱分类器进行级联。

充分考虑的每个分类器的权重。

GBDT的主要缺点有:

    1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。

猜你喜欢

转载自blog.csdn.net/qq_19446965/article/details/82079624