当前位置: 首页 > news >正文

树模型与集成学习:LightGBM

目录

树模型与集成学习

LightGBM 的贡献

LightGBM 的贡献:单边梯度抽样算法

LightGBM 的贡献:直方图算法

LightGBM 的贡献:互斥特征捆绑算法

LightGBM 的贡献:深度限制的 Leaf-wise 算法


树模型与集成学习

树模型是非常好的基学习器(弱学习器)。

如何结合多颗树完成模型构建呢?

Random Forest: Bagging + Decision Tree

GBDT: Gradient Boost + Decision Tree

将树模型和集成学习进行结合的想法是可行的。

比如,如果我们将 Bagging 和 Decision Tree 思路进行结合,在进行训练的时候,我们训练多棵树,每棵树使用具体的不同的数据,那么这样就是随机森林的思路。如果我们将 Gradient Boost 和 Decision Tree 思路进行结合,那么就是 GBDT 的思路。

随机森林是基于 Bagging 的思路,对数据集进行有放回的采样,构建不同的数据集,然后从数据集里面训练得到不同的模型,最终完成投票,或者是加权求和。

在竞赛的过程中,我们一般情况下是不会去使用随机森林,我们现在会直接使用比较高阶的一些树模型,比如 XGBoost,LightGBM 或 CatBoost

LightGBM 的贡献

LightGBM 的特点或贡献主要有如下几点。

图片

单边梯度抽样算法;

直方图算法;

互斥特征捆绑算法;

深度限制的 Leaf-wise 算法;

类别特征最优分割;

特征并行和数据并行;

缓存优化。

LightGBM 的贡献:单边梯度抽样算法

对样本进行采样,选择部分梯度小的样本;

让模型关注梯度高的样本,减少计算量。

首先来看单边梯度抽样算法,我们在进行训练的过程中,可能会计算具体的逻辑 function,然后可以得到具体的梯度信息。我们在进行选择的过程中,会剔除梯度比较小的样本,也就是说,我们会让模型关注梯度比较高的一些样本,这样可以减少模型的计算量,加速训练。

如图是来自于原始论文中的 LightGBM 的伪代码,它的具体的特征是由梯度比较强的一部分样本和梯度比较弱的一部分样本这两部分组成的。

图片

LightGBM 的贡献:直方图算法

将连续特征离散化,用直方图统计信息;

对内存、速度都友好。

第二个是直方图算法,它是 LightGBM 提出伊始的一种非常惊艳的算法。在使用树模型的时候,我们的类别特征需不需要做 onehot 呢?其实在 LightGBM 被提出来之前,一般情况还是建议做 onehot 的,也就是说,在使用 XGBoost 的时候,是建议做 onehot 然后再做训练的。但是现在 LightGBM 的原始论文中使用了直方图的算法来将连续特征做离散化。在 2017 年第一版本的 LightGBM 提出的时候,它的直方图的算法已经比 XGBoost 快很多了。

LightGBM 直方图算法的连续特征离散化特征,是将具体的连续特征用直方图去做一个相当于分箱的过程。分箱是把具体的连续分布划分成不同的单元格,然后从单元格的角度去进行节点的划分。如图是它的具体的伪代码。

图片

它的伪代码对于每个特征去构建一个直方图,然后再去从直方图里面找到最优的分裂节点。

LightGBM 的贡献:互斥特征捆绑算法

使用互斥捆绑算法将特征绑定,降低复杂度;

将特征绑定视为图着色问题,计算特征之间的冲突值;

将特征增加增加偏移量,然后一起相加分桶。

LightGBM 也支持互斥捆绑的过程。我们在进行迭代的过程中,其实是可以将特征进行绑定,以此来降低模型的复杂度的。但是在绑定的过程中,其实是有一个搜索过程的,LightGBM 把搜索过程视为图着色问题,然后去计算特征之间的冲突值。LightGBM 将两个特征的直方图进行相加,组成为一个新的直方图,然后在新的直方图中找到分裂节点,它的核心的仍然是基于直方图的操作。

图片

LightGBM 的贡献:深度限制的 Leaf-wise 算法

每次分裂增益最大的叶子节点,直到达到停止条件;

限制树模型深度,每次都需要计算增益最大的节点;

LightGBM 还有一个贡献就在于它是基于 Leaf-wise 的节点分裂。我们在进行节点分裂的过程中,会设置树模型的最大深度,这是我们在一些机器学习模型里面需要设置的超参数。LightGBM 在分裂的过程中,不是逐层进行具体的划分的,它是在进行节点分裂的过程中,选择分裂增益最大的叶子节点,然后再进行分裂,而且它限制了具体的树模型的深度,这样能够避免模型的过拟合。

图片

图片

相关文章:

树模型与集成学习:LightGBM

目录 树模型与集成学习 LightGBM 的贡献 LightGBM 的贡献:单边梯度抽样算法 LightGBM 的贡献:直方图算法 LightGBM 的贡献:互斥特征捆绑算法 LightGBM 的贡献:深度限制的 Leaf-wise 算法 树模型与集成学习 树模型是非常好的…...

PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例

拼多多商品详情原数据API接口的作用是获取拼多多电商平台上某一商品的详细信息,包括商品的标题、价格、库存、图片、描述、包邮信息、销量、评价、优惠券等数据。通过该API接口可以获取到商品的原始数据,用于分析、筛选和展示商品信息。 pinduoduo.item…...

数据结构(Java实现)-二叉树(下)

获取二叉树的高度 检测值为value的元素是否存在(前序遍历) 层序遍历 判断一棵树是不是完全二叉树 获取节点的路径 二叉树的最近公共祖先...

如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?

