切分算法(切分点的选取)
占用的内存更低,只保存特征离散化后的值,而这个值一般用8位整型存储就足够了,内存消耗可以降低为原来的1/8
LightGBM直接支持类别特征
决策树生长策略不同
       XGBoost采用的是带深度限制的level-wise生长策略。level-wise过一次数据可以能够同时分裂同一层的叶子,容易进行多线程优化,不容易过拟合;但不加区分的对待同一层叶子,带来了很多没必要的开销(实际上很多叶子的分裂增益较低,没必要进行搜索和分裂)

LightGBM采用leaf-wise生长策略,每次从当前所有叶子中找到分裂增益最大(数据量最大)的一个叶子,进行分裂,如此循环;但会生长出比较深的决策树,产生过拟合(因此LightGBM在leaf-wise之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合)

原始的GBDT算法基于经验损失函数的负梯度来构造新的决策树,
只是在决策树构建完成后再进行剪枝。而XGBoost在决策树构建阶段就
加入了正则项,即

XGBoost需要从所有的树结构中找出一个最优的树结构,这是一个NP-hard问题,因此在实际中通常采用贪心算法来构建一个次优的树结构,基本思想是从根节点开始,每次对一个叶子节点进行分裂,针对每一种可能的分裂,根据特定的准则选取最优的分裂。不同的决策树算法采用不同的准则,如IC3算法采用信息增益,C4.5算法为了克服信息增益中容易偏向取值较多的特征而采用信息增益比,CART算法使用基尼指数和平方误差,XGBoost也有特定的准则来选取最优分裂。

GBDT 虽然是个强力的模型,但却有着一个致命的缺陷,不能用类似 mini batch 的方式来训练,需要对数据进行无数次的遍历。如果想要速度,就需要把数据都预加载在内存中,但这样数据就会受限于内存的大小;如果想要训练更多的数据,就要使用外存版本的决策树算法。虽然外存算法也有较多优化,SSD 也在普及,但在频繁的 IO 下,速度还是比较慢的。

为了能让 GBDT 高效地用上更多的数据,我们把思路转向了分布式 GBDT, 然后就有了 LightGBM。设计的思路主要是两点,1. 单个机器在不牺牲速度的情况下,尽可能多地用上更多的数据;2.
多机并行的时候,通信的代价尽可能地低,并且在计算上可以做到线性加速。

