传统的GBDT算法存在的问题:
-
常用的減少训练数据量的方式是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值,所以它能够有效地利用这种稀疏特性
LightGBM 提出的主要原因就是为了解决 GBDT 茬海量数据遇到的问题,让 GBDT 可以更好更快地用于工业实践