我试图了解 GBM 和 XGBOOST 之间的主要区别。我试图用谷歌搜索它,但找不到任何好的答案来解释这两种算法之间的差异以及为什么 xgboost 几乎总是比 GBM 表现更好。是什么让 XGBOOST 如此之快?
GBM 与 XGBOOST?主要区别?
数据挖掘
机器学习
算法
xgboost
集成建模
gbm
2021-09-14 19:59:38
4个回答
引用作者的话xgboost
:
xgboost 和 gbm 都遵循梯度提升的原则。但是,建模细节存在差异。具体来说,xgboost 使用更正则化的模型形式化来控制过拟合,从而提供更好的性能。
我们更新了关于模型介绍的综合教程,您可能想看看。增强树简介
不过,xgboost 这个名字实际上指的是推动提升树算法的计算资源限制的工程目标。这就是很多人使用 xgboost 的原因。对于模型,可能更适合称为正则化梯度提升。
编辑:有一个xgboost的详细指南,其中显示了更多差异。
参考
https://xgboost.readthedocs.io/en/latest/tutorials/model.html
除了 Icyblade 给出的答案之外,xgboost 的开发人员还对实现的不同部分进行了许多重要的性能增强,这在速度和内存利用率方面有很大的不同:
- 使用稀疏矩阵和稀疏感知算法
- 改进的数据结构以提高处理器缓存利用率,从而使其更快。
- 更好地支持多核处理,从而减少整体训练时间。
根据我在训练大型数据集(超过 500 万条记录)时使用 GBM 和 xgboost 的经验,我体验到相同数据集的内存利用率(在 R 中)显着降低,并且发现使用多个内核来减少训练时间更容易。
一个非常重要的区别是xgboost
实现了 DART,回归树的 dropout 正则化。
参考
Rashmi, KV 和 Gilad-Bachrach, R. (2015)。Dart:Dropouts 遇到多个加法回归树。arXiv 预印本 arXiv:1505.01866。
我认为梯度提升和 Xgboost 之间的区别在于 xgboost 算法侧重于计算能力,通过并行化可以在此博客中看到的树形成。
梯度提升只关注方差,而不是偏差之间的权衡,因为 xg 提升也可以关注正则化因子。
其它你可能感兴趣的问题