机器学习——boosting之GBDT
现在要开始重点关注名字了,名字透漏了很多信息!名字暗藏线索!
GBDT,Gradient Boosting Decision Tree: 梯度提升决策树
果然信息很丰富
梯度:意味着计算有迭代递进关系,但还不明确是怎么迭代递进的
提升:意味着前向分布式+加法模型,并且分类器之间是有相关提升的
决策树:CART决策树、C4.5、忘记名字了…
em…还是要再深挖深挖,小小的boosting,挖呀挖呀挖呀挖。。。
经过推导。。。发现,我的GBDT回归,实际就是上一篇提升树的二叉回归树…
看来可以省点儿功夫,不写代码,但可以稍微推导一下
首先,明确回归问题采用平方损失函数: L o s s ( y , f ( x ) ) = ( y − f ( x ) ) 2 Loss(y,f(x)) =(y-f(x))^2 Loss(y,f(x))=(y−f(x))2
其中,f(x) 是强分类器,且当前强分类器 f m = f m − 1 + T m ( x , θ m ) f_m = f_{m-1}+T_m(x,θ_m) fm=fm−1+Tm(x,θm)
问题来了,我们现在要求Loss最小,原本是可以直接使Loss对x求导,进而求出θ,得到强分类器的
但书上说了,有时候Loss对x求导,是无法实现的,说实话,我不知道为什么
不过,不妨碍我对GBDT进行推导
首先,梯度,是想要Loss成梯度逐步下降,那就采用让Loss在 f ( x ) = f m − 1 ( x ) f(x)=f_{m-1}(x) f(x)=fm−1(x)处进行一阶泰勒展开
则有 L o s s ( y , f ( x ) ) = L o s s ( y , f m − 1 ( x ) ) + ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f ( x ) − f m − 1 ( x ) ] Loss(y,f(x)) = Loss(y,f_{m-1}(x))+\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f(x)-f_{m-1}(x)] Loss(y,f(x))=Loss(y,fm−1(x))+əfm−1(x)əL(y,fm−1(x))∗[f(x)−fm−1(x)]
令 f ( x ) = f m ( x ) f(x) = f_m(x) f(x)=fm(x),则有
L ( y , f m ( x ) ) = L ( y , f m − 1 ( x ) ) + ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f m ( x ) − f m − 1 ( x ) ] L(y,f_m(x)) = L(y,f_{m-1}(x))+\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f_m(x)-f_{m-1}(x)] L(y,fm(x))=L(y,fm−1(x))+əfm−1(x)əL(y,fm−1(x))∗[fm(x)−fm−1(x)]
Δ L o s s = L ( y , f m ( x ) ) − L ( y , f m − 1 ( x ) ) = ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ [ f m ( x ) − f m − 1 ( x ) ] ΔLoss = L(y,f_m(x)) - L(y,f_{m-1}(x))=\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*[f_m(x)-f_{m-1}(x)] ΔLoss=L(y,fm(x))−L(y,fm−1(x))=əfm−1(x)əL(y,fm−1(x))∗[fm(x)−fm−1(x)]
其中 [ f m ( x ) − f m − 1 ( x ) ] = T ( x , θ m ) [f_m(x)-f_{m-1}(x)] = T(x,θ_m) [fm(x)−fm−1(x)]=T(x,θm)
要使下一次迭代时,Loss降低,则需要ΔLoss<0,那么对应的 ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ T ( x , θ m ) \frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*T(x,θ_m) əfm−1(x)əL(y,fm−1(x))∗T(x,θm)<0
那么,当 T ( x , θ m ) = − ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) T(x,θ_m)=-\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}} T(x,θm)=−əfm−1(x)əL(y,fm−1(x))时,就可以保证 ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) ∗ T ( x , θ m ) \frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}*T(x,θ_m) əfm−1(x)əL(y,fm−1(x))∗T(x,θm)<0
因此, T ( x , θ m ) = − ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) = ə ( y − f m − 1 ( x ) ) 2 ə f m − 1 ( x ) T(x,θ_m)=-\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}=\frac{ə_{(y-f_{m-1}(x))^2}}{ə_{f_{m-1}(x)}} T(x,θm)=−əfm−1(x)əL(y,fm−1(x))=əfm−1(x)ə(y−fm−1(x))2
为了求解简洁美观,可以 令 L o s s 为 1 2 ( y − f ( x ) ) 2 令Loss为\frac{1}{2}(y-f(x))^2 令Loss为21(y−f(x))2
这样 T ( x , θ m ) = − ə L ( y , f m − 1 ( x ) ) ə f m − 1 ( x ) = 1 2 ə ( y − f m − 1 ( x ) ) 2 ə f m − 1 ( x ) = y − f m − 1 ( x ) T(x,θ_m)=-\frac{ə_{L(y,f_{m-1}(x))}}{ə_{f_{m-1}(x)}}=\frac{\frac{1}{2}ə_{(y-f_{m-1}(x))^2}}{ə_{f_{m-1}(x)}}=y-f_{m-1}(x) T(x,θm)=−əfm−1(x)əL(y,fm−1(x))=əfm−1(x)21ə(y−fm−1(x))2=y−fm−1(x)
哦!这不就是残差嘛 r = y − f m − 1 ( x ) r = y-f_{m-1}(x) r=y−fm−1(x) ,相当于每个新的弱分类器(准确来说,应该是基函数)都应该尽可能地去拟合残差
所以啊!!!!实际上一轮的提升树,本质上就是GBDT
不管,就先这么确定,以后打脸再说…好困
相关文章:
机器学习——boosting之GBDT
现在要开始重点关注名字了,名字透漏了很多信息!名字暗藏线索! GBDT,Gradient Boosting Decision Tree: 梯度提升决策树 果然信息很丰富 梯度:意味着计算有迭代递进关系,但还不明确是怎么迭代递进的 提升&…...
如何选择报修管理系统?报修工单管理系统有哪些功能和优势?
报修管理系统是一种能够帮助企业快速反应设备故障和异常情况,并将问题及时通知到相关人员,并对问题进行统计和分析的系统。它能够有效提高企业的工作效率,并减少人员成本的支出。那么,报修工单管理系统有哪些功能和优势呢?下面以“…...
Matlab图像处理-
有些时候,直接利用图像的灰度直方图选择阈值不是非常直观,这时,可以利用图像三个通道的直方图来进行图像分割,操作步骤如上文所示,下图为原始图片。 下图为三通道直方图。 下图将三个通道的直方图会绘制到一个图表上&a…...
数据接口工程对接BI可视化大屏(二)创建BI空间
第2章 创建BI空间 2.1 SugarBI介绍 网站地址:https://cloud.baidu.com/product/sugar.html SugarBI是百度推出的自助BI报表分析和制作可视化数据大屏的强大工具。 基于百度Echarts提供丰富的图表组件,开箱即用、零代码操作、无需SQL,5分钟即可完成数…...
Struts.xml 配置文件说明
<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--…...
阿里巴巴API接口解析,实现获得商品详情
要解析阿里巴巴API接口并实现获取商品详情,你需要按照以下步骤进行操作: 了解阿里巴巴开放平台:访问阿里巴巴开放平台,并了解相关的API文档、开发者指南和规定。注册开发者账号:在阿里巴巴开放平台上注册一个开发者账…...
9.(Python数模)(分类模型一)K-means聚类
Python实现K-means聚类 K-means原理 K-means均值聚类算法作为最经典也是最基础的无标签分类学习算法。其实质就是根据两个数据点的距离去判断他们是否属于一类,对于一群点,就是类似用几个圆去框定这些点(簇),然后圆心…...
MinIO集群模式信息泄露漏洞(CVE-2023-28432)
前言:MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务。虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据。该漏洞会在前台泄露用户的账户和密码。 0x00 环境配置 …...
【从零单排Golang】第十五话:用sync.Once实现懒加载的用法和坑点
在使用Golang做后端开发的工程中,我们通常需要声明一些一些配置类或服务单例等在业务逻辑层面较为底层的实例。为了节省内存或是冷启动开销,我们通常采用lazy-load懒加载的方式去初始化这些实例。初始化单例这个行为是一个非常经典的并发处理的案例&…...
常见注意力机制
注意力机制 (具有自适应性) 18年提出的一种新的 卷积注意力模块 ;对前馈卷积神经网络 是一个 简单而有效的 注意力模块 ; 因为它的 轻量级和通用性 ,可以 无缝集成到任何CNN网络 当中, 对我们来讲&…...
解决报错之org.aspectj.lang不存在
一、IDEA在使用时,可能会遇到maven依赖包明明存在,但是build或者启动时,报找不存在。 解决办法:第一时间检查Setting->Maven-Runner红圈中的√有没有选上。 二、有时候,明明依赖包存在,但是Maven页签中…...
java之SpringBoot基础篇、前后端项目、MyBatisPlus、MySQL、vue、elementUi
文章目录 前言JC-1.快速上手SpringBootJC-1-1.SpringBoot入门程序制作(一)JC-1-2.SpringBoot入门程序制作(二)JC-1-3.SpringBoot入门程序制作(三)JC-1-4.SpringBoot入门程序制作(四)…...
golang中如何判断字符串是否包含另一字符串
golang中如何判断字符串是否包含另一字符串 在Go语言中,可以使用strings.Contains()函数来判断一个字符串是否包含另一个字符串。该函数接受两个参数:要搜索的字符串和要查找的子字符串,如果子字符串存在于要搜索的字符串中,则返…...
ONNX OpenVino TensorRT MediaPipe NCNN Diffusers ComfyUI
框架 和Java生成的中间文件可以在JVM上运行一样,AI技术在具体落地应用方面,和其他软件技术一样,也需要具体的部署和实施的。既然要做部署,那就会有不同平台设备上的各种不同的部署方法和相关的部署架构工具 onnx 在训练模型时可以…...
java中使用 Integer 和 int 的 含义、使用方法 及之间的区别
学习目标: 学习目标如下: 明确 Integer 和 int 的 含义、使用方法 及之间的区别 学习内容: 一、区别: 1.Integer是int的包装类,int则是java的一种基本的数据类型; 2.Integer变量必须实例化之后才能使用&a…...
点云从入门到精通技术详解100篇-点云的特征检测
目录 前言 点云配准的研究背景 多元时间序列的相似性分析研究背景及意义 国内外研究现状...
DOM破坏绕过XSSfilter例题
目录 一、什么是DOM破坏 二、例题1 编辑 三、多层关系 1.Collection集合方式 2.标签关系 四、例题2 一、什么是DOM破坏 DOM破坏(DOM Clobbering)指的是对网页上的DOM结构进行不当的修改,导致页面行为异常、性能问题、安全风险或其他不…...
代码随想录Day_56打卡
①、两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 事例: 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 "sea&…...
高忆管理:六连板捷荣技术或难扛“华为概念股”大旗
在本钱商场上名不见经传的捷荣技术(002855.SZ)正扛起“华为概念股”大旗。 9月6日,捷荣技术已拿下第六个连续涨停板,短短七个生意日,股价累积涨幅逾越90%。公司已连发两份股票生意异动公告。 是炒作,还是…...
「解析」YOLOv5 classify分类模板
学习深度学习有些时间了,相信很多小伙伴都已经接触 图像分类、目标检测甚至图像分割(语义分割)等算法了,相信大部分小伙伴都是从分类入门,接触各式各样的 Backbone算法开启自己的炼丹之路。 但是炼丹并非全是 Backbone,更多的是各…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
