LightGBM 与 XGBoost

数据挖掘 xgboost
2021-09-28 20:59:31

我试图了解哪个更好(更准确,尤其是在分类问题中)

我一直在搜索比较 LightGBM 和 XGBoost 的文章,但只找到了两个:

  1. https://medium.com/implodinggradients/benchmarking-lightgbm-how-fast-is-lightgbm-vs-xgboost-15d224568031 - 这只是关于速度而不是准确性。
  2. https://github.com/Microsoft/LightGBM/wiki/Experiments - 来自 LightGBM 的作者,毫不奇怪 LightGBM 在那里获胜。

在我的测试中,两种算法的 AUC 几乎相同,但 LightGBM 的运行速度要快 2 到 5 倍。

如果 LGBM 很酷,我为什么不在这里和 Kaggle 上听到很多关于它的消息:)

2个回答

LightGBM 是一个很好的实现,它类似于 XGBoost,但在一些特定的方面有所不同,尤其是它如何创建树。

它提供了一些不同的参数,但其中大多数与 XGBoost 对应的参数非常相似。

如果你使用相同的参数,你几乎总能得到一个非常接近的分数。在大多数情况下,训练速度会快 2-10 倍。


为什么没有更多的人使用它呢?

XGBoost 存在的时间更长,并且已经安装在许多机器上。LightGBM 相当新,一开始并没有 Python 包装器。当前版本更易于安装和使用,因此这里没有障碍。

Kaggle 和类似网站上的许多更高级的用户已经在使用 LightGBM,并且对于每场新的比赛,它的覆盖范围都越来越大。尽管如此,启动脚本通常基于 XGBoost,因为人们只是重用他们的旧代码并调整一些参数。我相信一旦有更多关于如何使用它的教程和指南(大多数非 ScikitLearn 指南目前专注于 XGBoost 或神经网络),这将增加。

XGBoost 现在有一个用于树生长的直方图分箱选项,类似于 LightGBM 使用的一个。尽管算法仍然不完全相同,但它提供了大致相同的加速水平和相似的准确度特征。

这里有一些图表和表格显示了它们现在是如何相互重叠的。 https://github.com/dmlc/xgboost/issues/1950

公平地说,LightGBM 引用了他们自己的性能测试,表明他们仍然在超越 XGBoost(hist),尽管不再是一个数量级。 https://github.com/Microsoft/LightGBM/blob/master/docs/Experiments.rst#comparison-experiment