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

机器学习-GBDT算法

目录

一. GBDT 核心思想

二. GBDT 工作原理

​**(1) 损失函数优化**

​**(2) 负梯度拟合**

​**(3) 模型更新**

三. GBDT 的关键步骤

四. GBDT 的核心优势

​**(1) 高精度与鲁棒性**

​**(2) 处理缺失值**

​**(3) 特征重要性分析**

​五. GBDT 的缺点

​**(1) 训练效率较低**

​**(2) 过拟合风险**

​**(3) 缺乏并行性**

六、应用场景

七、与其他算法对比

八、总结


梯度提升迭代决策树(Gradient Boosting Decision Tree, GBDT)​​ 是一种基于梯度提升(Boosting)​的集成学习算法,通过迭代地训练决策树来最小化损失函数。它结合了决策树的预测能力和梯度提升的优化思想,在分类、回归和排序任务中表现出色(如 XGBoost、LightGBM 和 Scikit-learn 的 GradientBoostingClassifier 均基于此框架)

一. GBDT 核心思想

  • 目标:通过逐步优化损失函数,将多个弱学习器(决策树)组合成一个强学习器。
  • GBDT 以梯度下降为优化手段,每一轮训练生成一个新的决策树,专门拟合当前模型的残差(即真实值与预测值的差异),通过累加所有树的预测结果形成最终输出。
  • 核心步骤
    1. 初始化模型为一个常数值(如样本均值)。
    2. 计算当前模型的损失函数,并对损失函数关于每个样本的负梯度进行拟合(生成新的决策树)。
    3. 将新生成的决策树加入模型中,更新模型输出。
    4. 重复上述步骤,直到满足停止条件(如达到预设树的数量或损失不再显著下降)

 

二. GBDT 工作原理

​**(1) 损失函数优化**
  • 每轮迭代的目标是通过最小化损失函数来改进模型。对于分类任务,常用交叉熵损失;回归任务则用均方误差(MSE)。
  • 关键公式其中 f(xi​) 是当前模型的预测值,L 是损失函数。

 

​**(2) 负梯度拟合**
  • 在第 t 轮迭代中,计算当前模型的损失函数的负梯度​(近似残差):
  • 新的决策树 Tt​(x) 用于拟合这些负梯度 gt​(xi​),使得损失函数尽可能减小。
​**(3) 模型更新**
  • 将新树的结果按学习率 η 加入模型:

 

三. GBDT 的关键步骤

  1. 初始化模型
  2. 迭代训练决策树
    • 步骤1:计算当前模型的损失函数 L。
    • 步骤2:对每个样本计算负梯度 gt​(xi​)。
    • 步骤3:生成决策树 Tt​(x),拟合 gt​(xi​)。
    • 步骤4:通过损失函数验证新树的有效性,调整学习率 η。
  3. 组合所有树

四. GBDT 的核心优势

​**(1) 高精度与鲁棒性**
  • 通过梯度优化逐步逼近最优解,对噪声和异常值具有较强鲁棒性(相比 AdaBoost)。
  • 支持自定义损失函数,适应复杂任务(如逻辑回归中的交叉熵)。
​**(2) 处理缺失值**
  • 大多数实现(如 XGBoost、LightGBM)内置缺失值处理机制,无需额外预处理。
​**(3) 特征重要性分析**
  • 每棵树的贡献可量化,输出特征重要性用于特征筛选。

​五. GBDT 的缺点

​**(1) 训练效率较低**
  • 顺序迭代训练决策树,计算复杂度高于随机森林。
  • 大规模数据集需依赖优化库(如 XGBoost 的近似算法)。
​**(2) 过拟合风险**
  • 树的数量过多或单棵树过深可能导致过拟合。
  • 需合理设置 n_estimators 和 max_depth 等参数。
​**(3) 缺乏并行性**
  • 传统 GBDT 实现无法并行训练,但 XGBoost/LightGBM 通过特征分块等技术部分支持并行。

六、应用场景

  1. 结构化数据预测:如房价预测、销量预估。
  2. 分类任务:如信用评分、客户流失预测。
  3. 排序与推荐:如搜索结果排序、个性化推荐系统。
  4. 特征重要性分析:通过树的分裂特征评估变量重要性。

七、与其他算法对比

  1. 与 AdaBoost 的区别

    • GBDT 通过梯度下降优化残差,AdaBoost 通过调整样本权重。
    • GBDT 更适合回归任务,AdaBoost 更适合分类任务。
  2. 与随机森林的区别

    • 随机森林基于 Bagging(并行训练),GBDT 基于 Boosting(串行优化)。
    • 随机森林对噪声更鲁棒,GBDT 在复杂数据上精度更高

 

八、总结

GBDT 通过梯度优化残差的机制,在结构化数据领域表现优异,是竞赛和工业界常用的算法之一。尽管存在训练速度和调参的挑战,但其改进版本(如 XGBoost、LightGBM)通过工程优化显著提升了效率,使其在实际应用中更具竞争力。

相关文章:

机器学习-GBDT算法

目录 一. GBDT 核心思想 二. GBDT 工作原理 ​**(1) 损失函数优化** ​**(2) 负梯度拟合** ​**(3) 模型更新** 三. GBDT 的关键步骤 四. GBDT 的核心优势 ​**(1) 高精度与鲁棒性** ​**(2) 处理缺失值** ​**(3) 特征重要性分析** ​五. GBDT 的缺点 ​**(1) 训练…...

redis基础结构

title: redis基础结构 date: 2025-03-04 08:39:12 tags: redis categories: redis笔记 Redis入门 (NoSQL, Not Only SQL) 非关系型数据库 关系型数据库:以 表格 的形式存在,以 行和列 的形式存取数据,一系列的行和列被…...

