前言
LightGBM是个快速的,分布式的,高性能的基于决策树算法的梯度提升框架。可用于排序,分类,回归以及很多其他的机器学习任务中。
在竞赛题中,我们知道XGBoost算法非常热门,它是一种优秀的拉动框架,但是在使用过程中,其训练耗时很长,内存占用比较大。在2017年年1月微软在GitHub的上开源了一个新的升压工具--LightGBM。在不降低准确率的前提下,速度提升了10倍左右,占用内存下降了3倍左右。因为他是基于决策树算法的,它采用最优的叶明智策略分裂叶子节点,然而其它的提升算法分裂树一般采用的是深度方向或者水平明智而不是叶,明智的。因此,在LightGBM算法中,当增长到相同的叶子节点,叶明智算法比水平-wise算法减少更多的损失。因此导致更高的精度,而其他的任何已存在的提升算法都不能够达。与此同时,它的速度也让人感到震惊,这就是该算法名字 灯 的原因。
-
2014年3月,XGBOOST最早作为研究项目,由陈天奇提出
(XGBOOST的部分在我的另一篇博客里:https://blog.csdn.net/huacha__/article/details/81029680
-
2017年1月,微软发布首个稳定版LightGBM
在微软亚洲研究院AI头条分享中的「LightGBM简介」中,机器学习组的主管研究员王太峰提到:微软DMTK团队在github上开源了性能超越其它推动决策树工具LightGBM后,三天之内星了1000+次,叉了超过200次。知乎上有近千人关注“如何看待微软开源的LightGBM?”问题,被评价为“速度惊人”,“非常有启发”,“支持分布式” “代码清晰易懂”,“占用内存小”等。以下是微软官方提到的LightGBM的各种优点,以及该项目的开源地址。
科普链接:如何玩转LightGBM https://v.qq.com/x/page/k0362z6lqix.html
目录
一、"What We Do in LightGBM?"
下面这个表格给出了XGBoost和LightGBM之间更加细致的性能对比,包括了树的生长方式,LightGBM是直接去选择获得最大收益的结点来展开,而XGBoost是通过按层增长的方式来做,这样呢LightGBM能够在更小的计算代价上建立我们需要的决策树。当然在这样的算法中我们也需要控制树的深度和每个叶子结点的最小数据量,从而减少过拟合。
小小翻译一下,有问题还望指出
XGBoost | LightGBM | |
树木生长算法 | 按层生长的方式 有利于工程优化,但对学习模型效率不高 |
直接选择最大收益的节点来展开,在更小的计算代价上去选择我们需要的决策树 控制树的深度和每个叶子节点的数据量,能减少过拟合 |
划分点搜索算 法 | 对特征预排序的方法 | 直方图算法:将特征值分成许多小筒,进而在筒上搜索分裂点,减少了计算代价和存储代价,得到更好的性能。另外数据结构的变化使得在细节处的变化理上效率会不同 |
内存开销 | 8个字节 | 1个字节 |
划分的计算增益 | 数据特征 | 容器特征 |