机器学习-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 以梯度下降为优化手段,每一轮训练生成一个新的决策树,专门拟合当前模型的残差(即真实值与预测值的差异),通过累加所有树的预测结果形成最终输出。
- 核心步骤:
- 初始化模型为一个常数值(如样本均值)。
- 计算当前模型的损失函数,并对损失函数关于每个样本的负梯度进行拟合(生成新的决策树)。
- 将新生成的决策树加入模型中,更新模型输出。
- 重复上述步骤,直到满足停止条件(如达到预设树的数量或损失不再显著下降)
二. GBDT 工作原理
**(1) 损失函数优化**
- 每轮迭代的目标是通过最小化损失函数来改进模型。对于分类任务,常用交叉熵损失;回归任务则用均方误差(MSE)。
- 关键公式:
其中 f(xi) 是当前模型的预测值,L 是损失函数。
**(2) 负梯度拟合**
- 在第 t 轮迭代中,计算当前模型的损失函数的负梯度(近似残差):

- 新的决策树 Tt(x) 用于拟合这些负梯度 gt(xi),使得损失函数尽可能减小。
**(3) 模型更新**
- 将新树的结果按学习率 η 加入模型:

三. GBDT 的关键步骤
- 初始化模型:

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

四. GBDT 的核心优势
**(1) 高精度与鲁棒性**
- 通过梯度优化逐步逼近最优解,对噪声和异常值具有较强鲁棒性(相比 AdaBoost)。
- 支持自定义损失函数,适应复杂任务(如逻辑回归中的交叉熵)。
**(2) 处理缺失值**
- 大多数实现(如 XGBoost、LightGBM)内置缺失值处理机制,无需额外预处理。
**(3) 特征重要性分析**
- 每棵树的贡献可量化,输出特征重要性用于特征筛选。
五. GBDT 的缺点
**(1) 训练效率较低**
- 顺序迭代训练决策树,计算复杂度高于随机森林。
- 大规模数据集需依赖优化库(如 XGBoost 的近似算法)。
**(2) 过拟合风险**
- 树的数量过多或单棵树过深可能导致过拟合。
- 需合理设置
n_estimators和max_depth等参数。
**(3) 缺乏并行性**
- 传统 GBDT 实现无法并行训练,但 XGBoost/LightGBM 通过特征分块等技术部分支持并行。
六、应用场景
- 结构化数据预测:如房价预测、销量预估。
- 分类任务:如信用评分、客户流失预测。
- 排序与推荐:如搜索结果排序、个性化推荐系统。
- 特征重要性分析:通过树的分裂特征评估变量重要性。
七、与其他算法对比
-
与 AdaBoost 的区别
- GBDT 通过梯度下降优化残差,AdaBoost 通过调整样本权重。
- GBDT 更适合回归任务,AdaBoost 更适合分类任务。
-
与随机森林的区别
- 随机森林基于 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 应用范围: 分布式光伏、微型风力发电、工商业储能、光储充一体化电站、微电网等领域。 主要功能: 数据采集:支持串口、以太网等多通道实时运行,满足各类风电与光伏逆变器、储能等 设备接入ÿ…...
IDEA入门及常用快捷键
IDEA是java常用的IDE。当run一个.java文件时,其实是经历了先编译为.class,再运行的过程。 在project文件夹中,out文件夹存储编译的.class文件,src文件夹存储.java代码文件。 设置自动导包 快捷键: 格式化快捷键&…...
electron打包结构了解
Electron 应用打包后的文件结构和内容取决于你使用的打包工具(如 electron-builder、electron-packager 等)以及目标操作系统(Windows、macOS、Linux)。以下是典型 Electron 应用打包后的文件结构和关键组成部分: 1. 基…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
