本文根据多篇博文整理总结而成.
提升树是利用加法模型与前向分步算法实现学习的优化过程,它有一些高效实现,如XGBoost, pGBRT,GBDT等。其中GBDT采用负梯度作为划分的指标(信息增益),XGBoost则利用到二阶导数。它们共同的不足是计算信息增益需要扫描所有样本,从而找到最优划分点。在面对大量数据或者特征维度很高时,它们的效率和扩展性很难使人满意。
微软开源的LightGBM(基于GBDT的)则很好的解决这些问题,LightGBM是个快速的,分布式的,高性能的基于决策树算法的梯度提升框架。有以下优势:更快的训练效率;低内存使用;更高的准确率;支持并行化学习;可处理大规模数据;
XGBoost和LightGBM之间更加细致的性能对比如下所示
xgboost优缺点:
优点:XGB利用了二阶梯度来对节点进行划分,相对来说,精度更加高。XGB利用局部近似算法对分裂节点的贪心算法优化,取适当的eps时,可以保持算法的性能且提高算法的运算速度。在损失函数中加入了L1/L2项,控制模型的复杂度,提高模型的鲁棒性。提供并行计算能力,主要是在树节点求不同的候选的分裂点的Gain Infomation(分裂后,损失函数的差值),Tree Shrinkage,column subsampling等不同的处理细节。
缺点:每轮迭代时,都需要多次遍历整个训练数据。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。
预排序方法(pre-sorted):