LightGBM是微软团队2017年发表在NIPS的一篇论文,也是一种基于GBDT的Boosting的方法。之前有了各种Boosting方法,以及在各类数据比赛中大放异彩的XGBoost,LightGBM的优势在哪里呢?
LightGBM是一种基于GBDT的提升方法。对于这类基于树的模型,最耗时的部分就是在进行特征选择结点分裂时,需要遍历所有可能的划分点,计算信息增益,从而找到最优的划分点。前面虽然有了各类的算法对这个过程进行优化,比如XGBoost,但是在特征维数很高,样本量很大的情况下,它的效率和灵活性还是不够好。因此,本文的作者提出了LightGBM这个模型,极大的提升了计算效率。根据论文里的说法,在模型精度和GBDT差不多的情况下训练速度比它快了20倍。所以,LightGBM这个模型的提出,所要解决的主要问题是计算效率的问题。在快的同时,还能保证模型的精度,这是它最大的优点。
为了让GBDT快起来,入手的方向只有两个,要不就减少特征数,这样在进行特征选择结点分裂的时候能够减少计算量,提高速度;要不就减少训练样本数,这样也能减少计算量,提高效率。但是这样做缺点很明显,牺牲了模型的精度啊!有没有什么两全其美的方法呢?
在介绍LightGBM的方法之前,我们先回顾一下之前的一些模型是怎么做的。
对于一些采用行采样进行加速的模型,根据的是样本的权重进行的采样(比如AdaBoost模型,在训练过程中会提升那些之前被误分类的样本的权重),但是对与GBDT来说这就不适用了,因为它的样本是没有权重的;不需要