lightgbm直方图分桶及加速理解

lightgbm有两个直方图分桶:

一、程序开始时,对浮点数特征进行分桶处理。

二、叶子结点分裂时, 对所有特征重新构建直方图。

        1、这里说明了lightgbm是按照叶子节点进行生长的。

        2、同时,可以理解为,浮点数在最开始就进行分桶处理,或者在每次分裂时重新进行分桶处理。具体是哪一种方式,要看原码,因为每次结点分裂都要构建直方图,所以更可能是在每次分裂时一并处理浮点数的分桶工作。

三、叶子结点分裂的具体流程——整体要求,要遍历所有叶子节点,在叶子节点中查找分裂增益最大的进行分裂。

        1、对于每一个叶子节点,遍历所有特征,构建每个特征的直方图(这里是一个特征一个特征的构建,遍历这个叶子节点下的所有数据,将其放入对应的桶中:包括一阶梯度和二阶梯度,桶内样本的数量)。

例如:对于x1这个特征,先构建一个桶,遍历这个叶子节点下的所有数据,按照这个特征构建的桶,对样本分桶,在桶内保存一阶梯度和二阶梯度,桶内样本的数量。

       2、对于x1这个特征构建的直方图,从0这个直方图或者说这个桶开始遍历,将第0个桶分到左子树,用父节点直方图减去左节点直方图,算出右节点直方图,计算增益。然后将第0、第1个桶都放入左子树,再用父节点直方图减去左节点直方图,算出右节点直方图,计算增益。以此类推,找到最大的增益点。

        3、以此类推,找到x1这个特征的最大增益点。

        4、根据第x2、 x3......特征逐个构建这个叶子节点下的特征直方图。重复上面1到3步,直至找到所有特征中的最大增益点。

然后,再到其他叶子结点上,重复上面的过程。找到所有叶子结点上的最大增益点进行分裂。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值