GBDT&XGBoost&LightGBM的区别

LightGBM 和 XGBoost 两种机器学习算法的区别 GOSS 用于对数据进行采样,它会保留具有较大梯度的样本,因为这些样本对模型的训练影响更大,同时对梯度较小的样本进行下采样,从而在保证模型精度的同时提高训练速度。例如,在处理包含数百万条记录和数千个特征的数据集时,LightGBM 可以在较短的时间内完成训练,而 XGBoost 可能需要更长的时间。例如,在互联网行业处理海量的用户行为数据(如点击预测、广告推荐等)时,LightGBM 能够快速地训练出模型,并且在稀疏特征(如用户 - 商品交互特征)较多的情况下,仍然能够保持较好的性能。 阅读详情

GBDT&XGBoost&LightGBM的区别

GBDT

​ 梯度提升树是在提升树的基础上发展而来的一种适用范围更广的方法 , 当处理回归问题时 , 提升树可以看作是梯度提升树的特例(分类问题时不时特例) . 因为提升树在构建树的每一步的过程中都是去拟合上一步获得模型在训练集上的残差 . 这个残差正好是损失函数的梯度 , 对应于GBDT每一步要拟合的对象 .

  • 主要思想

    ​ 在目标函数所在的函数空间中做梯度下降,即把待求的函数模型当作参数,每一步要拟合目标函数关于上一步获得的模型的梯度,从而使得参数朝着最小化目标函数的方向更新。

  • 特性

    • 每次迭代获得的决策树模型都要乘以一个缩减系数,从而降低每棵树的作用,提升可学习空间。
    • 每次迭代拟合的是一阶梯度

XGBoost

​ XGBoost是GDBT的一个变种 , 最大的区别是xgboost通过对目标函数做二阶泰勒展开 , 从而求出下一步要拟合的树的叶子节点权重(需要先确定树的结构) , 从而根据损失函数求出每一次分裂节点的损失减少的大小 , 从而根据分裂损失选择合适的属性进行分裂 .
​ 这个利用二阶展开得到的损失函数公式与分裂节点的过程是息息相关的 . 先遍历所有节点的所有属性进行分裂 , 假设选择了这个a属性的一个取值作为分裂节点 , 根据泰勒展开求得的公式可计算该树结构各个叶子节点的权重 , 从而计算损失减小的程度 , 从而综合各个属性选择使得损失减小最大的那个特征作为当前节点的分裂属性 . 依次类推 , 直到满足终止条件 .

  • 特性
    • 除了类似于 GBDT 的缩减系数外,xgboost 对每棵树的叶子节点个数和权重都做了惩罚,避免过拟合
    • 类似于随机森林,XGBoost 在构建树的过程中,对每棵树随机选择一些属性作为分裂属性。
    • 分裂算法有两种,一种是精确的分裂,一种是近似分裂算法,精确分裂算法就是把每个属性的每个取值都当作一次阈值进行遍历,采用的决策树是 CART。近似分裂算法是对每个属性的所有取值进行分桶,按照各个桶之间的值作为划分阈值,xgboost 提出了一个特殊的分桶策略,一般的分桶策略是每个样本的权重都是相同 的,但是 xgboost使每个样本的权重为损失函数在该样本点的二阶导(泰勒展开不应该是损失函数关于模型的展开吗?为什么会有在该样本点的二阶导这种说法? 因为模型是对所有样本点都通用的,把该样本输入到二阶导公式中就可以得到了)。
    • xgboost 添加了对稀疏数据的支持,在计算分裂收益的时候只利用没有 missing 值的那些样本,但是在推理的时候,也就是在确定了树的结构,需要将样本映射到叶子节点的时候,需要对含有缺失值的样本进行划分,xgboost 分别假设该样本属于左子树和右子树,比较两者分裂增益,选择增益较大的那一边作为该样本的分裂方向。
    • xgboost 在实现上支持并行化,这里的并行化并不是类似于 rf 那样树与树之间的并行化,xgboost 同 boosting 方法一样,在树的粒度上是串行的,但是在构建树的过程中,也就是在分裂节点的时候支持并行化,比如同时计算多个属性的多个取值作为分裂特征及其值,然后选择收益最大的特征及其取值对节点分裂。
    • xgboost 在实现时,需要将所有数据导入内存,做一次 pre-sort(exact algorithm),这样在选择分裂节点时比较迅速。
  • 缺点
    • level-wise 建树方式对当前层的所有叶子节点一视同仁,有些叶子节点分裂收益非常小,对结果没影响,但还是要分裂,加重了计算代价。
    • 预排序方法空间消耗比较大,不仅要保存特征值,也要保存特征的排序索引,同时时间消耗也大,在遍历每个分裂点时都要计算分裂增益(不过这个缺点可以被近似算法所克服)

