LightGBM

LightGBM针对高维和大规模数据的挑战,提出基于梯度的one-side采样(GOSS)和互斥特征捆绑(Exclusive Feature Bundling)方法。GOSS保留大梯度实例并随机采样小梯度数据,以保持模型精确度。特征捆绑则将互斥特征绑定为单一特征,降低特征数量,加速直方图构建,从而加速GBDT训练,而无损精度。
摘要由CSDN通过智能技术生成

1,研究动机

当特征维度很高或数据量很大时,获取最佳分割点十分耗时,主要的原因是对于每个特征,都需要扫描整个数据集得到分割点。为解决此问题,提出两个解决措施:基于梯度的one-side采样(Gradient-based One-Side Sampling)和互斥的特征捆绑(Exclusive Feature Bundling)。

2,相关工作

搜索最佳分割点
贪心搜索法:通过预排序找到分割点,这种方法列举于预排序中所有可能的分割点,算法简单、精确,当时效率低下、内存消耗大。
直方图算法:不直接扫描数据找到分割点,而是通过将连续的特征值映射到离散的槽中,使用这些离散的值构建特征,直方图算法效率更高,内存占用更少。个人觉得有种近似的效果。
减少数据量
过滤掉权重值小于阈值的数据。
SGB使用随机子集训练弱弱学习器,采样比率动态调整,有部分基于Adboost,不能直接应用于GBDT,因为在GBDT没有初始的权重。虽然SGB可以应用于GBDT,当时通过这种方式会损失准确度,所以这不是一个值得采用的方法。
降低特征维度
主成分分析或者投影法,这种降维的方法依赖假设-特征中有冗余,但是这不符合实际,每一维的特征都有其表征,取出任何特征都可能有损精度。
在真实应用场景中,数据通常是稀疏的,使用预排序的GBDT通过忽略为零的特征降低训练特征。然而基于直方图的GBDT没有有效的稀疏优化方案。直方图的算法需要检索特征本值,无论特征值是否为零。基于直方图的GBDT能够有效利用如此的稀疏特性。

3、研究方法

3.1 基于梯度的one-side 采样
如果实例梯度值小,这个实例的误差就小,说明这个实例已经训练的很好了,直接的想法就是抛弃拥有小梯度的实例数据,这样一来数据的分布就会发生改变,会损失学到的模型的精确度。为了避免这个问题,我们提出了一种叫做GOSS的方法。GOSS保持有较大梯度的实例,在小梯度数据上运行随机采样。为了弥补这样做造成的数据分布的影响,当我们计算信息增益的时候,对于小梯度的数据GOSS引入了常量乘法器。特别的是,GOSS首先根据梯度绝对值排序,再选出a100%大梯度实例数据。之后在余下的数据随机采样b100%。经过这个过程,当计算信息增益时,GOSS使用小梯度放大了采样数据1-a/b。这样做的好处在于,放更多的注意力在训练实例上,而没有改变原始数据的分布
3.2 排他性特征绑定
高维数据通常具有稀疏的特征。稀疏的数据提供给了我们减少特征数量而较小误差损失的可能。特别是在稀疏数据中,许多特征是互斥的同时这些特征通常为非零值。我们绑定互斥的特征为单一特征(排他特征绑定)。通过仔细设计特征扫描算法,我们从特征绑定中建立相同的特征直方图作为单一特征。通过这种方式,构建直方图的复杂度从O(data * feature ) 到O(data * bundle),bundle << feature。然后我们在无损精度的情况下加速GBDT的训练。
首先,构建带权重的边,权重对应于特征之间的总体冲突。然后,按照度降序排序特征。最后检查排序列表中的每个特征,这个特征应该被指派给带冲突的绑定或者创建新的绑定。算法3的时间复杂度为O(feature^2),这个过程仅仅在训练前被处理一次。当特征的数量不是很大时。为了更进一步提高效率,我们提出了更加有效的无图构建的排序策略:按照非零值的数量排序,这个和度排序相似,因为非零值通常导致更高概率的冲突。我们仅仅改变算法3中排序的策略。
为了降低相应的训练复杂度,应该怎样合并特征到相同的包中。关键是确保原始特征值可以从特征包中区分出来。因为基于直方图的算法存储离散值而不是连续特征值,所以我们通过利用不同箱中的排他特征构建特征包。这个可以通过添加偏移指针到原始特征中。例如假定我们有两个特征在特征包中,原始特征A取值[0 , 10],特征B取值[0 , 20 ] 。我们然后添加偏移量10到特征B中,所以重新构建的特征取值为[10 , 30 ]。在这个过程后,合并A和B是安全的。使用一个新特征[0 , 30]代替原始特征 A 和B。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值