GBDT XGBOOST的区别与联系

Xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)

传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。

传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。

xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和

列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。

xgboost工具支持并行。

Shrinkage(缩减),相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  首先xgboost是Gradient Boosting的一种高效系统实现,并不是一种单一算法。

  xgboost里面的基学习器除了用tree(gbtree),也可用线性分类器(gblinear)。而GBDT则特指梯度提升决策树算法。
  xgboost相对于普通gbm的实现,可能具有以下的一些优势:

  1. 显式地将树模型的复杂度作为正则项加在优化目标
  2. 公式推导里用到了二阶导数信息,而普通的GBDT只用到一阶
  3. 允许使用column(feature) sampling来防止过拟合,借鉴了Random Forest的思想,sklearn里的gbm好像也有类似实现。

  4.实现了一种分裂节点寻找的近似算法,用于加速和减小内存消耗。
  5.节点分裂算法能自动利用特征的稀疏性。
  6.data事先排好序并以block的形式存储,利于并行计算
  7.cache-aware, out-of-core computation,这个我不太懂。。
  8.支持分布式计算可以运行在MPI,YARN上,得益于底层支持容错的分布式通信框架rabit。

工作中用得比较多,区别在于:
1. 在Loss function中做approximate,把泰勒展开限制为1阶和2阶偏导,gbdt是1阶;
2. penalty function Omega主要是对树的叶子数和叶子分数做惩罚,这点确保了树的简单性;
3. 快,非常快,最新版本支持spark,4000多万样本,70个dimension,200棵树的训练也就1小时不到;

时间: 2024-08-27 23:40:00

GBDT XGBOOST的区别与联系的相关文章

GBDT && XGBOOST

                              GBDT && XGBOOST Outline Introduction GBDT Model XGBOOST Model GBDT vs. XGBOOST Experiments References Introduction Gradient Boosting Decision Tree is a machine learning technique for regression and classification prob

xgboost原理,怎么防止过拟合。随机森林,GBDT,Xgoost的区别,bagging和boosting

一.bagging和boosting的区别 参考:https://blog.csdn.net/blank_tj/article/details/82229322 简单总结Bagging:对数据集进行多次有放回抽样,每次的抽样进行分类计算生成弱分类器,分类问题就是把每一次的计算结果进行投票,看哪一种情况票数多即为最后结果.回归问题就是把所有生成的弱分类器结果进行取平均. 简单总结Boosting:初始对每个样本分配相同的权重,每次经过分类,把对的结果的权重降低,错的结果权重增高,如此往复,直到阈值

Adaboost和GBDT的区别以及xgboost和GBDT的区别

Adaboost和GBDT的区别以及xgboost和GBDT的区别 以下内容转自 https://blog.csdn.net/chengfulukou/article/details/76906710 ,本文主要用作记录收藏 AdaBoost VS GBDT 和AdaBoost一样,Gradient Boosting每次基于先前模型的表现选择一个表现一般的新模型并且进行调整.不同的是,AdaBoost是通过提升错分数据点的权重来定位模型的不足,而Gradient Boosting是通过算梯度(g

RF、GBDT、XGBOOST常见面试算法整理

1.  RF(随机森林)与GBDT之间的区别 相同点: 1)都是由多棵树组成的 2)最终的结果都是由多棵树一起决定 不同点: 1)  组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组成 2)  组成随机森林的树可是并行生成,而GBDT只能是串行生成 3)  随机森林的结果是多棵树表决决定,而GBDT则是多棵树累加之和 4)  随机森林对异常值不敏感,而GBDT对异常值比较敏感 5)  随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能 6)  随机森林

GBDT和XgBoost

GBDT和XgBoost的区别 首先,GBDT来自于融合模型中的Boosting算法,Boosting算法的原理是先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,提高训练数据集中判断错误的样本权重,降低判断正确的权重,使得先前基学习器做错的样本在后续能得到更多关注,然后基于调整后的样本分布来训练下一个基学习器,使下一轮的基学习器能纠正之前学习器的一些错误. 顺便提一下融合模型中的Bagging算法,它是基于自助采样法,每次有放回地随机从训练集中取出一个样本放入采样集

四、决策树、随机森林、GBDT、XGBoost

(本节课各种数学式子比较多.....^_^) 决策树 Decision Tree? 介绍? 熵 Entropy? 信息增益 Information Gain? 常见算法? 过度拟合 Overfitting? 剪枝 Prune? 增益率 GainRatio? 更多的DT应?场景类别:? 连续函数,多分类,回归? 决策树的究极进化 Ensemble? Bagging? Random Forest? Boosting? GBDT? XGBoost 决策树 分治思想 根据不同的条件作出相应的决定 熵 区

xgboost原理

出处http://blog.csdn.net/a819825294 1.序 距离上一次编辑将近10个月,幸得爱可可老师(微博)推荐,访问量陡增.最近毕业论文与xgboost相关,于是重新写一下这篇文章. 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT.论文.一些网络资源,希望对xgboost原理进行深入理解.(笔者在最后的参考文献中会给出地址) 2.xgboost vs gbdt 说到xgboost,不得不说gbdt,两者都是boosting方法

XgBoost的总结

机器学习算法中GBDT和XGBOOST的区别有哪些?(转自知乎https://www.zhihu.com/question/41354392/answer/98658997) xgboost相比传统gbdt有何不同?xgboost为什么快?xgboost如何支持并行? 传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题). 传统GBDT在优化时只用到一阶导数信息,xgboost则对代

xgboost入门与实战(原理篇)

http://blog.csdn.net/sb19931201/article/details/52557382 xgboost入门与实战(原理篇) 前言: xgboost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包,比常见的工具包快10倍以上.在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案.在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN, MPI, Sun