带你通俗理解LightGBM

LightGBM是为解决GBDT在海量数据中的效率问题而提出的,通过Histogram算法、Leaf-wise生长策略和直方图做差加速等优化,实现了更快的训练速度和更低的内存消耗。它在Higgs数据集上比XGBoost快10倍,内存占用减少1/6。LightGBM支持特征并行和数据并行,有效减少了通信开销,提高了训练效率。
摘要由CSDN通过智能技术生成

GBDT (Gradient Boosting Decision Tree)是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT在工业界应用广泛,通常被用于点击率预测,搜索排序等任务。GBDT也是各种数据挖掘竞赛的致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。

LightGBM (Light Gradient Boosting Machine)一个实现GBDT算法的框架,支持高效率的并行训练,并且具有以下优点:

● 更快的训练速度

● 更低的内存消耗

● 更好的准确率

● 分布式支持,可以快速处理海量数据

LightGBM在Higgs数据集上LightGBM比XGBoost快将近10倍,内存占用率大约为XGBoost的1/6,并且准确率也有提升。

Xgboost已经十分完美了,为什么还要追求速度更快、内存使用更小的模型?

对GBDT算法进行改进和提升的技术细节是什么?

一、提出LightGBM的动机

常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。

而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。

LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。

改进的细节

Xgboost是如何工作的?

目前已有的GBDT工具基本都是基于预排序的方法(pre-sorted)的决策树算法(如xgboost)。这种构建决策树的算法基本思想是:

首先,对所有特征都按照特征的数值进行预排序。

其次,在遍历分割点的时候用O(#data)的代价找到一个特征上的最好分割点。

最后,找到一个特征的分割点后,将数据分裂成左右子节点。

这样的预排序算法的优点是能精确地找到分割点。

缺点也很明显:

首先,空间消耗大。这样的算法需要保存数据的特征值,还保存了特征排序的结果(例如排序后的索引,为了后续快速的计算分割点),这里需要消耗训练数据两倍的内存。

其次,时间上也有较大的开销,在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。

最后,对cache优化不友好。在预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化。同时,在每一层长树的时候,需要随机访问一个行索引到叶子索引的数组,并且不同特征访问的顺序也不一样,也会造成较大的cache miss。

二、LightGBM在哪些地方进行了优化?

a) 基于Histogram的决策树算法

b) 带深度限制的Leaf-wise的叶子生长策略

c) 直方图做差加速直接

d) 支持类别特征(Categorical Feature)

e) Cache命中率优化

f) 基于直方图的稀疏特征优化多线程优化。

下面主要介绍Histogram算法、带深度限制的Leaf-wise的叶子生长策略和直方图做差加速。

2.1 Histogram算法

直方图算法的基本思想是先把连续的浮点特征值离散化成k个整数(其实又是分桶的思想,而这些桶称为bin,比如[0,0.1)→0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值