[fy机器学习] XGBoost,LightGBM,GBDT对比

  • A+
所属分类:科研汇报

在解决实际优化问题的时候需要对结果进行优化,梯度提升决策树(Gradient Boosting Decision Tree,GBDT)是一种基于boosting集成学习思想的加法模型,训练时采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差。XGBoost,LightGBM则是在GBDT的基础上对其改进和优化

本文展示的是不同算法对温度流量特性数据的优化结果。

GBDT

[fy机器学习] XGBoost,LightGBM,GBDT对比

           GBDT残差图

Xgboost

1)对树每次做分裂候选时,是使用的Gain增益,而不是普通的gini指数或者均方差,是一种优化过的误差计算.

2)将树模型的复杂度加入到正则项中,参与到损失函数,来避免过拟合问题

3)对损失函数进行了优化,优化成了二阶泰勒展开形式,同时使用了一阶导和二阶导,加速了优化速度

4)相比于GBDT只支持Cart作为基分类器的方式,Xgboost还支持线性分类器,在使用线性分类器时候可以使用L1正则化和L2正则化

5)使用Shrinkage缩减的方法,相对于对学习率的设置,xgboost在进行玩一次迭代后,会将叶子结点的权重乘该系数,主要是削弱每棵树的影响,放置过拟合,实际使用时候,刚开始会设置的大一些,之后迭代次数多了时候会设置小一些

6)Xgboost并不是完全的贪心寻找最佳分割点的方法,而是使用了一种近似的方法

[fy机器学习] XGBoost,LightGBM,GBDT对比

XGBoost残差图

常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。

LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。

[fy机器学习] XGBoost,LightGBM,GBDT对比

LightGBM残差图

 

LightGBM的话对Xgboost的优化主要是在速度优化上,但是这里的效果并不好,我认为可能时因为LightGBM更适合数据较大时的回归问题,对与数据小的时候并不能有比xgboost更好的回归效果。

weinxin
XCJinggai的微信
这是我的微信二维码,有任何问题请加微信联系我!或发送邮件至lqzhangfengxi@163.com
zfy

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: