LightGBM算法梳理

LightGBM起源

lightGBM包含两个关键点:(1)light,轻量级;(2)GBM,梯度提升机。
lightGBM是一个梯度boosting框架,使用基于学习算法的决策树。具有以下特点:

  • 基于Histogram的决策树算法
  • 带深度限制的Leaf-wise的叶子生长策略
  • 直方图做差加速
  • 直接支持类别特征
  • Cache命中率优化
  • 基于直方图的稀疏特征优化
  • 多线程优化

它是针对xgboost 的不足而构建的算法。上述同样是xgboost的不足

Histogram VS pre-sorted

预排序算法(pre-sorted)

xgboost算法是基于预排序方法,这种构建决策树的算法基本思想是:

  • 首先,对所有特征都按照特征的数值进行预排序。
  • 其次,在遍历分割点的时候用 O ( d a t a ) O(data) O(data)的代价找到一个特征上的最好分割点。
  • 最后,找到最好的分割点后,将数据分裂成左右子节点。
    这样做能精确地找到分割点。但是空间消耗大,时间消耗也大,对cache优化不好。预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化。同时,在每一层,需要随机访问一个行索引到叶子索引的数组,并且不同特征访问的顺序也不一样。

直方图算法(Histogram)

直方图算法的基本思想是先把连续的浮点特征值离散化成k个整数,同时构造一个宽度为k的直方图,在遍历数据的时候,根据离散化后的值作为索引在直方图中累积统计量,当遍历一次数据后,直方图累计了需要的统计量,然后根据直方图的离散值,遍历寻找最优的分割点。
在这里插入图片描述
使用直方图算法有很多的优点。首先,最明显的是内存损耗降低,不需要额外存储预排序的结果,只需要保留特征离散化后的值,而这个值一般用8位整型存储就足够了。
计算上的代价也大幅度降低,预排序算法每遍历一个特征值就需要计算一次分裂增益,而直方图算法只需要计算K次,时间复杂度从 O ( d a t a ∗ f e a t u r e

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值