lightgbm和xgboost的区别
收藏
常用的机器学习算法,例如神经网络,都是在总数据集中每次抽取mini-batch的量对模型进行训练。而GBDT在每次迭代中,都需要遍历整个数据集。如果都装进内存则会限制总数据量的大小,而如果存在硬盘中,反复的读写则会非常的耗时,对于工业级海量数据而言,一般的GBDT算法不能满足需求。
lightgbm与xgboost的区别如下:
(1)XGBoost使用基于预排序(pre-sorted)的决策树算法,而LightGBM使用基于直方图(Histogram)的决策树算法。预排序算法每遍历一个特征值就需要计算一次分裂的增益,而直方图算法只需要计算k次(k可以认为是常数),计算复杂度从O(datafeature)优化到O(kfeatures)。
(2)XGBoost使用的按层生长 (level-wise) 的决策树生长策略,LightGBM使用带有深度限制的按叶子生长 (leaf-wise) 算法,在分裂次数相同的情况下,Leaf-wise可以降低更多的误差,得到更好的精度。Leaf-wise的缺点是可能会长出比较深的决策树,产生过拟合。
(3)LightGBM支持类别特征,不需要独热编码处理
LightGBM是2017年初微软开源的框架,算法基础是GBDT,其在Higgs数据集上要比XGBoost快10倍,而内存使用率仅为后者1/6。
0
收藏
请登录后评论