【keil】一种将STM32的armcc例程转换为armclang的方式

【keil】一种将所有armcc例程转换为armclang的方式 改的原因第一步下载最新arm6第二步编译成功 第三步去除一些warning编译成功 我这边用armclang去编译的话,主要是freertos中的portmacro.h和port.c会报错 改的原因 我真的服了,现在大部分的单片机例程都…...

计算机视觉算法实战——表面缺陷检测(表面缺陷检测)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 引言 表面缺陷检测是计算机视觉领域中的一个重要研究方向,旨在通过图像处理和机器学习技术自动检测产品表面的缺陷&…...

window下的docker内使用gpu

Windows 上使用 Docker GPU需要进行一系列的配置和步骤。这是因为 Docker 在 Windows 上的运行环境与 Linux 有所不同,需要借助 WSL 2(Windows Subsystem for Linux 2)和 NVIDIA Container Toolkit 来实现 GPU 的支持。以下是详细的流程: 一、环境准备 1.系统要求 Window…...

Modbus协议(TCP)

从今开始,会详细且陆续整理各类的通信协议,以便在需要且自身忘记的情况下,迅速复习。如有错误之处,还请批评指正。 一、Modbus协议的简述 Modbus协议作为应用层协议,基于主从设备模型,主设备负责请求消息&…...

虚拟系统配置实验报告

一、实验拓扑图 二、实验配置 要求一: 虚拟系统: 设置管理: 进行信息配置 R1配置 虚拟系统配置 a: b: c: 测试 a–>b: 检测...

Agentic系统:负载均衡与Redis缓存优化

摘要 本文在前文Agentic系统的基础上,新增负载均衡(动态调整线程数以避免API限流)和缓存机制(使用Redis存储搜索结果,减少API调用)。通过这些优化,系统在高并发场景下更加稳定高效。代码完整可…...

28-文本左右对齐

给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可…...

建筑兔零基础自学python记录39|实战词云可视化项目——章节分布10(上)

这次我们来制作《红楼梦》各章节的分布情况: 源代码: import pandas as pd import numpy as np import matplotlib.pyplot as pltdf_hlm pd.read_csv("hlm.txt", names["hlm_texts"]).dropna()df_hlm df_hlm[~df_hlm.hlm_texts.s…...

Impacket工具中的横向渗透利器及其使用场景对比详解

在渗透测试中,横向移动(Lateral Movement)是指攻击者在获得一个系统的控制权限后,通过网络进一步渗透到其他系统的过程。Impacket 是一款强大的渗透测试工具集,提供了多种实现横向渗透的脚本,常见的工具包括…...

基于java,SpringBoot和Vue的医院药房药品管理系统设计

摘要 随着医疗行业信息化的快速发展,高效、精准的医院药房药品管理对于提升医疗服务质量和医院运营效率至关重要。本文基于 Java 语言,采用 SpringBoot 框架和 Vue 框架进行医院药房药品管理系统的设计与研究。该系统以 SpringBoot 作为后端开发框架&am…...

MQ保证消息的顺序性

在消息队列(MQ)中保证消息的顺序性是一个常见的需求,尤其是在需要严格按顺序处理业务逻辑的场景(例如:订单创建 → 支付 → 发货)。 一、消息顺序性被破坏的原因 生产者异步/并行发送:消息可能…...

cmake、CMakeLists.txt、make、ninja

文章目录 一、概念0.cmake官网1.什么是cmake2.为什么使用cmake3.CMakeLists.txt 二、CMakeLists.txt语法:如何编写CMakeLists.txt,语法详解(0)语法基本原则(1)project关键字(2)set关键字(3)message关键字(4)add_executable关键字(5)add_subdirectory关键…...

数据结构与算法 计算机组成 八股

文章目录 数据结构与算法数组与链表的区别堆的操作红黑树定义及其原理 计算机组成int和uint的表示原码反码补码移码的定义?为什么用补码? 数据结构与算法 数组与链表的区别 堆的操作 红黑树定义及其原理 计算机组成 int和uint的表示 原码反码补码移…...

RoboBrain:从抽象到具体的机器人操作统一大脑模型

25年2月来自北大、北京智源、中科院自动化所等的论文“RoboBrain: A Unified Brain Model for Robotic Manipulation from Abstract to Concrete”。 目前的多模态大语言模型(MLLM) 缺少三项必备的机器人大脑能力:规划能力,将复杂…...

算法 之 前缀和 与 滑动窗口 与 背包问题 的差异(子数组之和为k问题)

文章目录 使用前缀和哈希表560.和为K的子数组525.连续数组2588.统计美丽子数组数目 子数组的定义是原来的数组当中连续的非空的序列,而我们的背包问题的选与不选的情况,对应的是这个非连续的情况,那么这种情况就要注意当然啦,对于线性的时间内…...

微电网协调控制器ACCU-100 分布式光伏 光储充一本化

安科瑞 华楠 18706163979 应用范围: 分布式光伏、微型风力发电、工商业储能、光储充一体化电站、微电网等领域。 主要功能: 数据采集:支持串口、以太网等多通道实时运行,满足各类风电与光伏逆变器、储能等 设备接入&#xff…...

IDEA入门及常用快捷键

IDEA是java常用的IDE。当run一个.java文件时,其实是经历了先编译为.class,再运行的过程。 在project文件夹中,out文件夹存储编译的.class文件,src文件夹存储.java代码文件。 设置自动导包 快捷键: 格式化快捷键&…...

electron打包结构了解

Electron 应用打包后的文件结构和内容取决于你使用的打包工具(如 electron-builder、electron-packager 等)以及目标操作系统(Windows、macOS、Linux)。以下是典型 Electron 应用打包后的文件结构和关键组成部分: 1. 基…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

【生成模型】视频生成论文调研

工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...