LightGBM

  • 关于LightGBM与xgboost不同之处 : https://github.com/Microsoft/LightGBM/wiki/Features

  • xgboost 采用的是 level-wise 的分裂策略,而 lightGBM 采用了 leaf-wise 的策略,区别是xgboost 对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是 xgboost 也进行了分裂,带来了不必要的开销。 leaft-wise 的做法是在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显 leaf-wise 这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。

  • lightgbm 使用了基于 histogram 的决策树算法,这一点不同与 xgboost 中的 exact 算法,
    histogram 算法在内存和计算代价上都有不小优势。

    • 内存上优势:很明显,直方图算法的内存消耗为(#data* #features * 1Bytes)(因为对特征分桶后只需保存特征离散化之后的值),而 xgboost 的 exact 算法内存消耗为:(2 * #data#features* 4Bytes),因为 xgboost 既要保存原始 feature 的值,也要保存这个值的顺序索引,这些值需要 32 位的浮点数来保存。
    • 计算上的优势,预排序算法在选择好分裂特征计算分裂收益时需要遍历所有样本的特征值,时间为(#data),而直方图算法只需要遍历桶就行了,时间为(#bin)
  • 直方图做差加速

    • 在对离散特征分裂时 , 每个取值都当做一个桶,分裂时的增益算的是”是否属于某个category“的 gain。类似于 one-hot 编码。
  • 但实际上 xgboost 的近似直方图算法也类似于 lightgbm 这里的直方图算法,为什么xgboost 的近似算法比 lightgbm 还是慢很多呢?

    • xgboost 在每一层都动态构建直方图, 因为 xgboost 的直方图算法不是针对某个特定的 feature,而是所有 feature 共享一个直方图(每个样本的权重是二阶导),所以每一层都要重新构建直方图,而 lightgbm 中对每个特征都有一个直方图,所以构建一次直方图就够了。

    • lightgbm 做了 cache 优化?lightgbm 哪些方面做了并行?

      • feature parallel
        一般的 feature parallel 就是对数据做垂直分割(partiion data vertically,就是对属性分割),然后将分割后的数据分散到各个 workder 上,各个 workers 计算其拥有的数据的 best splits point, 之后再汇总得到全局最优分割点。但是 lightgbm 说这种方法通讯开销比较大,lightgbm 的做法是每个 worker 都拥有所有数据,再分割?(没懂,既然每个 worker 都有所有数据了,再汇总有什么意义?这个并行体现在哪里??)
      • data parallel
        传统的 data parallel 是将对数据集进行划分,也叫 平行分割(partion data horizontally),分散到各个 workers 上之后,workers 对得到的数据做直方图,汇总各个 workers 的直方图得到全局的直方图。 lightgbm 也 claim 这个操作的通讯开销较大,lightgbm 的做法是使用”Reduce Scatter“机制,不汇总所有直方图,只汇总不同 worker 的不同 feature的直方图(原理?),在这个汇总的直方图上做 split,最后同步。
GBDT、XGBoost、LightGBM算法详解 在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。然后我们拿残差替代A,B,C,D的原值,到第二棵树去学习,如果我们的预测值和它们的残差相等,则只需把第二棵树的结论累加到第一棵树上就能得到真实年龄了。从树深度0开始,每一节点都遍历所有的特征,比如年龄、性别等等,然后对于某个特征,先按照该特征里的值进行排序,然后线性扫描该特征进而确定最好的分割点,最后对所有特征进行分割后,我们选择所谓的增益Gain最高的那个特征。 阅读详情

相关推荐

LightGBM:基于决策树算法的快速,分布式,高性能梯度提升(GBT,GBDT,GBRT,GBM或MART)框架,用于排名,分类和许多其他机器学习任务

渐变光机 LightGBM是使用基于树的学习算法的梯度增强框架。 它被设计为分布式且高效的,具有以下优点: 训练速度更快,效率更高。 降低内存使用率。 更好的准确性。 支持并行和GPU学习。 能够处理大规模数据。 有关更多详细信息,请参阅。 受益于这些优势,LightGBM被广泛用于许多机器学习竞赛的中。 在公共数据集上进行的表明,LightGBM可以在效率和准确性上均优于现有的Boosting框架,并且显着降低了内存消耗。 此外, 表明,LightGBM可通过使用多台机器进行特定设置的训练来实现线性加速。 入门和文档 我们的主要文档位于并从该存储库生成。 如果您不熟悉LightGBM,请按照站点上进行。 接下来,您可能需要阅读: 显示常见任务命令行用法的。 LightGBM支持的和算法。 是您可以进行的自定义的详尽列表。 和可以加快计算速度。 是有关超参数的详细指南。 为LightGBM超参数()提供自动调整。 贡献者文档: 。 查阅《 。 新闻 请参考页面上的变更日志。 一些重要的更新日志可在“页面上找到。 外部(非官方)存储库 Optun

XGboost和lightGBM算法对比

总的来说,XGBoost和LightGBM都是基于梯度提升树的机器学习算法,它们在性能上都有一定的优势,可以用于处理各种类型的机器学习问题。而LightGBM采用的是一种基于直方图(histogram)的方式,将数据划分为多个直方块,并对每个直方块进行划分,从而减少了划分时需要遍历的数据量,提高了效率。总的来说,XGBoost和LightGBM都是强大的机器学习算法,它们各自具有高性能、鲁棒性、泛化能力和高效性等不同的特点,可以根据具体的应用场景和需求来选择使用。

weixin_71158509的博客 5084

ROS与UR10e机械臂实战:从零搭建到精准控制

本文详细介绍了如何从零开始搭建ROS与UR10e机械臂的开发环境,包括硬件准备、软件配置、网络设置以及MoveIt!运动控制实战。通过具体的代码示例和常见问题排查,帮助开发者快速掌握UR10e机械臂的精准控制技术,适用于工业自动化和实验室研究场景。

m3n5b7v8c9x的博客 772

XGBoost与Light-GBM算法

本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》 一、XGBoost算法 XGBoost算法在某种程度上可以说是GBDT算法的改良版,两者在本质上都是利用了Boosting算法中拟合残差的思想。XGBoost算法的官方说明文档网址 作为对GBDT算法的高效实现,XGBoost算法在以下两方面进行了优化。 算法本身的优化:XGBoost算法的损失函数,除了本身的损失,还加上了正则化部分,可以防止过拟合,泛化能力更强。XGBoost算法的损失函数是对误差部分做二阶泰勒展开,相较于GBD.

m0_46388544的博客 3141

SAP ABAP BADI_FINS_ACDOC_POSTING_EVENTS 深度应用:KO88工单结算的凭证字段定制与财务数据增强

本文深入探讨了SAP ABAP中BADI_FINS_ACDOC_POSTING_EVENTS在KO88工单结算中的应用,详细解析了如何通过BADI实现财务凭证字段的定制与数据增强。文章提供了从结构扩展到BADI方法实现的完整步骤,包括性能优化建议和实际应用中的测试验证流程,帮助开发人员高效解决企业个性化财务需求。

weixin_26869081的博客 390

STM32 FMC驱动AD7606实战:从硬件连接到时序调试全流程解析

本文详细解析了STM32 FMC驱动AD7606的全流程,包括硬件连接、FMC接口配置、驱动程序设计和时序调试。通过实战案例,展示了如何利用STM32的FMC总线实现与AD7606的高效数据传输,特别强调了电源设计、信号连接和PCB布局等关键要点,为嵌入式数据采集系统开发提供了实用指导。

aa123的博客 1005

XGBoost和LightGBM的比较

目录 1.XGBoost sgboost中树节点分裂时所采用的公式: xgboost的分裂步骤: xgboost总结 LightGBM:基于决策树算法的分布式梯度提升框架 LightGBM在模型的训练速度和内存方面的优化 LightGBM的leaf-wise 的生长策略 LightGBM支持类别型特征 xgboost与LightGBM的区别 1.XGBoost XGBo...

fly_Xiaoma的博客 3万+

例题讲解拉格朗日乘子法、线性可分支持向量机(SVM)的推导

支持向量机(Support Vector Machine, SVM)的简单推导及例题

zzzssszzzzsz的博客 5683

集成算法(lightgbm和xgboost)

xgb和lightgbm算法

weixin_45762552的博客 1427

CentOS7下通过YUM源高效部署Zabbix7 Agent指南

本文详细指导在已结束生命周期的CentOS7系统上,通过更换YUM源(如阿里云镜像)并添加Zabbix官方仓库,高效部署Zabbix7 Agent。文章涵盖从源配置、软件安装、关键参数修改到服务启动与防火墙设置的全流程,帮助用户解决依赖错误,快速建立服务器监控。

weixin_29230059的博客 268

VSCode + Copilot下:配置并使用 DeepSeek

以下是关于在中,通过插件配置并使用系列模型 () 的完整汇总指南。

jerwey的博客 1万+

GBDT、XGBoost、LightGBM简要描述

1.GBDT (1.)GBDT原理 GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。 举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢? 它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁; 接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁; 接着在第三棵树中

hezi321的博客 962

恒玄BES调试笔记-BES2500如何Dump Anc Audio数据

从YP的4M flash改HP3的2M flash只需要改: 原工程:target.mk的export FLASH_SIZE ?= 0x200000和common.mk里的KBUILD_CPPFLAGS += -DNEW_IMAGE_FLASH_OFFSET=0x100000 OTA工程:target.mk的NEW_IMAGE_FLASH_OFFSET ?= 0x100000和FLASH_SIZE ?= 0x200000 ...

leezs的博客 1672

机器学习三大神器:GBDT,XGBOOST和LightGBM

本文主要简要的比较了常用的boosting算法的一些区别,从AdaBoost到LightGBM,包括AdaBoost,GBDT,XGBoost,LightGBM四个模型的简单介绍,一步一步从原理到优化对比。 AdaBoost原理 原始的AdaBoost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,大家都是一样重要的。在每一步训练中得到的模型,会使得数据点的估计有对有错,我们就在每一步结束后,增加分错的点的权重,减少分对的点的权重,这样使得某些点如果老是被分错,那么就会被“重点关注”,也就被

qq_36608036的博客 693

《用 AI 赋能医药科研创新》目录(持续更新)

本专栏旨在指导医学科研和药物研发人员运用AI技术提升研究效率。内容包括:利用AI分析文献、识别研究热点、自动生成研究草稿;在新药研发中,通过AI优化临床方案设计、受试者筛选等环节;介绍AI理论基础如大语言模型、提示词工程学及智能体技术发展历程。专栏采用5000-9000字的长文形式,系统讲解AI在医药研发各环节的应用方法,帮助研究者缩短周期、降低成本,推动医药研发进入智能化新阶段。

MD Code 501

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

树模型问题汇总

决策树 AdaBoost GBDT 问:为什么GBDT要拟合负梯度 Xgboost 问:Xgboost的损失函数是什么? GBDT用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。 首先,在GBDT损失函数的基础上,Xgboost加入了正则化项,即对叶子数与叶节点权重的惩罚,即系数为gamma的叶子结点个数和系数为二分之lambda的L2正则项。 如果我们要极小化这个损失函数的话,需要求解J个叶子结点区域的最优解w,Xgboost的GBDT的一阶泰勒展开的基础上做二阶泰勒展开,经

using namespace 数学工具构造器; 843

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

GBDT、XGBoost、LightGBM汇

Ref:深入理解XGBoost 本文是在原文基础上进行修补。 XGBoost原理推倒: (1)目标函数: (2)第一项泰勒展开: (3)第二项-定义树的复杂度: (4)最终的目标函数: (5)一棵树的生成细节: (5.1)首先列采样,随机选出K列特征作为划分特征; (5.2)然后这K列进行并行运算,针对每列特征将数据生序排列,保存为block结构 ...

qfikh的博客 3498

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

解决方案:GBDT、LightGBM、XGBoost、跟 Catboost,这四者有什么区别

解决方案:GBDT、LightGBM 跟 XGBoost ,这三者有什么区别

weixin_42504788的博客 1260

【机器学习】最强比较!GBDT 与 LightGBM !!

之前做了不少算法在不同情况下的对比,今天想要和大家聊聊的是关于GBDT 与 LightGBM的内容~首先咱们从简单的一个介绍开始,GBDT 和 LightGBM 都属于梯度提升树模型,它们是集成学习中的一种方法,通过构建多个弱学习器(通常是决策树)来提升整体的预测效果。这两者的核心思想是:每棵新树都在减少之前模型的误差,最终形成一个强大的模型。GBDT:GBDT通过多棵树的梯度加权提升来减少误...

fengdu78的博客 1197

【机器学习基础】机器学习入门核心算法:XGBoost 和 LightGBM

机器学习入门核心算法:XGBoost 和 LightGBM

weixin_43988131的博客 1722

【机器学习】深度剖析 LightGBM vs XGBOOST 哪个更胜一筹

今天就 LightGBM 和 XGBOOST放在一起对比学习下,以便加深印象。写在前面作为一个机器学习研习者,大概会了解 Boosting Machines 及其功能。Boosting ...

fengdu78的博客 2万+

Python机器学习15——XGboost和 LightGBM详细用法(交叉验证,网格搜参,变量筛选)

XGboost,LightGBM,交叉验证,网格搜参,变量重要性和筛选,早停

weixin_46277779的博客 1万+

xgboost与gbdt区别

在理解XGBOOST时,需要借助GBDT的理解,并对两者进行对比,这样的方法更有效率。 XGBOOST与GBDT第一个区别:牛顿法 GBDT 在函数空间中利用梯度下降法进行优化 XGBoost 在函数空间中用牛顿法进行优化 XGBOOST与GBDT的第二个区别:正则项 上面对GBDT中的分析可以知道它是没有正则项的,在XGBOOST中加入了正则项,但是正则项也不是XGBOOST首先加入的,并不是开...

WangYouJin321的博客 3940

GBDT和XGBoost区别-结论:

GBDT和XGBoost区别(百面机器学习): 1、GBDT是机器学习算法,XGBoost是该算法的工程实现 2、在使用CART作为基分类器时,XGBoost显式的加入正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力 3、GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数 4、传统的GBDT采用CART...

平原的博客 2199

XGBoost和LightGBM

和是当前机器学习中两种非常流行的集成方法,均属于**梯度提升树(Gradient Boosting Trees, GBT)**的改进版本。它们在处理大规模数据集和高维特征的任务上表现优异,尤其适用于分类、回归任务,并广泛应用于客户行为分析、风险预测、推荐系统、金融等领域。

Naomi521的博客 1636

GBDT、XGBoost、LightGBM的区别和联系

文章目录1. Boosting算法2. GBDT算法GBDT的优点和局限性3. XGBoost算法GBDT和XGBoost对比:4. LightGBM算法4.1 LightGBM的并行方案4.1.1 特征并行4.1.2 数据并行4.1.3 基于投票的并行方案4.2 基于梯度的单边检测(GOSS)4.3 排他性特征捆绑(EFB)LightGBM和XGBoost对比 1. Boosting算法 首先这三种算法都属于Boosting方法,且GBDT是机器学习算法,XGBoost和LightGBM是GBDT的算法实

ywm_up 2412
上一篇: 推荐系统-用户标签预测算法基础实践-决策树2
下一篇: 解决数据不平衡
CoderBoom
博客等级 码龄8年 62粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值