您的位置:首页 > 其它

LightGBM和XGboost的对比

2018-03-25 12:47 1986 查看
2017年初,微软开源了新的机器学习框架LightGBM,以GBDT为基础,据说在Higgs数据集上LightGBM比XGBoost快将近10倍,内存占用率大约为XGBoost的1/6

中文文档:http://lightgbm.apachecn.org/cn/latest/index.html

XGBoost是此前最好的Boosting模型,既然传言LightGBM性能更高,那二者有什么不同呢?

一、LightGBM提出的动机:

常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。

而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。

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

二、LightGBM和XGBoost的区别:

1、XGBoost使用基于预排序的方法(pre-sorted)的决策树算法,而LightGBM使用基于直方图(Histogram)的决策树算法。预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只需要计算k次(k可以认为是常数),时间复杂度从O(data*feature)优化到O(k*features)

注:

2、XGBoost使用的按层生长 (level-wise) 的决策树生长策略,LightGBM使用带有深度限制的按叶子生长 (leaf-wise) 算法,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。Leaf-wise的缺点是可能会长出比较深的决策树,产生过拟合。

3、支持类别特征,不需要独热编码处理

4、优化了特征并行和数据并行算法

综上所述:LightGBM的精度和XGBoost相似,甚至略高于XGBoost,而训练速度远高于XGBoost
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: