【机器学习】lightGBM

1. LightGBM 基础理论

LightGBM 是经典GBDT的高效实现方式,可以针对机器学习中的classification,regression 和ranking问题进行建模。

LightGBM is a gradient boosting framework that uses tree based learning algorithms. It is designed to be distributed and efficient with the following advantages:

  • Faster training speed and higher efficiency.
  • Lower memory usage.
  • Better accuracy.
  • Support of parallel, distributed, and GPU learning.
  • Capable of handling large-scale data.

1.1 LightGBM 的特点与改进

  1. GOSS(Gradient-based One-Side Sampling 梯度单边采样)减少训练样本数量。
  2. EFB (Exclusive Feature Bundling) 减少特征数。
  3. 基于 histogram 的决策树算法。 相比于另一个主流的算法 pre-sorted(如 xgboost 中的 exact 算法),histogram 在内存消耗和计算代价上都更具优势。一个叶子的直方图可以由它的父亲节点的直方图与它兄弟的直方图做差得到(直方图做差加速)。
  4. GBDT 不能用类似 mini batch 的方式来训练,需要对数据进行无数次的遍历。如果想要速度,就需要把数据都预加载在内存中。LightGBM是分布式的GBDT,更高效地利用更多的数据。支持高效并行计算。
  5. 带有深度限制的leaf-wise机制。LightGBM抛弃了大多数 GBDT 工具使用的按层生长(level-wise) 的决策树生长策略,而使用了带有深度限制的按叶子生长 (leaf-wise) 算法。level-wise 过一次数据可以同时分裂同一层的叶子,容易进行多线程优化,不容易过拟合。但实际上level-wise是一种低效的算法,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销。因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。leaf-wise则是一种更为高效的策略,每次从当前所有叶子中,找到分裂增益最大(一般也是数据量最大)的一个叶子,然后分裂,如此循环。同 level-wise 相比,在分裂次数相同的情况下,leaf-wise 可以降低更多的误差,得到更好的精度。leaf-wise 的缺点是可能会长出比较深的决策树,产生过拟合。因此 LightGBM 在leaf-wise 之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合。

 

1.2 LightGBM优缺点

优点:

  • 简单易用
  • 计算高效
  • 低内存使用
  • 支持并行化学习
  • 支持类别型特征。不需要做one-hot编码

缺点:

  • 相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
  • 在拥有海量训练数据,并能找到合适的深度学习模型时,深度学习的精度可以遥遥领先LightGBM。

1.3 GOSS

梯度大的样本点在信息增益的计算上扮演着主要的作用,也就是说这些梯度大的样本点会贡献更多的信息增益,因此为了保持信息增益评估的精度,对样本进行下采样的时候保留这些梯度大的样本点。但如果简单忽略小梯度样本会改变数据分布,从而影响模型准确性。GOSS的做法是:对于梯度小的样本点按比例进行随机采样,并在计算信息增益时乘以一个常数,以此达到让算法更关注训练不足的实例,而不会过多改变原数据集的分布的目的。

步骤:

  1. 对所有样本按照梯度绝对值大小降序排列。
  2. 选取梯度绝对值最大的 a*100% 的样本点。
  3. 从剩余数据中随机抽样 b*100%.
  4. 对梯度较小的b部分样本点,在计算information gain时乘以一个系数 1 − a b \frac{1-a}{b} b1a

GOSS

1.4 直方图

直⽅图算法的核⼼⽬的是减少候选点的数量。

数值特征

  1. 按特征值将样本分入k个桶中。
  2. 计算每个桶中样本个数 N N N
  3. 计算桶中样本一阶梯度,样本一阶梯度之和作为桶的一阶梯度 G G G
  4. 计算桶中样本二阶梯度,样本二阶梯度之和作为桶的二阶梯度 H H H
  5. 对于桶 i i i,有 ( N i , G i , H i ) (N_i,G_i,H_i) (Ni,Gi,Hi)
  6. 划分的候选点变成了bin的区间点。

类别特征

  • 一个类别值就可作为一个桶
  • 忽略掉样本数特别少的桶

类别特征的划分比数值特征复杂。因为类别特征的值无序。若一个特征有4种取值,则在构建cart tree存在 2 4 − 1 2^4-1 241 种划分方式。LGB使用贪心方法来解决这个问题,假设对类别a进行划分:

  1. 统计类别特征a种每个类别的样本数量。过滤掉数量很少的类别,做直方图。
  2. 计算每个bin的值 G j H j + λ c a t \frac{G_j}{H_j + \lambda_{cat}} Hj+λcatGj
  3. 将bin按该值升序排列。
  4. 从两端开始搜索,计算Gain,寻找最优划分点。搜索的上限为max_num_cat

直方图差加速算法
当我们对特征从候选点中选择某个阈值进⾏划分之后,还需要构建划分之后特征左右⼦集合的直⽅图。计算出左⼦集的直⽅图后,右直⽅图可以直接通过特征划分之前的直⽅图相减得到。
在这里插入图片描述
histogram based algorithm
find best split by histogram

 

1.5 EFB

高维数据通常十分稀疏。在稀疏特征空间,许多特征是互斥的。⽐如对于 onehot 编码的特征,只能有⼀个是 1&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值