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

模式识别与机器学习(十):梯度提升树

1.原理

提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:
f M ( x ) = ∑ m = 1 M T ( x ; θ m ) f_M(x)=\sum_{m=1}^MT(x;\theta_m) fM(x)=m=1MT(x;θm)
其中, T ( x ; θ m ) T(x;\theta_{m}) T(x;θm)表示决策树, θ m \theta_{m} θm为决策树参数,M为树的个数。
而梯度提升树的具体步骤如下:

1.初始化 f 0 ( x ) = 0 f_{0}(x)=0 f0(x)=0,并选取损失函数 L ( y , f ( x ) ) \mathrm{~L(y,f(x))}  L(y,f(x))
2.对于 m = 0 , 1 , ⋯ , M \mathrm{m}=0,1,\cdots,\mathrm{M} m=0,1,,M

(1).计算负梯度:
− g m ( x i ) = − ∂ ( L ( y , f ( x i ) ) ) ∂ f ( x i ) f ( x ) = f m − 1 ( x ) -\mathrm{g_m(x_i)=-\frac{\partial\left(L\bigl(y,f(x_i)\bigr)\right)}{\partial f(x_i)}_{f(x)=f_{m-1}(x)}} gm(xi)=f(xi)(L(y,f(xi)))f(x)=fm1(x)

(2).以负梯度 − g m ( x i ) -\mathrm{g_{m}(x_{i})} gm(xi)为预测值,训练一个回归树 T ( x ; θ m ) T(x;\theta_{m}) T(x;θm)

(3).更新 f m ( x ) = f m − 1 ( x ) + ρ T ( x ; θ m ) f_{m}(x)=f_{m-1}(x)+\rho T(x;\theta_{m}) fm(x)=fm1(x)+ρT(x;θm)

3.经过M次迭代后取得的模型即为
f M ( x ) = ∑ m = 1 M ρ T ( x ; θ m ) f_M(x)=\sum_{m=1}^M\rho T(x;\theta_m) fM(x)=m=1MρT(x;θm)
这里的 ρ \rho ρ为学习率,可用来防止过拟合。

此次实验用梯度提升树来实现多分类任务,在这种情况下输出模型经过softmax函数转化为每个类别的置信概率,从而实现分类目标。

2.代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建梯度提升树分类器
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=42)# 训练模型
clf.fit(X_train, y_train)# 预测测试集
y_pred = clf.predict(X_test)# 打印预测结果
print(y_pred)

我们使用了鸢尾花数据集,这是一个常用的多类别分类数据集。我们首先加载数据,然后划分为训练集和测试集。然后,我们创建一个梯度提升树分类器,并使用训练集对其进行训练。最后,我们使用训练好的模型对测试集进行预测,并打印出预测结果。

GradientBoostingClassifier的参数n_estimators表示弱学习器的最大数量,learning_rate表示学习率,max_depth表示每个弱学习器(决策树)的最大深度,这些参数都可以根据需要进行调整。

相关文章:

模式识别与机器学习(十):梯度提升树

1.原理 提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决…...

《剑指offer》Java版--12.矩阵中的路径(DFS+剪枝)

剑指offer原题:矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再…...

AI智能体的介绍

最近几个月 随着大语言模型的持续火爆 利用大模型来构建AI智能体的研究呢 也陆续进入了人们的视野 AI智能体这个概念呢 也逐渐的流行开来 先是斯坦福大学谷歌的研究者们 成功的构建了一个虚拟小镇 小镇上的居民呢不再是人 而是25个AI的智能体 他们的行为呢 比人类角…...

Java设计模式-单例模式(Singleton)

