lightgbm-论文阅读笔记

Abstract

虽然目前已经有比较高效的GBDT实现,如XGBoost和pGBRT,但是在特征维度很高数据量很大的时候依然不够快。一个主要的原因是,对于每个特征,他们都需要遍历每一条数据,对每一个可能的分割点去计算信息增益。为了解决这个问题,本文提出了两个新技术:Gradient-based One-Side Sampling(GOSS)和Exclusive Feature Bundling(EFB)。

有了GOSS,我们去掉了很大一部分梯度很小的数据,只使用剩下的去估计信息增益(这里不会受长尾的影响吗?)。我们证明了,由于梯度大的数据在计算信息增益的时候更重要,所以GOSS在小很多的数据上仍然可以取得相当准确的估计值。

有了EFB,我们捆绑互斥的特征(i.e.,他们经常同时取值为0),以减少特征的数量。我们证明了,对互斥特征寻找最佳的捆绑方式是一个NP难问题,当时贪婪算法可以取得相当好的近似率(因此可以在不显著影响分裂点选择的准确性的情况下,显著地减少特征数量)。

我们叫这种带有GOSS和EFB的新GBDT算法为LightGBM。我们在多个公共数据集的实验显示,Lightgbm在准确率相近的情况下,比常规的GBDT快了近20倍。

2 准备知识

2.1 GBDT and Its Complexity Analysis

GBDT是一个关于决策树的集成模型。在每一次迭代,GBDT会根据负梯度(也称残差)来学习决策树。

在训练GBDT中,最耗资源的是学习决策树和寻找决策树的最佳分割点。一个寻找分割点的最流行的算法是pre-sorted algorithm [8][9],它在pre-sorted的特征值上枚举所有可能的分割点。这个算法虽然简单也可行,但是不高效。另一个比较流行的算法是histogram-based algorithm [10][11][12],它讲连续的特征值编入到离散区域中,并在训练中用这些区域构建特征直方图。由于后者更高效,所以我们基于此开展我们的工作。

image.png

As shown in Alg. 1, the histogram-based algorithm finds the best split points based on the featurehistograms. It costsO(#data�#feature)for histogram building andO(#bin�#feature)forsplit point finding. Since #bin is usually much smaller than #data, histogram building will dominatethe computational complexity. If we can reduce #data or #feature, we will be able to substantiallyspeed up the training of GBDT.

2.2 Related Work

2.2.1

相关的GBDT实现有:

  • XGBoost --> pre-sorted algorithm and histogram-based algorithm
  • pGBDT --> histogram-based algorithm
  • scikit-learn --> pre-sorted algorithm
  • gbm in R --> pre-sorted algorithm

其中XGBoost是在这之中表现最好的,所以我们用它来作为baseline。

2.2.2 有几个问题

如何减少数据量

常用的减少训练数据量的方式是down sample。例如在[5]中,权重小于阈值的数据会被过滤掉,SGB在每一轮迭代中用随机的子集训练弱学习器;在[6]中,采样率会在训练过程中动态调整。但是,所有这些工作除了SGB外都是基于AdaBoost的,并且由于GBDT没有数据实例的权重,所以不能直接运用到GBDT上。虽然SGB可以应用到GBDT,但是它这种做法对acc影响太大了。

如何减少特征

类似的,为了减少特征的数量,需要过滤若特征[22, 23, 7, 24]。这通常用PCA和projection pursuit来做。可是,这些方法高度依赖一个假设,那就是特征包含相当多的冗余的信息。而这个假设在实践中通常不成立(因为通常特征都被设计为具有独特作用的,移除了哪个都可能对训练的acc有影响)

关于稀疏的数据

现实应用中的大规模数据通常是相当稀疏的。使用pre-sorted algorithm的GBDT可以通过忽略值为0的特征来降低训练的开销。而使用histogram-based algorithm的GBDT没有针对稀疏数据的优化方案,因为histogram-based algorithm无论特征值是否为0,都需要检索特征的bin值,所以它能够有效地利用这种稀疏特性。

为了解决上面的这些问题,我们提出了两个新的技术——GOSS和EFB。下面会详细介绍。

3 Gradient-based One-Side Sampling

这里,我们介绍一种用于GBDT的新的抽样方法,它在保证acc的情况下减少了数据量。

简而言之,GOSS保留了梯度较大的数据,而从梯度较小的数据中随机抽样。为了补偿对数据分布的影响,在计算信息增益时,为梯度较小的数据引入一个常数。具体来说,GOSS根据每个数据实例的梯度排序,选择topa \times 100\%的实例。然后从剩下的数据中随机抽样b \times 100\%的实例。然后,在计算信息增益的时候,GOSS会将梯度小的那部分数据乘上\frac{1-a}{b},起放大的作用(a, b < 1)。详情看Alg.2

4 Exclusive Feature Bundling

本节我们介绍一个新方法显著地减少特征数量。

高维度的数据通常是非常稀疏的,特征空间的稀疏性让我们可以设计一个几乎无损的方法去减少特征的数量。具体来说,在稀疏的特征空间中,许多特征是互斥的,i.e.,他们从不同时取非零值。所以我们可以安全地将互斥特征捆绑到一个特征中(我们称之为exclusive feature bundle)。通过仔细地设计特征扫描算法,我们可以像独立特征一样给feat bundles建立feature histograms。这样做之后,histogram building的算法复杂度从O(\#data \times \#feature)变为O(\#data \times \#bundle), \#bundle << \#feature。这样,我们就可以在不降低acc的情况下显著地提高GBDT的训练速度。

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342