GBM 与 XGBOOST?主要区别?

数据挖掘 机器学习 算法 xgboost 集成建模 gbm
2021-09-14 19:59:38

我试图了解 GBM 和 XGBOOST 之间的主要区别。我试图用谷歌搜索它,但找不到任何好的答案来解释这两种算法之间的差异以及为什么 xgboost 几乎总是比 GBM 表现更好。是什么让 XGBOOST 如此之快?

4个回答

引用作者的话xgboost

xgboost 和 gbm 都遵循梯度提升的原则。但是,建模细节存在差异。具体来说,xgboost 使用更正则化的模型形式化来控制过拟合,从而提供更好的性能。

我们更新了关于模型介绍的综合教程,您可能想看看。增强树简介

不过,xgboost 这个名字实际上指的是推动提升树算法的计算资源限制的工程目标。这就是很多人使用 xgboost 的原因。对于模型,可能更适合称为正则化梯度提升。

编辑:有一个xgboost的详细指南,其中显示了更多差异。

参考

https://www.quora.com/What-is-the-difference-between-the-R-gbm-gradient-boosting-machine-and-xgboost-extreme-gradient-boosting

https://xgboost.readthedocs.io/en/latest/tutorials/model.html

除了 Icyblade 给出的答案之外,xgboost 的开发人员还对实现的不同部分进行了许多重要的性能增强,这在速度和内存利用率方面有很大的不同:

  1. 使用稀疏矩阵和稀疏感知算法
  2. 改进的数据结构以提高处理器缓存利用率,从而使其更快。
  3. 更好地支持多核处理,从而减少整体训练时间。

根据我在训练大型数据集(超过 500 万条记录)时使用 GBM 和 xgboost 的经验,我体验到相同数据集的内存利用率(在 R 中)显着降低,并且发现使用多个内核来减少训练时间更容易。

一个非常重要的区别是xgboost实现了 DART,回归树的 dropout 正则化

参考

Rashmi, KV 和 Gilad-Bachrach, R. (2015)。Dart:Dropouts 遇到多个加法回归树。arXiv 预印本 arXiv:1505.01866。

我认为梯度提升和 Xgboost 之间的区别在于 xgboost 算法侧重于计算能力,通过并行化可以在此博客中看到的树形成。

梯度提升只关注方差,而不是偏差之间的权衡,因为 xg 提升也可以关注正则化因子。