《GBDT 算法的原理推导》 11-13初始化模型 公式解析
本文是将文章《GBDT 算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。
公式(11-13)是GBDT算法的第一步,它描述了如何初始化模型。公式如下:
f 0 ( x ) = arg min c ∑ i = 1 N L ( y i , c ) f_0(x) = \arg \min_c \sum_{i=1}^N L(y_i, c) f0(x)=argcmini=1∑NL(yi,c)
1. 公式(11-13)的意义
公式(11-13)用于初始化GBDT模型的预测值。在GBDT算法中,模型 f ( x ) f(x) f(x) 是通过多棵树的组合逐步构建的,而在开始构建任何一棵树之前,我们需要一个初始的预测值 f 0 ( x ) f_0(x) f0(x)。
2. 为什么需要初始化模型
在GBDT的训练过程中,每一轮都会通过一棵新树来“纠正”前面的模型。但是,在第一轮时,我们还没有任何树,所以需要一个初始值。这个初始值 f 0 ( x ) f_0(x) f0(x) 是模型预测的起点,后续的每棵树都基于它进行优化。
3. 如何确定初始值 f 0 ( x ) f_0(x) f0(x)
公式(11-13)告诉我们,初始预测值 f 0 ( x ) f_0(x) f0(x) 是通过最小化所有样本的损失函数来确定的。具体来说:
- 这里的 c c c 是一个常数,表示所有样本统一的初始预测值。
- 我们希望找到一个常数 c c c,使得对于所有样本 ( x i , y i ) (x_i, y_i) (xi,yi) 的损失函数之和 ∑ i = 1 N L ( y i , c ) \sum_{i=1}^N L(y_i, c) ∑i=1NL(yi,c) 最小。
4. 损失函数 L ( y i , c ) L(y_i, c) L(yi,c) 的作用
在GBDT中,损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x)) 用于衡量模型预测值 f ( x ) f(x) f(x) 与真实值 y y y 之间的差距。通过最小化损失函数,我们可以得到一个合理的初始预测值。
对于不同的任务,损失函数 L ( y , f ( x ) ) L(y, f(x)) L(y,f(x)) 会有所不同,因此这个初始值的具体求法也会不同。常见的损失函数包括:
- 平方损失(用于回归任务): L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y, f(x)) = (y - f(x))^2 L(y,f(x))=(y−f(x))2
- 对数损失(用于二分类任务): L ( y , f ( x ) ) = − [ y log f ( x ) + ( 1 − y ) log ( 1 − f ( x ) ) ] L(y, f(x)) = - [y \log f(x) + (1 - y) \log (1 - f(x))] L(y,f(x))=−[ylogf(x)+(1−y)log(1−f(x))]
5. 不同损失函数下的初始值求解
下面我们分别介绍在常见损失函数下,如何求解 f 0 ( x ) f_0(x) f0(x):
(1)平方损失(用于回归任务)
假设损失函数是平方损失,即:
L ( y i , c ) = ( y i − c ) 2 L(y_i, c) = (y_i - c)^2 L(yi,c)=(yi−c)2
此时,公式(11-13)变为:
f 0 ( x ) = arg min c ∑ i = 1 N ( y i − c ) 2 f_0(x) = \arg \min_c \sum_{i=1}^N (y_i - c)^2 f0(x)=argcmini=1∑N(yi−c)2
这是一个简单的最小二乘问题。通过求导并让导数等于零,我们可以得出最优的 c c c 值为所有 y i y_i yi 的均值:
f 0 ( x ) = 1 N ∑ i = 1 N y i f_0(x) = \frac{1}{N} \sum_{i=1}^N y_i f0(x)=N1i=1∑Nyi
因此,在平方损失的情况下,GBDT的初始预测值就是所有样本目标值的均值。
(2)对数损失(用于二分类任务)
假设我们要解决一个二分类问题,使用对数损失函数:
L ( y i , c ) = − [ y i log c + ( 1 − y i ) log ( 1 − c ) ] L(y_i, c) = - [y_i \log c + (1 - y_i) \log (1 - c)] L(yi,c)=−[yilogc+(1−yi)log(1−c)]
在这种情况下,公式(11-13)变为:
f 0 ( x ) = arg min c ∑ i = 1 N − [ y i log c + ( 1 − y i ) log ( 1 − c ) ] f_0(x) = \arg \min_c \sum_{i=1}^N - [y_i \log c + (1 - y_i) \log (1 - c)] f0(x)=argcmini=1∑N−[yilogc+(1−yi)log(1−c)]
通过对 c c c 求解,我们可以得出 f 0 ( x ) f_0(x) f0(x) 为正类样本的比例(即所有 y i y_i yi 的均值),或者等价地,初始预测值是正类概率的对数几率:
f 0 ( x ) = log ∑ i = 1 N y i N − ∑ i = 1 N y i f_0(x) = \log \frac{\sum_{i=1}^N y_i}{N - \sum_{i=1}^N y_i} f0(x)=logN−∑i=1Nyi∑i=1Nyi
6. 总结
公式(11-13)的作用是初始化GBDT模型,使得初始预测值 f 0 ( x ) f_0(x) f0(x) 能够尽量接近真实值,从而为后续的树提供一个合理的起点。通过最小化损失函数之和,我们可以根据不同的损失函数类型选择合适的初始值,例如:
- 回归任务中使用平方损失的均值。
- 分类任务中使用对数损失的对数几率。
这一初始化过程确保了GBDT的模型从一开始就具有一定的预测能力。
对数损失下的GBDT初始预测值f0(x) 的表达式 推导过程
相关文章:
《GBDT 算法的原理推导》 11-13初始化模型 公式解析
本文是将文章《GBDT 算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。 公式(11-13)是GBDT算法的第一步,它描述了如何初始化模型。公式如下: f 0 ( x ) arg min c ∑ i 1 N L ( y i , c ) f_0(x) \arg \m…...
# Easysearch 与 LLM 融合打造高效智能问答系统
LangChain通过提供统一的抽象层和丰富的工具,极大地简化了LLM应用程序的开发过程,使得开发者能够更加专注于业务逻辑。RAG技术则通过索引和检索生成两步流程,利用最新数据或私有数据作为背景信息来增强大模型的推理能力。然而,对于…...
本地可以插入表记录,生产不能插入表记录
先说解决方案: 切面没有注入容器,在切面这加上Component详情: 大致是这样一个方法,本地运行会插入数据到sys_log表,但部署到服务器上就不会插入,而服务部署三年多了,一个表一直是空的居然没人…...
11.Three.js使用indexeddb前端缓存模型优化前端加载效率
11.Three.js使用indexeddb前端缓存模型优化前端加载效率 1.简述 在使用Three.js做数字孪生应用场景时,我们常常需要用到大量模型或数据。在访问我们的数字孪生应用时,每次刷新都需要从web端进行请求大量的模型数据或其他渲染数据等等,会极大…...
功能测试:方法、流程与工具介绍
功能测试是对产品的各功能进行验证的一种测试方法,旨在确保软件以期望的方式运行并满足设计需求。以下是对功能测试的详细解释: 一、定义与目的 定义:功能测试(Functional Testing),也称为行为测试&#…...
【Orange Pi 5 Linux 5.x 内核编程】-设备驱动中的sysfs
设备驱动中的sysfs 文章目录 设备驱动中的sysfs1、sysfs介绍2、内核对象(kobject)介绍3、设备驱动中的SysFS31 在/sys中创建目录3.2 创建sysfs文件3.2.1 创建属性3.2.2 创建sysfs文件4、驱动程序实现5、驱动验证1、sysfs介绍 sysfs是内核导出的虚拟文件系统,类似于/proc。sys…...
微信小程序-全局数据共享/页面间通信
一.全局数据共享 声明全局的变量,在app.js文件里 App({//全局共享的数据globalData:{token:},//设置全局数据setToken(token){this.globalData.tokentoken}})使用 getApp() 获取全局App实例 //返回全局唯一的APP实例 const appInstancegetApp()Page({login(){con…...
java计算机毕设课设—Java聊天室(附源码、文章、相关截图、部署视频)
这是什么系统? 资源获取方式再最下方 java计算机毕设课设—Java聊天室(附源码、文章、相关截图、部署视频) Java聊天室系统是一个基于Java语言开发的在线即时通讯平台,旨在为用户提供一个简单、易用的实时交流环境。该系统支持多用户同时在线交流&…...
图像识别基础认识
import numpy as np import pandas as pd import matplotlib.pyplot as plt import cv2 %matplotlib inline读取图像 img = cv2.imread(shuzi.png) # 显示图像 cv2.imshow(shuzi, img) # 设置窗口大小 #cv2.resizeWindow(shuzi, 800, 600) # 设置宽为800,高为600 cv2.waitKe…...
使用 OpenCV 读取和显示图像与视频
概述 OpenCV 是一个强大的计算机视觉库,广泛应用于图像处理和视频处理等领域。本文将详细介绍如何使用 OpenCV 在 Python 中读取和显示图像以及视频,并通过具体的代码示例来展示整个过程。 环境准备 在开始之前,请确保已经安装了 OpenCV 库…...
【1】Elasticsearch 30分钟快速入门
文章目录 一、Elasticsearch 基本概念及工作原理(一)基本概念(二)工作原理二、Elasticsearch 原生 RESTful 方式的增删改查(一)创建索引(二)插入文档(三)查询文档(四)更新文档(五)删除文档(六)删除索引三、Python SDK 实现增删改查(一)安装 Elasticsearch Py…...
教材管理系统设计与实现
教材管理系统设计与实现 1. 系统概述 教材管理系统是一个基于PHP和SQL的Web应用程序,旨在为学校提供一个高效的教材管理平台。该系统可以帮助管理员录入教材信息、教师查询和申请教材、学生查询教材信息,提高教材管理的效率和透明度。 2. 技术栈 前端…...
软考(中级-软件设计师)数据库篇(1101)
第6章 数据库系统基础知识 一、基本概念 1、数据库 数据库(Database ,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和扩展…...
安装nscd及glibc包冲突降级【centos7】
安装nscd及glibc包冲突降级【centos7】 一、查看当前glibc版本二、查找可用的glibc版本三、备份系统和数据四、降级glibc五、验证降级是否成功六、解决其他依赖问题七、测试和验证八、考虑使用容器技术endl [08:41:07 rootcentos7 ~]# yum -y install nscd Loaded plugins: fas…...
Qt字符编码
目前字符编码有以下几种: 1、UTF-8 UTF-8编码是Unicode字符集的一种编码方式(CEF),其特点是使用变长字节数(即变长码元序列、变宽码元序列)来编码。一般是1到4个字节,当然,也可以更长。 2、UTF-16 UTF-16是Unicode字符编码五层次…...
Ubuntu用docker安装AWVS和Nessus(含破解)
Ubuntu安装AWVS(更多搜索:超详细Ubuntu用docker安装AWVS和Nessus) 首先安装docker,通过dockers镜像安装很方便,且很快;Docker及Docker-Compose-安装教程。 1.通过docker search awvs命令查看镜像; docker search awvs…...
tauri开发中如果取消了默认的菜单项,复制黏贴撤销等功能也就没有了,解决办法
取消默认的菜单项:清除tauri默认的菜单项,让顶部的菜单menu不显示-CSDN博客 就是通过配置空菜单,让菜单不显示,但是这个引发的问题就是复制黏贴撤销等功能也就没有了,解决办法: 新增加编辑下的子菜单&…...
HNU-小学期-专业综合设计
写在前面 选题:大数据技术-智慧交通预测系统 项目github地址(如果有用麻烦点个star与follow):https://github.com/wolfvoid/HNU-ITPS (全部代码以及如何部署参见README) 项目报告:如下&…...
Linux安装es和kibana
安装Elasticsearch 参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html#targz-enable-indices 基本步骤下载包,解压,官网提示: wget https://artifacts.elastic.co/downloads/elasticsearc…...
第二十六章 Vue之在当前组件范围内获取dom元素和组件实例
目录 一、概述 二、获取dom 2.1. 具体步骤 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.3. BaseChart.vue 三、获取组件实例 3.1. 具体步骤 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. BaseForm.vue 3.3. 运行效果 一、概述 我们过去在想要获取一…...
嵌入式正交编码器软件解码库设计与实现
1. QuadratureEncoder 库概述QuadratureEncoder 是一个专为嵌入式系统设计的正交编码器信号处理库,面向 STM32、ESP32、nRF52 等主流 MCU 平台,提供高精度、低开销、抗干扰的旋转位置与速度检测能力。该库不依赖特定硬件外设(如 STM32 的 TIM…...
后端/全栈/架构师转战AI大模型开发:可落地规划(建议收藏)
如果你本身是后端、全栈或架构师出身,就意味着你已经手握一套扎实的“确定性系统”构建能力——分布式部署、高并发处理、数据库事务管控、系统稳定性保障,这些都是你转型AI大模型开发的核心底牌,也是纯算法出身从业者难以快速补齐的短板。 而…...
Windows10下用VS2019编译UE4.27源码的完整避坑指南(附环境配置截图)
Windows 10下用VS2019编译UE4.27源码的完整避坑指南 第一次在Windows 10上编译UE4.27源码,就像在迷宫中寻找出口——每个转角都可能藏着意想不到的陷阱。作为一位经历过无数次编译失败的老兵,我深知那些看似简单的步骤背后隐藏的魔鬼细节。本文将带你避开…...
三三复制系统模式介绍
三三复制系统模式介绍:从底层逻辑到合规落地在社交电商与团队裂变领域,三三复制系统凭借其低门槛、高稳定性的特点,成为企业实现用户快速增长与业绩倍增的重要工具。不同于传统多级分销的复杂层级,三三复制系统以“三”为核心基数…...
2026年必看:专业婚恋软件推荐,找到真爱不迷路
在当今快节奏的社会中,越来越多的高知青年面临着交友难、脱单难的问题。传统的社交方式往往难以满足他们对高质量伴侣的需求,而专业的婚恋软件则成为他们寻找真爱的重要途径。本文将重点推荐一款备受好评的婚恋软件——即恋App,并结合具体数据…...
嵌入式工程师技术成长路径:从单片机到Linux驱动开发
嵌入式工程师职业发展路径的技术思考1. 职业发展阶段与技术演进1.1 单片机开发阶段对于刚毕业的电子工程专业学生,单片机开发通常是职业起点。这一阶段主要涉及:8/16/32位微控制器(如STM32系列)的应用开发基础外设驱动开发(GPIO、UART、SPI、I2C等)实时操…...
提升开发效率与编码体验:开源字体LxgwWenKai跨平台配置全指南
提升开发效率与编码体验:开源字体LxgwWenKai跨平台配置全指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目,提供了多种版本的字体文件,适用于不同的使用场景,包括屏幕阅读、轻便版、GB规范字形和TC旧字形…...
AS_BH1750库:BH1750FVI环境光传感器嵌入式驱动设计与工程实践
1. AS_BH1750库概述:面向嵌入式系统的BH1750FVI环境光传感器驱动设计与工程实践BH1750FVI是由ROHM Semiconductor推出的高精度数字环境光传感器(Ambient Light Sensor, ALS),采用IC接口,具备宽动态范围(0.1…...
Qwen3.5-4B-Claude-Opus部署教程:模型路径软链失效时的容错加载机制
Qwen3.5-4B-Claude-Opus部署教程:模型路径软链失效时的容错加载机制 1. 模型概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该版本以GG…...
LxgwWenkaiGB:合规开源字体的专业应用指南
LxgwWenkaiGB:合规开源字体的专业应用指南 【免费下载链接】LxgwWenkaiGB An open-source Simplified Chinese font derived from Klee One. 项目地址: https://gitcode.com/gh_mirrors/lx/LxgwWenkaiGB LxgwWenkaiGB(霞鹜文楷 GB)作为…...
