lightgbm与xgboost的区别是什么?

内存更小

  1. XGBoost 使用预排序后需要记录特征值及其对应样本的统计值的索引,而 LightGBM 使用了直方图算法将特征值转变为 bin
    值,且不需要记录特征到样本的索引,极大的减少了内存消耗;
  2. LightGBM 采用了直方图算法将存储特征值转变为存储 bin 值,降低了内存消耗;
  3. LightGBM 在训练过程中采用互斥特征捆绑算法减少了特征数量,降低了内存消耗。

速度更快

  1. LightGBM 采用了直方图算法将遍历样本转变为遍历直方图,极大的降低了时间复杂度;
  2. LightGBM在训练过程中采用单边梯度算法过滤掉梯度小的样本,减少了大量的计算;
  3. LightGBM 采用了基于 Leaf-wise 算法的增长策略构建树,减少了很多不必要的计算量;
  4. LightGBM采用优化后的特征并行、数据并行方法加速计算,当数据量非常大的时候还可以采用投票并行的策略;
  5. LightGBM 对缓存也进行了优化,增加了Cache hit 的命中率。

leaf-wise和level-wise的区别和特点

  • Level-wise:基于层进行生长,直到达到停止条件;

  • Leaf-wise:每次分裂增益最大的叶子节点,直到达到停止条件。

  1. XGBoost 采用 Level-wise的增长策略,方便并行计算每一层的分裂节点,提高了训练速度,但同时也因为节点增益过小增加了很多不必要的分裂,降低了计算量;

  2. LightGBM采用Leaf-wise的增长策略减少了计算量,配合最大深度的限制防止过拟合,由于每次都需要计算增益最大的节点,所以无法并行分裂。

直方图算法如何处理数值特征

1.如果数值特征的不同值个数小于预先设定的最大分桶数,则每个桶内存放一类样本,即使用排序后的前后两个值的均值作为分桶界限。

2.数值特征个数大于最大分桶数,则需存在同一个桶内存在不同取值的情况。首先统计每个取值的样本数,当一个取值的样本数大于桶样本数的均值(总样本数除以最大分桶数),对它独立分桶。再对剩下的样本进行排序与统计,由小到大按照排序累加达到单个分桶最大样本数,完成一次分桶。

直方图算法如何处理非数值特征
1.每个特征值单独成为一个bin。

2.按照每个样本取值下的样本数进行由大到小的排序,统计样本总数,且最终完成分桶时需要丢弃排序后的1%的样本,即丢弃低频的样本取值。

lightgbm如何并行训练

特征并行

传统的特征并行算法在于对数据进行垂直划分,然后使用不同机器找到不同特征的最优分裂点,基于通信整合得到最佳划分点,然后基于通信告知其他机器划分结果。

传统的特征并行方法有个很大的缺点:需要告知每台机器最终划分结果,增加了额外的复杂度(因为对数据进行垂直划分,每台机器所含数据不同,划分结果需要通过通信告知)。

LightGBM 则不进行数据垂直划分,每台机器都有训练集完整数据,在得到最佳划分方案后可在本地执行划分而减少了不必要的通信。

数据并行

传统的数据并行策略主要为水平划分数据,然后本地构建直方图并整合成全局直方图,最后在全局直方图中找出最佳划分点。LightGBM 采用分散规约(Reduce scatter)的方式将直方图整合的任务分摊到不同机器上,从而降低通信代价,并通过直方图做差进一步降低不同机器间的通信。

投票并行

针对数据量特别大特征也特别多的情况下,可以采用投票并行。投票并行主要针对数据并行时数据合并的通信代价比较大的瓶颈进行优化,其通过投票的方式只合并部分特征的直方图从而达到降低通信量的目的。
大致步骤为两步:
本地找出 Top K 特征,并基于投票筛选出可能是最优分割点的特征;
合并时只合并每个机器选出来的特征。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值