介绍一下xgb_xgb、lgb、cab的cpu与gpu性能比较

本文对比了XGBoost, LightGBM和CatBoost在GPU上的加速效果。XGBoost平均加速7.26倍,CatBoost平均3.7倍,LightGBM在改用直方图算法后平均加速3.57倍。虽然XGBoost在某些场景下内存占用高,LightGBM在未精细调参情况下展现良好速度和泛化性能,通常作为首选。GPU加速可能牺牲精度,但可通过配置平衡速度与精度。" 115014367,7718336,Cobalt Strike 操作指南:创建Listener与生成Payload,"['网络安全', '渗透测试', '恶意软件', 'Cobalt Strike教程']
摘要由CSDN通过智能技术生成

本想自己测试一下,不过arxiv上居然已经有大佬做过实验了,so,直接搬运过来好了;

6214fcc4e87214614bf898a2d83a3f7b.png

作者在文中主要要探究三个问题:

1.在使用基于gpu进行模型训练,xgb、lgb和cab可以期望相对于cpu得到多少加速度?

2.使用贝叶斯优化并且使用gpu加速训练的情况下,哪一种算法能够更快的收敛

3.承接第二点,哪一种算法能够得到最好的泛化性能

(原文有很多背景介绍的知识,这里就不啰嗦了,感觉关系不大,感兴趣的可以自行阅读)


9bd5e2580e3d843d29571d239d7247dd.png

作者在这里使用了4个数据集合来进行测试,涵盖了二分类和多分类问题,涵盖了不同程度的稀疏特征与稠密特征的情况,

2a07785787b2921f1b5c2d0863a59eef.png

我主要关注加速这一块儿,所以不打算介绍贝叶斯优化的问题了,这种启发式算法的随机性太大了,并不是特别有说服力,而且从后面的结论上看,不同算法之间的差异性太小了,没有什么比较的意义,所以还是谈谈速度这一块儿吧。

3c731394bb569a45ade26eedad583822.png

作者首先将GPU的加速与每个GBDT算法的CPU的速度进行比较。如上图,显示结果 分别用于XGBOOST、LightGBM和CatBoost。XGboost的平均加速倍数为7.26x,中值为3.32x,其次为CatBoost,平均加速倍数为3.7x和中值为2.17x。lightgbmGBM的平均加速倍数为2.35,中位数为0.75倍。对于LightGBM,作者一开始使用的是Goss单侧梯度回归的树生长模式,估计是微软并没有在goss算法上做太多的gpu优化所以加速并不是很明显。当改为直方图算法之后,LightGBM的平均加速速度为3.57倍,中位数为1.32倍。

最后观察一下泛化性能:

2a9714af9c9d3b9ef0c7174077d309ea.png

作者通过上述的实验整体上测试下来的结果就是,xgboost的exact模式(注意,上面的xgboost都是使用exact的生长模式)对于内存占用非常大,所以eplison数据集没有算出来。。。内存爆了,lightgbm收敛的速度相对较慢(毕竟直方图切割舍弃了很多精度),但是在某些数据集上的泛化性能要更好。最后得出的结论是,没有什么明确的理论证明谁优谁劣,不同的数据集适应不同的算法实现。

不过就便利性和泛化性能上来说,lightgbm还是首选,在不进行复杂的调参的情况下,lgb的速度和泛化性能都是比较好的。 另外需要注意的是,gpu加速的时候会把数据的精度限制在float32(如果没记错的话),可能会造成一定程度的性能损失,不过可以设置为不进行精度限制但是速度会降低一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值