随着大数据时代的到来,GBDT正面临着新的挑战,特别是在精度和效率之间的权衡方面。传统的GBDT实现需要对每个特征扫描所有数据实例,以估计所有可能的分割点的信息增益。因此,它们的计算复杂度将与特征数和实例数成正比。这使得这些实现在处理大数据时非常耗时。所以微软亚洲研究院提出了 LightGBM ,其设计理念是:
- 单个机器在不牺牲速度的情况下,尽可能使用上更多的数据
- 多机并行的时候,通信的代价尽可能地低,并且在计算上可以做到线性加速。
LightGBM 与 XGBoost 相似,也是一种梯度提升机,但是与XGBoost不同的是,其选择按叶生长(每一层只对一个节点进行分支),并且使用直方图算法避免了每次寻找分割点时的排序操作,只需要在一开始对全部数据进行排序后找到分割点,每次寻找分割点时只需要简单地分桶操作。同时其寻找最佳分割点的依据仍然是 XGBoost 中所提到的,根据一阶导数和二阶导数求出最佳的解和目标值,根据贪心算法穷举所有分组,从而找出最佳分组,同时为了提高效率提出了两个方法:
-
单边采样:对于需要训练的样本给予重视,而不需要训练的数据进行随机采样,同时为了保证减小对损失函数的影响对于随机采集的数据予以权重。
-
互斥特征融合:根据度(连接数,即与其他特征发生冲突的可能性)对其降序排序,使用贪心前向搜索算法,将冲突率小于要求值的特征进行绑定。然后使用直方图进行横向融合。
决策树学习算法(Decision Tree Learning Algorithm)
传统的决策树的生成方法有:按叶生长(Leaf-wise tree growth)和按层生长(Level-wise tree growth)两种。
其中按层生长是将每一个节点都分割为两个叶子节点。其虽然有天然的并行性,但是会有很多不必要的分裂产生,造成更多的计算代价。