机器学习: LightGBM模型(优化版)——高效且强大的树形模型
LightGBM(Light Gradient Boosting Machine)是一种基于梯度提升决策树(GBDT)的框架,由微软提出。它具有高效的训练速度、低内存占用、支持并行和GPU加速等特点,非常适合大规模数据的训练任务,尤其在分类和回归任务中表现突出。LightGBM的核心原理可以从以下几个方面来理解:
LightGBM模型特点
(一)基于梯度提升的树模型
LightGBM是一个梯度提升决策树(GBDT, Gradient Boosting Decision Tree)算法的改进版本,利用多个决策树的集合来进行学习。GBDT的基本思想是通过迭代地构建一系列弱学习器(通常是决策树)来提升模型的整体性能,每一步都构建一个新的树以减少前一阶段的误差。通过累积的方式使得预测误差不断减少,最终得到一个准确的预测模型。
注:如果要了解 LightGBM 的具体实现原理,可以先看文章XGBoost模型,之后再来看本篇文章,这里我就不反复写啦。在本篇文章,涉及相对于XGBoost,LightGBM有哪些优秀的特点,便于大家选择合适的模型。大佬的话就当我在说废话吧hhhh
(二)叶子生长策略(Leaf-wise Growth)
传统的GBDT通常采用层级生长(Level-wise Growth)方式,即每一层的节点同时扩展,直到达到预设深度。而LightGBM采用叶子生长策略,即每次选择增益最大的叶子节点继续分裂。叶子生长能够显著降低训练时间,因为它更加有选择性,只扩展当前最有助于提升模型效果的节点。不过,这种策略会导致树结构不平衡,容易产生过拟合,因此需要使用正则化和控制树的最大深度来缓解。
-
层级生长(Level-wise Growth): 传统GBDT通常采用层级生长策略,即每次在当前层中的所有节点上都进行分裂,保证所有叶子节点的深度相同。这种策略较为简单,但会浪费大量计算资源在效果有限的节点上,尤其在数据量较大时,效率较低。
-
叶子生长(Leaf-wise Growth): LightGBM采用叶子生长策略,即在每一轮中,只选择增益最大的叶子节点进行分裂,而不是让所有节点都分裂。这种策略使得模型能够更好地聚焦于最具提升潜力的节点,从而加速模型训练,同时也在相同树深度下实现更好的性能。
示例图1(层级生长):

示例图2(叶子生长):

