ML-Review-GBDT

Gradient Boosting Decision Tree适用所有回归问题(线性非线性),也可以做分类,和多分类(设阈值)。LR只适用线性

 

DT

gbdt中全是回归树,核心是累加所有树的结果作为最终结果。回归树累加起来才有意义

可以调整后做分类,内部依旧是回归树。调整是softmax函数来产生概率最大的类别。

回归树用最小化均方误差,分类树用最小化基尼指数(CART)

GB梯度迭代

boosting串行迭代。但gbdt的核心在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

gradient体现在无论前面一棵树的代价函数是什么,均方差还是均差,只要是误差作为标准,那么残差向量都是全局最优方向。残差越来越小,,

Shrinkage

Shrinkage仍然以残差作为学习目标,但对于残差学习出来的结果,只累加一小部分(step*残差)逐步逼近目标,step一般都比较小,如0.01~0.001(注意该step非gradient的step),导致各个树的残差是渐变的而不是陡变的。本质上,Shrinkage为每棵树设置了一个weight,累加时要乘以这个weight,但和Gradient并没有关系(只是单单的逼近,不涉及梯度)

adaboost和shrinkage实践证明可以消除过拟合,没有理论证实。

bootstrap(重采样的思想)在每一步迭代时不改变模型本身,也不计算残差,而是从N个instance训练集中按一定概率重新抽取N个instance出来(单个instance可以被重复sample),对着这N个新的instance再训练一轮。由于数据集变了迭代模型训练结果也不一样,而一个instance被前面分错的越厉害,它的概率就被设的越高,这样就能同样达到逐步关注被分错的instance,逐步完善的效果。

GBDT和随机森林

  • GBDT和随机森林的相同点
  • 都是由多棵树组成
  • 最终的结果都由多棵树共同决定
  • GBDT和随机森林的不同点
  • 组成随机森林的可以是分类树、回归树;组成GBDT只能是回归树
  • 组成随机森林的树可以并行生成(Bagging);GBDT只能串行生成(Boosting)
  • 对于最终的输出结果而言,随机森林使用多数投票或者简单平均;而GBDT则是将所有结果累加起来,或者加权累加起来
  • 随机森林对异常值不敏感,GBDT对异常值非常敏感
  • 随机森林对训练集一视同仁权值一样,GBDT是基于权值的弱分类器的集成
  • 随机森林通过减小模型的方差提高性能,GBDT通过减少模型偏差提高性能

TIP

1. GBDT相比于决策树有什么优点

泛化性能更好!GBDT的最大好处在于,每一步的残差计算其实变相的增大了分错样本的权重,而已经分对的样本则都趋向于0。这样后面就更加专注于那些分错的样本。

2. Gradient体现在哪里?

可以理解为残差是全局最优的绝对方向,类似于求梯度。

3. re-sample

GBDT也可以在使用残差的同时引入Bootstrap re-sampling,GBDT多数实现版本中引入了这个选项,但是是否一定使用有不同的看法。原因在于re-sample导致的随机性,使得模型不可复现,对于评估提出一定的挑战,比如很难确定性能的提升是由于feature的原因还是sample的随机因素。

上一篇:A review of learning in biologically plausible spiking neural networks


下一篇:Code Review 的项目