基于这两个需求,LightGBM 选择了基于 histogram 的决策树算法。相比于另一个主流的算法 pre-sorted(如 xgboost 中的 exact 算法),histogram 在内存消耗和计算代价上都有不少优势。

  • Pre-sorted 算法需要的内存约是训练数据的两倍(2 * #data * #features
    * 4Bytes),它需要用32位浮点来保存 feature value,并且对每一列特征,都需要一个额外的排好序的索引,这也需要32位的存储空间。对于 histogram 算法,则只需要(#data
    * #features * 1Bytes)的内存消耗,仅为 pre-sorted算法的1/8。因为 histogram 算法仅需要存储 feature bin value (离散化后的数值),不需要原始的 feature value,也不用排序,而 bin value 用 uint8_t (256 bins) 的类型一般也就足够了。

xgboost与LightGBM的区别相关推荐

  1. gbdt 回归 特征重要性 排序_RandomForest、GBDT、XGBoost、lightGBM 原理与区别

    RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善基本学习器的泛化能力和鲁棒性. 根据基本学习器 ...

  2. [机器学习 ] RandomForest、GBDT、XGBoost、lightGBM 原理与区别

    目录 随机森林 -- RandomForest GBDT (Gradient Boosting Decision Tree) XGBoost lightGBM 一 知识点介绍 RF,GBDT,XGBo ...

  3. 并肩XGBoost、LightGBM,一文理解CatBoost!

    本文主要内容概览: 1. CatBoost简介 CatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库,是Boosting族算法的一种.CatBoost和XGBoost.Light ...

  4. 【机器学习基础】XGBoost、LightGBM与CatBoost算法对比与调参

    机器学习 Author:louwill Machine Learning Lab 虽然现在深度学习大行其道,但以XGBoost.LightGBM和CatBoost为代表的Boosting算法仍有其广阔 ...

  5. 最常用的决策树算法(三):XGBoost 和 LightGBM

    决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型.本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5.CART),第二篇介绍 Ran ...

  6. L2R 三:常用工具包介绍之 XGBoost与LightGBM

    L2R最常用的包就是XGBoost 和LightGBM,xgboost因为其性能及快速处理能力,在机器学习比赛中成为常用的开源工具包, 2016年微软开源了旗下的lightgbm(插句题外话:微软的人 ...

  7. xgboost简单介绍_好文干货|全面理解项目中最主流的集成算法XGBoost 和 LightGBM

    点击上方"智能与算法之路",选择"星标"公众号 第一时间获取价值内容 本文主要介绍基于 Boosting 框架的主流集成算法,包括 XGBoost 和 Ligh ...

  8. XGBoost、LightGBM与CatBoost算法对比与调参

    虽然现在深度学习大行其道,但以XGBoost.LightGBM和CatBoost为代表的Boosting算法仍有其广阔的用武之地.抛开深度学习适用的图像.文本.语音和视频等非结构化的数据应用,Boos ...

  9. 【面试必备】奉上最通俗易懂的XGBoost、LightGBM、BERT、XLNet原理解析

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 在非深度学习的机器学习模型中,基于GBDT算法的XGBoost.LightGBM等有着非常优秀的性能,校招算法岗面试中"出镜率"非 ...

  10. 第二篇:对CART,Gradient Boost,Xgboost,LightGBM的学习

    1.衡量决策树(结果是离散的)划分纯度的方式(也就是划分指标是否对数据进行最恰当地划分):信息增益(ID3).信息增益率(C4.5).基尼系数(CART)等等. 2.回归树的关键点.参数:(1)选取哪 ...

最新文章

  1. 人工智能入门(二):语音识别基本模型
  2. css3 3d变换和动画——回顾
  3. 关于union的那些事儿
  4. 求求你,别再用wait和notify了!
  5. python怎么另起一行阅读答案_使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)...
  6. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例
  7. 晨哥真有料丨自信一点!恋爱做自己,不要自卑,不要迎合!
  8. java实现线性回归(简单明了,适合理解)
  9. java创建图片文件怎么打开_java 程序怎么打开一张图片?
  10. onnx 测试_YOLOv5来了!Pytorch实现,支持ONNX和CoreML
  11. java mina 大文件传输_mina 传输java对象
  12. 破解百词斩单词数据之旅
  13. 被巨头“封杀”后,中国移动互联网企业如何加速出海
  14. 【华为云技术分享】深度理解AI概念、算法及如何进行AI项目开发
  15. 10.2.2.7 -DHCP 和 DNS 服务
  16. no openvas scap database found. (tried /var/lib/openvas/scap-data/scap.db)错误
  17. 手机停机号码被回收后容易信息泄露?工信部说这样做
  18. 基于深度指标的网络脆弱性攻击代价定量评估方法
  19. 浙江省谷歌地球高程DEM等高线下载
  20. eyoucms自媒体新闻资讯类网站模板

热门文章

  1. 【转】BeyondCompare3提示许可密钥过期完美解决方法
  2. ASP.NET Treeview控件中对Checkbox的联级选择
  3. 3 docker容器
  4. java rfid 写入_怎么使用java来读取外接RFID数据
  5. WIFI篇(3.python破解wifi--pywifi的介绍)
  6. 联发科技嵌入式_MTK深圳公司嵌入式软件工程师笔试题(含部分答案)
  7. xp系统怎么解除防火墙阻止_xp系统关闭防火墙方法
  8. 笔记本cpu温度高怎么办_夏天面团温度高怎么办?几个技巧让面温立马降下来
  9. linux java 多线程_Java多线程:Linux多路复用,Java NIO与Netty简述
  10. 冲突符号_冲突营销关键词连载(二) 冲突