(三) 直方图算法(Histogram-based Algorithm)
LightGBM引入了直方图算法来加速特征分裂的过程。它将连续的特征值离散化成一定数量的bins(区间),每个bin代表一段连续的特征值范围。训练过程中,LightGBM会根据这些bins计算每个分裂点的增益值,从而减少了计算量并加快了分裂速度。此外,直方图算法在内存占用上也更高效,因为它只需要存储每个bin的统计信息,而非每个样本的特征值。
(四)GOSS单侧采样(Gradient-based One-Side Sampling)
在处理大规模数据时,LightGBM引入了基于梯度的单侧采样(GOSS)策略。GOSS的核心思想是对梯度绝对值较大的样本保留较高的比例,而对梯度较小的样本随机采样。因为梯度大的样本通常对模型的更新更为重要,因此这种策略能够保留更多关键信息,同时显著减少样本数量,加速训练过程。
(五)特征捆绑技术(EFB)
为了进一步提高效率,LightGBM提出了排他特征捆绑(EFB)技术。EFB通过将互斥的稀疏特征捆绑在一起,减少了特征的维数。互斥特征是指在一个样本中不会同时取非零值的特征,例如在一个文本分类任务中,某些词汇不会同时出现。将这些特征打包为一个特征列,从而减少计算量和内存占用。
(六)支持并行和分布式训练
LightGBM支持特征并行和数据并行。特征并行指的是多个工作节点分配到不同的特征上,减少在计算分裂点时的特征遍历时间。而数据并行则将数据划分到不同的机器中,每个机器上训练子集数据的模型,再将结果合并。这使得LightGBM能够高效处理大规模数据集,尤其在分布式环境中表现出色。
(七)高效的正则化
为了控制模型的复杂度和防止过拟合,LightGBM提供了多种正则化手段,包括L1、L2正则化以及对叶节点数和树深的控制。此外,通过设置最大深度、最小数据量等参数,可以防止树的过拟合问题,提升模型的泛化能力。
LightGBM 与 XGBoost 对比
(一)树的生长方式
-
XGBoost:
-
按层生长(Level-wise growth):XGBoost 使用传统的按层生长策略,即每次扩展树的所有层级,直到树的每一层都填充完。这种策略在每一层都尝试平衡树的深度,有时可能导致树的结构较为均匀,但并不一定是最优的。
-
-
LightGBM:
-
按叶生长(Leaf-wise growth):LightGBM 使用按叶子生长的策略。每次分裂时,它选择增益最大的叶子节点进行扩展。这使得树的深度较大,能够更快速地拟合训练数据,通常会提高模型的准确性。
-
优点:按叶子生长通常能带来更高的预测准确率,因为它更集中地拟合最难预测的部分。
-
缺点:按叶生长可能导致过拟合,尤其是当树的深度很大时,因此需要更多的正则化措施来避免过拟合。
-
(二)特征处理与数据格式
-
XGBoost:
-
XGBoost 对数据进行优化,可以处理稀疏数据集,并且可以处理不同的数据类型(连续、类别等)。XGBoost 对类别特征的处理相对简单,通常需要通过手动编码(如独热编码)将类别变量转化为数值型特征。
-
-
LightGBM:
-
LightGBM 自带对类别特征的处理机制,能够直接处理原始的类别特征,而不需要手动进行独热编码(One-Hot Encoding)。它通过特殊的类别特征分裂策略(如基于统计信息的分裂方法)来处理类别数据,减少了内存消耗和计算复杂度。
-
特征桶化(Bin):LightGBM 会通过将连续特征离散化成多个桶(bin)来加速训练过程,这个过程通过直方图的方式进行。
-
(三)训练过程中的优化
-
LightGBM:
-
直方图优化:LightGBM 使用直方图来优化数据存储和分裂点计算,将数据离散化成多个区间(桶)。这种方法在特征分裂时大大减少了计算的复杂度,因为只需要在桶的基础上进行分裂增益的计算,而不需要考虑每个样本。
-
单边梯度优化(GOSS):LightGBM 引入了 GOSS 技术,通过保留梯度较大的样本并随机采样梯度较小的样本,来减少计算量而不牺牲模型精度。
-
类别特征的高效处理:LightGBM 对类别特征的优化非常高效,减少了对内存的使用和计算时间。
-
(四)并行化与分布式训练
-
XGBoost:
-
XGBoost 支持数据并行和模型并行。数据并行是指将训练数据分配到多个机器或 CPU 核心上,模型并行则是在不同的树或不同的叶子节点上进行并行计算。
-
在分布式环境中,XGBoost 采用了一种类似于 MapReduce 的框架来处理分布式训练,但在处理非常大规模数据时,性能可能不如 LightGBM。
-
-
LightGBM:
-
LightGBM 支持高效的分布式训练。它对数据和任务进行了更精细的划分,可以在多机多卡环境下进行高效的并行训练。LightGBM 可以在多台机器上分布式训练,处理大规模数据时,通常会比 XGBoost 更加高效。
-
(五)使用场景对比
-
XGBoost:在许多传统机器学习任务中,XGBoost 的表现非常优秀,尤其在小数据集或中等规模的数据集上,经过精心调节参数后能获得非常高的准确性。
-
LightGBM:特别适合大规模数据集和高维稀疏数据,在内存使用和训练速度上有显著优势。LightGBM 在大规模机器学习和工业应用中往往表现得更为高效。
选择建议:
-
如果数据集比较小或者中等,且需要非常高的精度,XGBoost 是一个不错的选择。
-
如果数据集非常大,特别是具有大量特征和稀疏特征的情况,LightGBM 更为适用。
# 文章内容来源于各渠道整理。若对大噶有帮助的话,希望点个赞支持一下叭!
# 文章如有错误,欢迎大噶指正!
相关文章:
机器学习: LightGBM模型(优化版)——高效且强大的树形模型
LightGBM(Light Gradient Boosting Machine)是一种基于梯度提升决策树(GBDT)的框架,由微软提出。它具有高效的训练速度、低内存占用、支持并行和GPU加速等特点,非常适合大规模数据的训练任务,尤…...
Wordpress常用配置,包括看板娘跨域等
一个Wordpress的博客已经搭建完成了,那么为了让它看起来更有人间烟火气一点,有一些常用的初始配置,这里整理一下。 修改页脚 页脚这里默认会显示Powered by Wordpress,还有一个原因是这里要加上备案信息。在主题里找到页脚&…...
Python学习从0到1 day27 Python 高阶技巧 ③ 设计模式 — 单例模式
此去经年,再难同游 —— 24.11.11 一、什么是设计模式 设计模式是一种编程套路,可以极大的方便程序的开发最常见、最经典的设计模式,就是我们所学习的面向对象了。 除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模…...
Unity 网格模型及优化
一个模型中可以包含很多网格,一个模型可以由多个网格组成。在Unity3D中一个网格可以由多个子网格(Sub-Mesh)组成。 在渲染引擎的时候,每个子网格都要匹配一个材质球来做渲染,实际上一个子网格本身就是一个个普通的模型࿰…...
离线 快速搭建 docker docker-compose k8s 环境
所需资源 sealos_5.0.1_linux_arm64.tar.gzkubernetes.tar等docker-compose-linux-aarch64 离线安装sealos,用于安装k8sdocker 首先安装sealos工具 tar zxvf sealos_5.0.1_linux_arm64.tar.gz sealos && chmod x sealos && mv sealos /usr/bin*…...
Excel根据条件动态索引单元格范围
假如我是一个老板,下面有数不胜数的员工,我要检查他们每周的工作产出,列一个排行榜,提高员工积极性,毕竟多劳多得嘛。 每天去手动统计,未免显得不太聪明,我们可以利用公式来解决这个问题。 我们…...
【计算机网络五】HTTP协议!网站运行的奥秘!
目录 HTTP协议 1.HTTP是什么? 2.Fiddler抓包查看HTTP协议格式 3.HTTP请求 4.HTTP响应 HTTP协议 1.HTTP是什么? HTTP ( 全称为 " 超文本传输协议 ") 诞生与 1991 年 . 目前已经发展为最主流使用的一种应用层协议 . HTTP 的前几个版本…...
开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将换一种方…...
stream学习
Stream流 定义 Steam流,用于操作集合或者数组中的数据,大量结合了Lamda表达式的语法风格,代码简洁。 重点: 流只能收集一次 获取Stream流 Stream流要与数据源建立连接。 1.list 直接调用steam()即可 // list List<Stri…...
【数据结构】实验二 单链表的基本操作
一、实验目的 掌握线性表的链式存储结构的表示和实现方法。 掌握链表基本操作的算法实现,以及对相应算法的性能分析。 二、实验内容 1)根据输入的一系列整数,以0标志结束,用头插法建立单链表,并输出单链表中各元素…...
SQL 分组查询中的非聚合列要求及实例解析
在 SQL 查询中,当我们对数据进行分组时,通常会用到 GROUP BY 子句。SQL 标准要求:所有非聚合列(即没有使用聚合函数的列)都必须出现在 GROUP BY 子句中,或者是聚合函数的结果。这篇文章通过一个实例来说明这…...
Unity中实现战斗帧同步的高级技术
一、帧同步的基本原理 帧同步(Frame Synchronization)在网络游戏中指的是在每一帧上保证所有玩家所看到的游戏状态一致,而不是每个玩家单独计算自己的状态。实现帧同步通常需要每个客户端仅发送用户输入到服务器,并由服务器进行全…...
Qt 正则表达式提取文件中的 USB 设备 ID
Qt 正则表达式提取文件中的 USB 设备 ID flyfish 文档内容 Bus: 001 Device: 001 Description: 1d6b:0002 Linux Foundation 2.0 root hub Bus: 002 Device: 003 Description: 0e0f:0002 , Inc. USB Hub Bus: 002 Device: 002 Description: 0e0f:0003 , Inc. Mouse Bus: 002…...
使用 Python 和 OpenCV 实现摄像头人脸检测并截图
概述 在现代应用中,人脸检测是一项非常重要的技术,广泛应用于安全监控、身份验证等领域。本文将详细介绍如何使用 Python 和 OpenCV 库实现摄像头人脸检测并截图,并通过具体的代码示例来展示整个过程。 环境准备 在开始编写代码之前&#…...
【二叉搜素树】——LeetCode二叉树问题集锦:6个实用题目和解题思路
文章目录 计算布尔二叉树的值求根节点到叶节点的数字之和二叉树剪枝验证二叉搜索树二叉搜索树中第K小的元素二叉树的所有路径 计算布尔二叉树的值 解题思路: 这是一个二叉树的布尔评估问题。树的每个节点包含一个值,其中叶子节点值为 0 或 1࿰…...
【计算机视觉】FusionGAN
1. FusionGAN论文阅读 abreheret/FusionGAN: Pytorch implementation of "Generating a Fusion Image: One’s Identity and Another’s Shape" 1.1. WHY 在现实世界中,将对象或人物转换为期望的形状是一种常用技术,但现有的图像翻译方法在处理身份和形状时存在…...
问:SQL优化,七条实践总结?
SQL语句优化是数据库性能调优的重要部分,通过合理的优化可以显著提升查询速度和系统性能。文章总结几种常见SQL语句优化方法。 1. 优化Where子句的顺序 原则:表之间的连接条件应写在其他Where条件之前,能够过滤掉最大数量记录的条件应优先写…...
unity单例模式的不同声明(待完善
总结: 这段代码实现了一个泛型单例模式(Singleton Pattern),用于确保某个类(由泛型参数 T 指定)在整个应用程序中只有一个实例,并且在第一次访问时才创建该实例。该模式保证了该实例的全局唯一…...
大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手
本文来自腾讯蓝鲸智云社区用户: CanWay 背景 1、运维转型背景 蓝鲸平台从诞生之初,就一直在不遗余力地推动运维转型,让运维团队可以通过一体化PaaS平台,快速编写脚本,编排流程,开发运维工具,从被动地提供…...
vue2,vue3响应式的理解
vue2的话主要使用的是defineProperty对已有属性添加get,set,从而完成对数据的响应式控制,但每次需要for循环对属性进行遍历 function DefineReactive(target, key, value) {//存在多层嵌套的objectObserver(value);Object.defineReactive(target, key, {get() {retu…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
