更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud


作者介绍:Laurae ,数据科学爱好者

Blog:https://medium.com/@Laurae2

背景知识:

XGBoost是一款经过优化的分布式梯度提升(Gradient Boosting)库,具有高效,灵活和高可移植性的特点。基于梯度提升框架,XGBoost实现了并行方式的决策树提升(Tree Boosting),从而能够快速准确地解决各种数据科学问题。

LightGBM(Light Gradient Boosting Machine)同样是一款基于决策树算法的分布式梯度提升框架。

这篇博客是关于LightGBM 和xgboost 的对比。实验使用了定制的博世数据集,结果显示,在速度上xgboost 比LightGBM在慢了10倍,而我们还需要做一些其它方面的比较。

总体介绍

首先让我们来看一下这个图表,所有人都应该打起精神!!!

从图上我们可以看到,平均来说,LightGBM 比xgboost 快11到15倍。

我们也注意到,随着线程数的增加,比率变小了。这也很容易解释,因为你不可能让线程的利用率是100%,线程的切入切出以及线程有时要等待,这都需要耗费很多时间。

1–12 个线程

我们来看一下前12个线程。

从表中,我们可以看到,当线程数超过6的时候xgboost的性能得到了很大的提升(当线程数是12的时候,消耗时长从577.9降低到414.3秒,大约提高了28.3%)。

对于LightGBM来说是否也是这样呢?时间从45.1降低到了33.6秒,性能提高大约25.5%。

小结:使用所有逻辑核心进行线程化,这能极大地提高性能。 如果你希望你的机器学习训练速度提高25%(显然,根据CPU的不同,情况也不完全一样),你现在知道该做什么:使用逻辑核心,而不是物理核心来创建线程。

13–24 个线程

那么13-24个线程又会怎么样呢?我们增加12个线程作为参照。

我们可以注意到:

  1. 对于xgboost来说并没有提升,数值的变化基本可以看成是误差
  2. 对于LightGBM来说反而耗时更长,从33.6秒提高到38秒以上

所以我们可以简单的下一个结论:不要过度分配逻辑内核,这不是一个好的做法。保持使用逻辑核心创建一定量的线程,并且不要超过该数。

LightGBM 一瞥

我们再来关注一下LightGBM的曲线。

 

从图上来看,这似乎是一个线性的改进:从202秒(使用1个核,1个线程),我们下降到33.6秒(6个全部使用的,12个线程),这是几乎100%的多线程的效率。 当我们用更多的线程时,多线程的效率急剧下降,使用的时间反而比一千场了。

数据存储器的效率

在创建矩阵后使用gc方法两次来快速查看RAM使用情况,具体情况如下:

  • 初始数据(密集,未使用):约8,769 MB(27.9%vs原始版本)
  • 原始数据(dgCMatrix):大约 2,448 MB(100%vs原始版本)
  • xgboost(xgb.DMatrix):大约 1,701 MB(69.5%vs原始版本)
  • LightGBM(lgb.Dataset):大约2,512 MB(102.6%vs原始版本)

看来LightGBM具有比xgboost更高的内存占用。

训练存储器的效率

我们使用12个线程来检查RAM效率,在50次boosting迭代结束时,在boosting之前使用gc,boosting之后不使用gc,效果如下:

xgboost:约 1684 MB

LightGBM: 1425 MB(xgboost内存使用量的84.6%)

我们可以注意到,LightGBM在训练期间的RAM使用率较低,但是内存中数据的RAM使用量增加。 所以R语言的LightGBM包有改进的潜能,以具有更有效的方式来存储数据。

下一个指标

当xgboost的快速直方图方法启动并在R语言中可用时,我们会使用新的指标。虽然它目前正在运行,但在R语言中不可用。这样一来xgboost和LightGBM孰优孰劣到时就会揭晓。

当然,未来我们也会比较xgboost和lightgbm之间的对数损失。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Benchmarking LightGBM: how fast is LightGBM vs xgboost?》,作者:Laurae,译者:爱小乖

文章为简译,更为详细的内容,请查看原文

