task_6 - 副本

本文探讨了LightGBM和XGBoost两种梯度提升树算法的差异与优化策略。LightGBM通过互斥特征绑定减少计算复杂度,采用直方图优化算法和leaf-wise生长策略。XGBoost引入正则项防止过拟合,使用贪心算法构建决策树。两者各有特点,适用于不同的场景和数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Task07:梯度提升树-LightGBM

互斥特征绑定

实际的数据特征中可能有许多稀疏特征,即其非零值的数量远小于零值的数量,因此希望能够将这些特征进行合并来减少稀疏特征的数量,从而减少直方图构建的时间复杂度。我们将任意两个特征都不同时取非零值的特征集合称为一族互斥特征,数据集中的所有特征可被划分为这样的若干族互斥特征,例如下面就是一族互斥特征。

LightGBM提出了将互斥特征合并为单个特征的策略,从而让构建直方图的时间复杂度得以降低,因此需要找到最少的互斥绑定数量,即最少可以划分为几族。遗憾的是这个问题等价于图的着色问题,故它是NP-Hard的,目前并不存在多项式复杂度的解决方案,但我们可以通过近似方法来求解。为什么互斥特征绑定问题与图着色问题等价?如果我们把图的每一个顶点看做特征,将顶点之间是否存在边取决于两个特征是否存在同时为非零值的情况,若是则连接,那么此时没有边的顶点则代表他们之间满足互斥条件,将其涂上同种颜色作为同一族互斥特征,而寻找最少的绑定数量即是要寻找图的最少着色数。

XGBoost:

XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现
了GBDT算法并进行了算法和工程上的许多改进。
原始的GBDT算法基于经验损失函数的负梯度来构造新的决策树,
只是在决策树构建完成后再进行剪枝。而XGBoost在决策树构建阶段就
加入了正则项。其分裂准则为:XGBoost需要从所有的树结构中找出一个最优的树结构,这是一个NP-hard问题,因此在实际中通常采用贪心算法来构建一个次优的树结构,基本思想是从根节点开始,每次对一个叶子节点进行分裂,针对每一种可能的分裂,根据特定的准则选取最优的分裂。不同的决策树算法采用不同的准则,如IC3算法采用信息增益,C4.5算法为了克服信息增益中容易偏向取值较多的特征而采用信息增益比,CART算法使用基尼指数和平方误差,XGBoost也有特定的准则来选取最优分裂.

GBDT与XGB

1)GBDT是机器学习算法,XGBoost是该算法的工程实现。
2)在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
3)GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
4)传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
5)传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。
6)传统的GBDT没有设计对缺失值进行处理,XGBoost可以自动学习出它的分裂方向。XGBoost对于确实值能预先学习一个默认的分裂方向。
7)Shrinkage(缩减),相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点,然后迭代次数设置得大一点。(补充:传统GBDT的实现也有学习速率)

LightGBM

LightGBM是XGBoost的改进版,相比于前者,它添加了很多新的方法来改进模型,包括:并行方案、基于梯度的单边检测、排他性特征捆绑等。

LightGBM并没有垂直的切分数据集,而是每个worker都有全量的训练数据,因此最优的特征分裂结果不需要传输到其他worker中,只需要将最优特征以及分裂点告诉其他worker,worker随后本地自己进行处理。处理过程如下:

1)每个worker在基于局部的特征集合找到最优分裂特征。
2)workder间传输最优分裂信息,并得到全局最优分裂信息。
3)每个worker基于全局最优分裂信息,在本地进行数据分裂,生成决策树。

其并行方案:

当数据量很大时,特征并行算法还是受限于特征分裂效率。因此,当数据量大时,推荐使用数据并行算法。
算法步骤如下:

1)LightGBM算法使用Reduce Scatter并行算子归并来自不同worker的不同特征子集的直方图,然后在局部归并的直方图中找到最优局部分裂信息,最终同步找到最优的分裂信息。
2)除此之外,LightGBM使用直方图减法加快训练速度。我们只需要对其中一个子节点进行数据传输,另一个子节点可以通过histogram subtraction得到。
3)LightGBM可以将传输代价降低为O(0.5 * #feature * #bin)。

参考:https://www.jianshu.com/p/765efe2b951a

LightGBM和XGBoost对比

1)XGBoost使用基于预排序的决策树算法,每遍历一个特征就需要计算一次特征的增益,时间复杂度为O(datafeature)。
而LightGBM使用基于直方图的决策树算法,直方图的优化算法只需要计算K次,时间复杂度为O(K
feature)
2)XGBoost使用按层生长(level-wise)的决策树生长策略,LightGBM则采用带有深度限制的按叶子节点(leaf-wise)算法。在分裂次数相同的情况下,leaf-wise可以降低更多的误差,得到更好的精度。leaf-wise的缺点在于会产生较深的决策树,产生过拟合。
3)支持类别特征,不需要进行独热编码处理
4)优化了特征并行和数据并行算法,除此之外还添加了投票并行方案
5)采用基于梯度的单边采样来保持数据分布,减少模型因数据分布发生变化而造成的模型精度下降
6)特征捆绑转化为图着色问题,减少特征数量

另外:

1.https://blog.youkuaiyun.com/github_38414650/article/details/76061893
2.https://www.zhihu.com/question/41354392
3.https://blog.youkuaiyun.com/weixin_41965572/article/details/79850919?utm_source=blogxgwz0
4.http://lightgbm.apachecn.org/cn/latest/Features.html
5.https://blog.youkuaiyun.com/guoxinian/article/details/79243307
6.https://blog.youkuaiyun.com/u014411730/article/details/78816859

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值