XGBOOST,GBDT,RandomForest的比较

首先XGBOOST,GBDT,RF都是集成算法,RF是Bagging的变体,与Bagging相比,RF加入了属性扰动,而XGBOOST,GBDT属于boosting.

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

RandomForest 与 GBDT 的区别:

相同点:

1.都由很多棵树组成

2.最终的结果是由多棵树一起决定的

不同点:

1.从集成学习来说,RF属于的bagging(稍微有点改变,增加了列抽样),而GBDT属于boosting;

2.从使用的树的类别来说,RandomForest中的树可以是分类树,也可以是回归树,而GBDT只能由回归树(CART)组成,这也说明GBDT各个树相加是有意义的

3.从训练样本和训练过程来说,RandomForest中的树是并行生成的,而GBDT是串行生成的,GBDT中下一颗树要去拟合前一颗树的残差,所以GBDT中的树是有相关关系的,而RandomForest中的树的相关性依赖于Boostrap生成的样本子集的相关性

4.从对数据的要求来说,RandomForest 对异常值不敏感,GBDT敏感

5.从偏差-方差权衡来说,RandomForest是通过降低模型方差来提高性能的,而GBDT是通过降低偏差来提高性能

6.从结果来说,RF最终是多棵树进行多数表决,而GBDT是加权融合;

7.从泛化能力来说,RF不易过拟合,GBDT容易。

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

GBDT 与 XGBOOST的比较:

1.传统的GBDT以CART树作为基分类器,而XGBOOST还支持线性分类器,此时的线性分类器自带正则项

2.传统的GBDT在优化时,只用到了loss function的一阶导信息,而XGBOOST对loss function做了Taylor展开,用到了二阶导信息

3.XGBOOST在loss function中引入了正则项,防止过拟合,正则项里包含叶节点数以及每个叶节点上的score的L2的平方和

 

在计算划分增益时,如果gain < gamma, 不划分,gain> gamma,划分,这相当于决策树的预剪枝。 gamma是叶节点个数的参数

4.XGBOOST还借用了RandomForest中的列抽样思想,也支持在划分节点时,只考虑部分属性

(现状sklearn中的GBDT也实现了列抽样)

5.XGBOOST可以自动学习出缺失值的分裂方向,论文中的default direction

(具体做法时,遍历的尝试将所有的缺失值分裂到所有方向{left or right},split and default directions with max gain)

6.XGBOOST实现了并行化,这个并行化是特征粒度上的并行化:划分节点时,每个特征并行计算,同时每个特征的划分节点也是并行计算(这是加速最猛的处理)

7.XGBOOST提出了block的概念,简单的说将排序后的特征值放在block中,以后划分特征的时候,只需要遍历一次即可,因为决策树在处理属性值时,需要将属性值先排序,这是最耗时的步骤,而block预先存储了排序的特征值,在后续过程中可以重复利用这个结构中的数据,同时,计算每个特征的划分增益可以并行处理了

Collecting statistics for each column can be parallelized,giving us a parallel algorithm for split finding!!

8.贪心算法在选择最佳划分方式时需要遍历所有的划分点子集,在数据非常大时,这会非常低效,xgboost提出了近似直方图计算,根据数据的二阶导信息进行排序,提出一些候选划分点子集。

 

 

转载于:https://my.oschina.net/magicalee/blog/2209294

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值