作者:深耕行业的 SmartX 金融团队 张瑞松 运维人员在日常管理集群时,有时难免会产生这样的困惑: 新业务准备上线,在具备多套存储的情况下,应如何选择承载业务的存储环境? 业务虚拟机刚上线时运行速度很快…...

固定资产管理措施怎么写

固定资产管理措施是指企业在进行固定资产管理时所采取的各种措施和方法。以下是一些常见的固定资产管理措施:  建立完善的固定资产管理制度。制定明确的资产采购、使用、维护、报废等流程和标准,确保资产管理的规范性和透明度。  采用先进的资产管理…...

C语言中typedef和const的区别

昨天面试的时候面试官问了这个问题,平时也有见过这两个类型限定词,可能是因为不怎么使用的原因,当问到它们的区别时,我不知道从哪个方面开始回答。 用 typedef 定义新的类型名 类型定义的书写格式为 typedef 类型 被定义的类型名 …...

大数据系列教程之 Kafka基础

kafka概述 一、kafka概述 1.1 定义1.2 消息队列 1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种形式1.3 Kafka 基础架构二、kafka安装部署 2.1安装部署 2.1.1.jar包下载2.1.2.解压到指定的文件夹下2.1.3.创建两个文件夹以供后续使用2.1.4. 修改配置文件 (1&…...

【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化

Go语言是一种快速、简洁且高效的编程语言,它在处理日期与时间方面提供了丰富的标准库函数。本文将详细介绍Go语言中处理日期与时间的函数,涵盖常用的日期时间操作、格式化、时区转换等内容,并介绍time.Time结构体中的相关方法。 时间的表示与…...

抽象工厂模式:创建相关对象族

欢迎阅读设计模式系列的第四篇文章!在前面的文章中,我们已经学习了设计模式的基本概念以及工厂方法模式的应用。 今天,我们将继续深入,介绍第三个模式——抽象工厂模式。 抽象工厂模式简介 抽象工厂模式是一种创建型设计模式&a…...

uniapp:安卓permission权限表及setting表

安卓permission权限表 权限名称说明android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词android.permission.WRITE_SYNC_SETTINGS写入 Google 在线同步设置android.permission.WRITE_SOCIAL_STREAM读取用户的社交信息流android.permission.WRITE_SMS允…...

汽车服务门店小程序模板制作指南

在数字化时代,一个小程序的力量不可忽视。它不仅是展示品牌形象和提供用户服务的重要工具,更是扩大客户群体和提高营收的关键手段。对于汽车服务门店来说,拥有一个精美且功能齐全的小程序,更将成为你在竞争激烈的市场中的重要武器…...

Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

时隔两个月, Apache SeaTunnel 终于迎来大版本更新。此次发布的 2.3.3 版本在功能和性能上均有较大优化改进,其中大家期待已久的 CDC Schema evolution(DDL 变更同步)、主键 Split 拆分、JDBC Sink 自动建表功能、SeaTunnel Zeta …...

工厂方法模式的概述和使用

目录 一、工厂方法模式概述1. 定义2. 使用动机 二、工厂方法模式结构1. 模式结构2. 时序图 三、工厂方法模式的使用实例四、工厂方法模式的优缺点五、工厂方法模式在Java中应用 原文链接 一、工厂方法模式概述 1. 定义 工厂方法模式(Factory Method Pattern)又称为工厂模式&…...

HP惠普星15青春版/惠普小欧笔记本电脑15s-du1008tx原装出厂Win11系统

适用型号:15s-du1007tx、15s-du1008tx、15s-du1009tx、15s-du1010tx、15s-du1011tx、15s-du1012tx、15s-du1013tx 自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 所需要工具:32G或以上的U盘 文件格式:ISO 文件大…...

聊聊检索增强,LangChain一把梭能行吗?

背景 ChatGPT诞生之初,大家仿佛从中看到了未来:可以拿着大语言模型(LLM)这把锤子,锤遍业务上的钉子。其中最被看好的场景,莫过于搜索,不仅是微软、谷歌、百度这样的大公司将LLM用到自己的搜索业…...

【力扣】343. 整数拆分 <动态规划、数学>

【力扣】343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。返回可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出:…...

数据结构--5.1图的存储结构(十字链表、邻接多重表、边集数组)

目录 一、十字链表(Orthogonal List) 二、邻接多重表 三、边集数组 四、深度优先遍历 一、十字链表(Orthogonal List) 重新定义顶点表结点结构: datafirstInfirstOut 重新定义边表结构结点: tailV…...

mac上 Kratos 配置 protoc

前言 protoc 是 protobuf 文件(.proto)的编译器,可以借助这个工具把 .proto 文件转译成各种编程语言对应的源码,包含数据类型定义、调用接口等。 protoc 在设计上把 protobuf 和不同的语言解耦了,底层用 c 来实现 protobuf 结构的存储&#x…...

【c++5道练习题】①

目录 一、有限制的累加 二、计算日期到天数转换 三、仅仅反转字母 四、 字符串的第一个唯一字符 五、字符串最后一个单词的长度 一、有限制的累加 题述: 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句…...

最佳实践:TiDB 业务读变慢分析处理

作者:李文杰 网易游戏计费 TiDB 负责人 在使用或运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律,通过经验的积累可以快速的定位和优化&#xff…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

深度解析云存储:概念、架构与应用实践

在数据爆炸式增长的时代,传统本地存储因容量限制、管理复杂等问题,已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性,成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理,云存储正重塑数据存储与…...

docker 部署redis集群 配置

docker的网络模式 网桥模式每次重启容器都有可能导致容器ip地址变化,需要固定ip的自己自定义网络,这里介绍的是默认网络模式 docker创建容器 docker run --name redis6379 -p 6379:6379 -p 16379:16379 -v /etc/redis/redis6379:/etc/redis -d --r…...