论文阅读-LightGBM: A Highly Efficient Gradient Boosting Decision Tree

GBDT是常用的机器学习算法,有少量高质量的实现算法,例如:XGBoost和pGBRT。当特征维度很高或者数据量很大时,在实现的工程优化算法中,效率和可扩展仍然不能满足得到满意的结果。主要的原因是对于每个特征,我们都需要去扫描整个数据集得到分割点,这个过程是非常耗时的。针对这个问题,我们提出了两种解决方法:基于梯度的one-side采样互斥的特征捆绑。对于GOSS,我们排除了一部分梯度值小的数据实例,仅仅使用剩下来评估信息增益。这样做可行性的原因,拥有梯度值大的数据集在信息增益计算时扮演更重要的角色。在小数据集上GOSS可以获得更加准确的信息增益的评估结果。EFB捆绑互斥的特征,来减少特征的数量。但是我们发现最优的互斥特征是一个NP难问题,贪心算法可以取得近似的分数(在不损害分割点方向准确率的情况下,有效减少特征值)。

1 简介

GBDT因为其的有效性、准确性、可解释性,称为了广泛使用的机器学习算法。GBDT在众多的机器学习任务中取得了优越的结果,例如:多分类问题、点击预测、排序。随着大数据的出现,GBDT面临着些许挑战,特别是在准确率和效率之间的平衡。GBDT为了找到合适的分割点,需要扫描所有的数据。因此这个过程复杂度随着数据量和实例特征呈线性增长,所以在处理大数据时,这些实现方法需要大量的时间。为了应对如此的挑战,直接的想法就是在不影响准确率的情况下,减少数据量和特征,这个过程是复杂的,采样数据可能改变数据集的分布,有部分工作根据数据权重加速boosting训练过程,但是这不能直接应用于GDBT。

GOSS:前提是数据实例的梯度在信息增益上扮演者不同的作用,这个可以作为GBDT的权重,根据信息增益的定义,拥有大的梯度的实例贡献更多的信息增益,所以为了维持结果的准确性,我们应该尽量保留梯度大的实例,而舍弃梯度值小的实例。相比于均匀采样这种权重处理技巧能够获得更加准确的结果,特别是在数据量大的时候。

EFB:在真是的应用中,高维度特征具有稀疏性,这样可以设计一个减少有效特征数量的无损的方法,特别是在稀疏特征中,许多特征是互斥的,出现大量0,例如one-hot。我们可以捆绑互斥的特征。最后我们还原捆绑互斥问题为图着色问题,使用贪心算法近似求解。

基于上述两点的lightGBM取得了很好的结果,文章的结构,GBDT 现状、GOSS、EFB、实验结果。

2 GBDT工作

2.1 GBDT和复杂度分析

GBDT是决策树的集成模型,按顺序训练。在每次迭代过程中,GBDT通过拟合负梯度(残差)学到决策树。
GBDT主要的时间花销是学习决策树,学习决策树中的主要工作是找到分割点。被大家广泛采用的算法是通过预排序找到分割点,这种方法列举于预排序中所有可能的分割点,算法简单、精确,当时效率低下、内存消耗大。直方图算法,不是直接扫描数据找到分割点,而是通过将连续的特征值映射到离散的槽中,使用这些离散的值构建特征,直方图算法效率更高,内存占用更少。直方图算法构建o(data * feature) , o(bin * feature )找到对应的分割点,如果我们能够减少数据量或者需要计算的特征,算法可以得到加速。

2.2 相关工作(reduce data sample and reduce the features.)

已经有不少GBDT优雅的实现,包括XGBoost、pGBRT、sklearn、gbm in R 。sklearn和gbm通过预排序实现算法,pGBRT通过直方图实现算法。XGBoost支持预排序和直方图算法。XGBoost优于其他GBDT系列,所以使用XGBoost作为比较基准。
(reduce the size of training data)为了减少训练数据量,常规的方法是降低采样数据实例。例如,过滤掉权重值小于阈值的数据。SGB使用随机子集训练弱弱学习器,采样比率动态调整,有部分基于Adboost,不能直接应用于GBDT,因为在GBDT没有初始的权重。虽然SGB可以应用于GBDT,当时通过这种方式会损失准确度,所以这不是一个值得采用的方法。
(reduce the number of features)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值