前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LightGBM、CatBoost、XGBoost你都了解吗?

LightGBM、CatBoost、XGBoost你都了解吗?

作者头像
用户7569543
发布2021-07-22 15:36:35
1.2K0
发布2021-07-22 15:36:35
举报

前面给大家介绍过kaggle竞赛的大杀器XGBoost算法,不记得的朋友可以回顾原文 集成学习经典算法之XGBoost。今天给大家介绍基于XGBoost算法的另外两个改进算法,LightGBM与CatBoost。下面是三种算法提出的具体时间轴。

既然是改进,说明XGBoost、LightGBM与CatBoost这三种算法的原理基本是相同的,只是在某些细节上做了改进。那接下来我们就具体看看这三种算法到底有什么不同。

一、结构差异

LightGBM在过滤数据样例寻找分隔点采用的是基于梯度的单边采样技术(GOSS)。而 XGBoost 则是通过预分类算法和直方图算法来确定最优分割。虽然我们前面说过,XGBoost算法在自动寻找分隔点时可以并行处理,处理效率极高,但是跟GOSS相比,仍然显得较慢。

为什么说GOSS方法更高效?

虽然样本权重是很好的表征样本重要性的指标,但在梯度提升算法中,由于没有天然的样本权重指标,因此我们需要换一种思路来表征样本的重要性。这个时候自然而然能想到的就是样本梯度。

因为梯度表征损失函数切线的倾斜程度,也就是说,如果在某些样本点上的梯度非常大,那么这些样本对于求解最优分割点而言就非常重要,因为算其损失更高。

而GOSS就是基于梯度的单边采样技术,它保留了所有大梯度样例,并在小梯度样例上采取随机抽样。例如,假设现有10万个数据样本,其中 1 万行数据的梯度较大,那么算法就会选择这 1万行梯度最大的样本+x% 从剩余 9 万行中随机抽取的结果。假设 x 取 5%,那么最后选取的结果就是从 10 万行中抽取的 1.45万行的数据样本确定最终的分隔点结果。

二、分类变量处理

我们知道,XGBoost算法在进行模型训练时要先对分类变量进行数值化预处理,通常是用 LabelEncoding 或 OneHotEncoding方法。但CatBoost不需要对这些分类变量进行预处理,而将这些分类变量直接喂给模型,这样可以大大提高模型的整体训练速度。

因此,我们可以简单总结得到LightGBM、CatBoost与XGBoost对比差异:

LightBoost与XGBoost

1、拥有更高的训练效率和精度

2、防止过拟合。由于LightGBM采用的是梯度单边采样技术,因此比XGBoost拥有更高的训练效率和防止过拟合能力。

CatBoost与XGBoost

1、训练时间更短,不需要对分类变量进行预处理。

2、通过执行有序地增强操作,可以更好地处理过度拟合,尤其体现在小数据集上。

通过Fashion MNIST图像分类(分类)、预测纽约出租车的票价(回归)训练结果表明:从训练时间和结果准确度上,三者排名:LightGBM>CatBoost>XGBoost

以上就是关于LightGBM、CatBoost、XGBoost三种算法的对比介绍,如果大家对这三种boost算法有兴趣也可以研究对应的论文,感谢大家的支持!

参考

https://www.kaggle.com/lavanyashukla01/battle-of-the-boosting-algos-lgb-xgb-catboost

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多赞云数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档