倚天遇到屠龙:LightGBM VS xgboost谁才是最强的梯度提升库?相关推荐

  1. LightGBM大战XGBoost,谁将夺得桂冠?

    引 言 如果你是一个机器学习社区的活跃成员,你一定知道 提升机器(Boosting Machine)以及它们的能力.提升机器从AdaBoost发展到目前最流行的XGBoost.XGBoost实际上已经 ...

  2. 梯度提升决策树(GBDT)与XGBoost、LightGBM

    20211224 [机器学习算法总结]XGBoost_yyy430的博客-CSDN博客_xgboost xgboost参数 默认:auto.XGBoost中使用的树构造算法.可选项:auto,exac ...

  3. LightGBM和XGBoost使用scale_pos_weight处理不平衡数据源码分析

    LightGBM和XGBoost使用scale_pos_weight处理不平衡数据源码分析 - 代码先锋网

  4. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  5. 【机器学习】深度剖析 LightGBM vs XGBOOST 哪个更胜一筹

    今天就 LightGBM 和 XGBOOST 放在一起对比学习下,以便加深印象. 写在前面 作为一个机器学习研习者,大概会了解 Boosting Machines 及其功能.Boosting Mach ...

  6. R︱Yandex的梯度提升CatBoost 算法(官方述:超越XGBoost/lightGBM/h2o)

    俄罗斯搜索巨头 Yandex 昨日宣布开源 CatBoost ,这是一种支持类别特征,基于梯度提升决策树的机器学习方法. CatBoost 是由 Yandex 的研究人员和工程师开发的,是 Matri ...

  7. 基于集成学习方法Random Forest、Adaboost、GBDT、LightGBM、XGBoost的调参、建模、评估实现kaggle竞赛员工离职案例分析(2)

    基于集成学习方法Random Forest.Adaboost.GBDT.LightGBM.XGBoost的调参.建模.评估实现kaggle竞赛员工离职案例分析(2) 引言 3. adaboost模型分 ...

  8. catboost和xgboost_Catboost:超越Lightgbm和XGBoost的又一个boost算法神器

    原标题:Catboost:超越Lightgbm和XGBoost的又一个boost算法神器 机器学习AI算法工程 公众号:datayx 今天介绍一个超级简单并且又极其实用的boosting算法包Catb ...

  9. 机器学习分类算法之LightGBM(梯度提升框架)

    目录 走进LightGBM 什么是LightGBM? XGBoost的缺点 LightGBM的优化 LightGBM的基本原理 Histogram 算法

最新文章

  1. 支付宝发布黑科技“如影计划”,这真的不是愚人节的玩笑
  2. composer 报 zlib_decode(): data error
  3. Matlab 进行FFT
  4. Java操作memcache
  5. xp怎么删除计算机用户,谁了解xp系统如何删除工作组计算机
  6. 计算机基础(五):堆和栈区别
  7. linux 运行级别,linux执行流程 /etc/rc.d/init.d目录理解
  8. python将英文翻译为中文_Python中英文翻译工具
  9. sklearn 随机森林代码示例
  10. Java学习----习题练习
  11. 【前端学习路线】你一定需要掌握的热门前端技术栈
  12. 开发之准备:为目标设备创建映像
  13. 使用C#.NET WebBrowser控件导航到不同的网站出现 所请求的资源正在使用中。 (从HRESULT异常:0x800700AA)
  14. 有限状态机(FSM)的深入理解
  15. 网易云音乐产品核心竞争力分析
  16. hp2.5 300g sas服务器硬盘辨真伪,【原装*** HP/惠普 507284-001 300G 10K SAS 2.5寸 6Gb服务器硬盘】价格_厂家 - 中国供应商...
  17. XSS(跨站脚本攻击)原理详解(内含攻击实例)
  18. Vulnhub靶机渗透学习——DC-9
  19. 曾经火遍全国的百度贴吧,彻底凉了...
  20. web网页设计与开发:基于HTML+CSS+JavaScript简单的个人博客网页制作期末作业

热门文章

  1. Boost:bind绑定和或||的测试程序
  2. ITK:将高斯噪声添加到特定图像
  3. ITK:计算图像的逆FFT
  4. VTK:PolyData之ExtractCellsUsingPoints
  5. VTK:图表之VisualizeDirectedGraph
  6. OpenCV运行自定义OCR模型
  7. QDoc支持衍生项目
  8. C++返回一个数的二进制最右边的一位的实现算法(附完整源码)
  9. QT的QDateTimeAxis类的使用
  10. python怎么导入opencv_对python opencv 添加文字 cv2.putText 的各参数介绍