这次终于彻底理解了 LightGBM 原理及代码( 七 )


这次终于彻底理解了 LightGBM 原理及代码

文章插图
图:LightGBM回归模型调参
6. 关于LightGBM若干问题的思考
6.1 LightGBM与XGBoost的联系和区别有哪些?
(1)LightGBM使用了基于histogram的决策树算法,这一点不同于XGBoost中的贪心算法和近似算法,histogram算法在内存和计算代价上都有不小优势 。
1)内存上优势:很明显,直方图算法的内存消耗为(#data * # features * 1Bytes) (因为对特征分桶后只需保存特征离散化之后的值),而XGBoost的贪心算法内存消耗为:(2*#data * # features * 4Bytes),因为XGBoost既要保存原始feature的值,也要保存这个值的顺序索引,这些值需要位的浮点数来保存 。
2)计算上的优势:预排序算法在选择好分裂特征计算分裂收益时需要遍历所有样本的特征值,时间为,而直方图算法只需要遍历桶就行了,时间为 。
(2)XGBoost采用的是level-wise的分裂策略,而LightGBM采用了leaf-wise的策略,区别是XGBoost对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是XGBoost也进行了分裂,带来了不必要的开销 。leaft-wise的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合 。
(3)XGBoost在每一层都动态构建直方图,因为XGBoost的直方图算法不是针对某个特定的特征,而是所有特征共享一个直方图(每个样本的权重是二阶导),所以每一层都要重新构建直方图,而LightGBM中对每个特征都有一个直方图,所以构建一次直方图就够了 。
(4)LightGBM使用直方图做差加速,一个子节点的直方图可以通过父节点的直方图减去兄弟节点的直方图得到,从而加速计算 。
(5)LightGBM支持类别特征,不需要进行独热编码处理 。
(6)LightGBM优化了特征并行和数据并行算法,除此之外还添加了投票并行方案 。
(7)LightGBM采用基于梯度的单边采样来减少训练样本并保持数据分布不变,减少模型因数据分布发生变化而造成的模型精度下降 。
(8)特征捆绑转化为图着色问题,减少特征数量 。
7. Reference
由于参考的文献较多,我把每篇参考文献按照自己的学习思路,进行了详细的归类和标注 。
LightGBM论文解读:
【1】Ke G, Meng Q, Finley T, et al. Lightgbm: A highly efficient gradient boosting decision tree[C]//Advances in Neural Information Processing Systems. 2017: 3146-3154.
【2】Taifeng Wang分享LightGBM的视频,地址:
https://v.qq.com/x/page/k0362z6lqix.html
【3】开源|LightGBM:三天内收获GitHub 1000+ 星,地址:
https://mp.weixin.qq.com/s/M25d_43gHkk3FyG_Jhlvog
【4】Lightgbm源论文解析:LightGBM: A Highly Efficient Gradient Boosting Decision Tree,地址:
https://blog.csdn.net/anshuai_aw1/article/details/83048709
【5】快的不要不要的lightGBM - 王乐的文章 - 知乎
https://zhuanlan.zhihu.com/p/31986189
【6】『 论文阅读』LightGBM原理-LightGBM: A Highly Efficient Gradient Boosting Decision Tree,地址:
https://blog.csdn.net/shine19930820/article/details/79123216
LightGBM算法讲解:
【7】【机器学习】决策树(下)——XGBoost、LightGBM(非常详细) - 阿泽的文章 - 知乎
https://zhuanlan.zhihu.com/p/87885678
【8】入门 | 从结构到性能,一文概述XGBoost、Light GBM和CatBoost的同与不同,地址:
https://mp.weixin.qq.com/s/TD3RbdDidCrcL45oWpxNmw
【9】CatBoost vs. Light GBM vs. XGBoost,地址:
https://towardsdatascience.com/catboost-vs-light-gbm-vs-xgboost-5f93620723db
【10】机器学习算法之LightGBM,地址:
https://www.biaodianfu.com/lightgbm.html
LightGBM工程优化:
【11】Meng Q, Ke G, Wang T, et al. A communication-efficient parallel algorithm for decision tree[C]//Advances in Neural Information Processing Systems. 2016: 1279-1287.
【12】Zhang H, Si S, Hsieh C J. GPU-acceleration for Large-scale Tree Boosting[J]. arXiv preprint arXiv:1706.08359, 2017.
【13】LightGBM的官方GitHub代码库,地址:
https://github.com/microsoft/LightGBM
【14】关于sklearn中的决策树是否应该用one-hot编码?- 柯国霖的回答 - 知乎
https://www.zhihu.com/question/266195966/answer/306104444
LightGBM实例:
【15】LightGBM使用,地址:
https://bacterous.github.io/2018/09/13/LightGBM%E4%BD%BF%E7%94%A8/
【16】LightGBM两种使用方式 ,地址:
https://www.cnblogs.com/chenxiangzhen/p/10894306.html


推荐阅读