Java中实现单例模式有几种不同的方式,每种方式都有其特点和适用场景。下面是两种常用的实现方式:懒汉式和饿汉式。 懒汉式(线程安全) 懒汉式单例是指在第一次被引用时才会创建实例。为了确保线程安全,可以使用同步方法或同步块。 public class SingletonLazy {private sta…...

若依vue如何展示一个HTML页面(或者展示Markdown文档)

一. 前言 ⚠ 本文是展示Markdown的方法,不能直接前端编辑Markdown文档. 二. 准备部分 用Typora编辑器打开需要导出html页面,我这里使用Typora来导出 1. 先将md文件导出成html 2. 将导出好的文件放在若依vue的pubilc下(文件可以是中文) 三. 代码部分 1.使用v-html来展示HT…...

优化for循环(js的问题)

性能优化 var array [];for (let index 0; index < array.length; index) {// do something }// 优化后 for (let index 0, len array.length; index < len; index) {// do something } 算法优化 // 求和&#xff1a;1 2 3 4 ... 100 var sum 0; for (let i …...

如何更好的去理解源码

前言 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前&#xff0c;先来简单说一下为什么要去阅读源码&#xff0c;大致可分为以下几点原因&#xff1a; 最直接的原因&#xff0c;就是面试需要&#xff0c;面试喜欢问源码&#xff0c;读完源码才可以…...

c# opencv 获取多边形中心点

在C#中使用OpenCV获取多边形的中心点&#xff0c;可以按照以下步骤进行&#xff1a; 首先&#xff0c;你需要找到图像中的轮廓。这可以通过FindContours方法实现&#xff1a; using OpenCvSharp;Mat src new Mat("your_image_path", ImreadModes.Grayscale); Mat …...

Redis数据一致解决方案

文章目录 前言技术积累查询缓存业务流程更新缓存业务流程 更新缓存问题解决方案写在最后 前言 当前的应用服务很多都有着高并发的业务场景&#xff0c;对于高并发的解决方案一般会用到缓存来降低数据库压力&#xff0c;并且还能够提高系统性能减少请求耗时&#xff0c;比如我们…...

安捷伦DSOX2024A示波器

参考波形 示波器的非易失参考波形存储器可以存储两个波形。比较这些参考波形与实时波形&#xff0c;并对已存储数据进行后分析和测量。您也可将波形数据存储到移动USB 存储器设备。这些数据还能调用到示波器的两个参考存储器的其中一个&#xff0c;进行全面的波形测量和分析。为…...

Leetcode算法系列| 4. 寻找两个正序数组的中位数

目录 1.题目2.题解C# 解法一&#xff1a;合并List根据长度找中位数C# 解法二&#xff1a;归并排序后根据长度找中位数C# 解法三&#xff1a;方法二的优化&#xff0c;不真实添加到listC# 解法四&#xff1a;第k小数C# 解法五&#xff1a;从中位数的概念定义入手 1.题目 给定两个…...

Java整合APNS推送消息-IOS-APP(基于.p12推送证书)

推送整体流程 1.在开发者中心申请对应的证书&#xff08;我用的是.p12文件&#xff09; 2.苹果手机用户注册到APNS&#xff0c;APNS将注册的token返回给APP&#xff08;服务端接收使用&#xff09;。 3.后台服务连接APNS&#xff0c;获取连接对象 4.后台服务构建消息载体 5.后台…...

C语言strcpy函数用法

C语言strcpy函数用法 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入了解C语言中的strcpy函数&#xff0c;这是一个在字符串处理中非…...

汽车服务品牌网站建设的作用是什么

汽车服务涵盖多个层面&#xff0c;在保修维护这一块更是精准到了车内车外&#xff0c;无论是品牌商还是市场中各维修部&#xff0c;都能给到车辆很好的维修养护服务。如今车辆的人均拥有量已经非常高&#xff0c;也因此市场中围绕汽车相关的从业者也比较多。 首先就是拓客引流…...

【iOS】UICollectionView

文章目录 前言一、实现简单九宫格布局二、UICollectionView中的常用方法和属性1.UICollectionViewFlowLayout相关属性2.UICollectionView相关属性 三、协议和代理方法&#xff1a;四、九宫格式的布局进行升级五、实现瀑布流布局实现思路实现原理代码调用顺序实现步骤实现效果 总…...

Linux poll 和 select 机制

poll select 介绍 使用非阻塞 I/O 的应用程序常常使用 poll, select, 和 epoll 系统调用. poll, select 和 epoll 本质上有相同的功能: 每个允许一个进程来决定它是否可读或者写一个 或多个文件而不阻塞. 这些调用也可阻塞进程直到任何一个给定集合的文件描述符可用来 读或写.…...

【JVM基础】 JVM 如何加载一个类以及类加载机制

文章目录 1、什么时候一个类会被加载&#xff1f;1、包含 main 方法的主类2、非 包含 main 方法的主类&#xff0c;什么时候去加载&#xff1f; 3、类加载器如何加载一个类&#xff1f;1、验证阶段&#xff1a;2、准备阶段&#xff1a;3、解析阶段&#xff1a;4、初始化&#x…...

Android Studio使用Genymotion

1. Genymotion介绍 GenyMotion速度之快令人发指&#xff0c;模拟效果堪比真机调试&#xff0c;支持绝大部分的模拟器功能&#xff0c;甚至包括语音&#xff0c;Google Now&#xff0c;支持eclipse, android studio。非常适合用来开发和演示效果。 2. Genymotion下载 Genymotio…...

Mysql sql_mode参数配置

今天在使用数据库查询时使用了Group语句&#xff0c;遇到问题&#xff1a; SELECT t1.UnderlyingInstrumentID, t2.* FROM t_OptionInstrument t1 LEFT JOIN t_Instrument t2 ON t2.InstrumentID t1.UnderlyingInstrumentID GROUP BY t1.UnderlyingInstrumentID > 1055 - …...

SpringIOC之AbstractMessageSource

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…...

Phi-4-mini-reasoning企业应用探索:智能客服知识推理模块集成方案

Phi-4-mini-reasoning企业应用探索&#xff1a;智能客服知识推理模块集成方案 1. 轻量级推理模型的价值 在当今企业智能化转型浪潮中&#xff0c;轻量级推理模型正成为技术落地的关键。Phi-4-mini-reasoning作为一款专注于高质量推理的开源模型&#xff0c;凭借其128K令牌的超…...

别再只加Mask了!手把手教你用FlashAttention实现真正的Sliding Window Attention(附代码)

突破传统误区&#xff1a;用FlashAttention实现高效滑动窗口注意力的实战指南 在Transformer模型优化领域&#xff0c;许多开发者对滑动窗口注意力(Sliding Window Attention, SWA)存在一个普遍误解——认为只需在注意力矩阵上添加滑动窗口掩码就能实现线性复杂度。这种错误认…...

springboot+vue基于web的演唱会音乐会购票管理系统设计系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块分析技术架构设计核心业务流程安全防护措施项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块分析 用户模块 注册登…...

usearch的内存泄漏自动化测试:在CI中集成泄漏检测

usearch的内存泄漏自动化测试&#xff1a;在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & &#x1f51c; Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...

FPGA网络加速入门:拆解Xilinx 7系列GTP与1G/2.5G Ethernet PCS/PMA IP核,搞懂SGMII接口那些事

FPGA网络加速实战&#xff1a;从Xilinx GTP架构到SGMII接口的深度解析 在FPGA高速通信领域&#xff0c;以太网接口设计一直是工程师面临的核心挑战之一。当我们需要在Xilinx 7系列FPGA上实现1G/2.5G以太网功能时&#xff0c;GTP收发器与PCS/PMA IP核的配置往往成为项目成败的关…...

ROS2 Humble下,如何用MoveIt! Action接口让机械臂“听话”?一个抓取demo的完整复盘

ROS2 Humble下机械臂精准控制实战&#xff1a;从MoveIt! Action接口到完整抓取任务 在工业自动化和服务机器人领域&#xff0c;机械臂的精准运动控制一直是核心挑战。ROS2 Humble版本中的MoveIt!框架为这一挑战提供了优雅的解决方案&#xff0c;而理解其Action接口的运作机制则…...

微信小程序集成AI能力:调用LFM2.5-1.2B-Thinking-GGUF实现智能聊天与内容生成

微信小程序集成AI能力&#xff1a;调用LFM2.5-1.2B-Thinking-GGUF实现智能聊天与内容生成 1. 为什么要在小程序里集成AI 微信小程序作为轻量级应用平台&#xff0c;用户使用门槛低、传播效率高。但传统小程序功能相对单一&#xff0c;缺乏智能化交互体验。通过集成LFM2.5-1.2…...

intv_ai_mk11部署教程:supervisorctl status/restart/log三命令掌握服务运维全链路

intv_ai_mk11部署教程&#xff1a;supervisorctl status/restart/log三命令掌握服务运维全链路 1. 服务概述与核心功能 intv_ai_mk11是一款基于Llama架构的AI对话机器人&#xff08;7B参数&#xff09;&#xff0c;部署在GPU服务器上&#xff0c;能够提供智能对话服务。这个A…...

相场法模拟枝晶生长的karma模型研究:基于Matlab的实现

相场法模拟枝晶生长&#xff0c;karma模型&#xff0c;matlab咱们今天来玩点好玩的——用Matlab搞个金属凝固过程的枝晶生长模拟。相场法这玩意儿真是材料模拟界的万金油&#xff0c;特别是Karma模型&#xff0c;处理枝晶分岔那叫一个丝滑。先整点基础配置&#xff1a; % 基础参…...

Open UI5 源代码解析之740:SearchManager.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\SearchManager.js SearchManager.js 深度解析:在 openUI5 中的职责、机制与落地价值 文件定位与总体判断 这个文件定义了一个名为 sap.f.SearchManager 的类。它位于 sap.f 库路径下,却明…...