《XGBoost算法的原理推导》12-5正则化项拆分的目标函数 公式解析

本文是将文章《XGBoost算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。


让我们详细解析公式 (12-5)每一部分的含义。

公式 (12-5) 的形式

L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t ) ) + ∑ i = 1 t Ω ( f i ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + ∑ i = 1 t Ω ( f i ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) + Constant (12-5) \begin{aligned} L^{(t)} &= \sum_{i=1}^{n} l(y_i, \hat{y}_i^{(t)}) + \sum_{i=1}^{t} \Omega(f_i) \\ &= \sum_{i=1}^{n} l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) + \sum_{i=1}^{t} \Omega(f_i) \\ &= \sum_{i=1}^{n} l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) + \Omega(f_t) + \text{Constant} \tag{12-5} \end{aligned} L(t)=i=1nl(yi,y^i(t))+i=1tΩ(fi)=i=1nl(yi,y^i(t1)+ft(xi))+i=1tΩ(fi)=i=1nl(yi,y^i(t1)+ft(xi))+Ω(ft)+Constant(12-5)

逐步解释公式的各部分

  1. 目标函数 L ( t ) L^{(t)} L(t)

    • L ( t ) L^{(t)} L(t) 表示在第 t t t 轮迭代时的目标函数值。
    • XGBoost 通过最小化 L ( t ) L^{(t)} L(t) 来选择一个合适的树 f t f_t ft,从而在每一轮迭代中减少预测误差。
  2. 第一行:完整的目标函数表达式
    L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t ) ) + ∑ i = 1 t Ω ( f i ) L^{(t)} = \sum_{i=1}^{n} l(y_i, \hat{y}_i^{(t)}) + \sum_{i=1}^{t} \Omega(f_i) L(t)=i=1nl(yi,y^i(t))+i=1tΩ(fi)

    • 损失项 ∑ i = 1 n l ( y i , y ^ i ( t ) ) \sum_{i=1}^{n} l(y_i, \hat{y}_i^{(t)}) i=1nl(yi,y^i(t)):表示所有样本在第 t t t 轮中的损失总和。这里, l ( y i , y ^ i ( t ) ) l(y_i, \hat{y}_i^{(t)}) l(yi,y^i(t)) 衡量了第 i i i 个样本的真实值 y i y_i yi 与模型在第 t t t 轮的预测值 y ^ i ( t ) \hat{y}_i^{(t)} y^i(t) 之间的误差。
    • 正则化项 ∑ i = 1 t Ω ( f i ) \sum_{i=1}^{t} \Omega(f_i) i=1tΩ(fi):表示模型在前 t t t 轮迭代中所有树的正则化总和,用于控制每棵树的复杂度,防止过拟合。
  3. 第二行:展开第 t t t 轮的损失函数
    L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + ∑ i = 1 t Ω ( f i ) L^{(t)} = \sum_{i=1}^{n} l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) + \sum_{i=1}^{t} \Omega(f_i) L(t)=i=1nl(yi,y^i(t1)+ft(xi))+i=1tΩ(fi)

    • 在第 t t t 轮,预测值 y ^ i ( t ) \hat{y}_i^{(t)} y^i(t) 被更新为前一轮的预测值 y ^ i ( t − 1 ) \hat{y}_i^{(t-1)} y^i(t1) 加上当前新树的预测 f t ( x i ) f_t(x_i) ft(xi)。因此,损失函数部分可以展开为:
      ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) \sum_{i=1}^{n} l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) i=1nl(yi,y^i(t1)+ft(xi))
    • 正则化部分依然是前 t t t 轮所有树的正则化项总和 ∑ i = 1 t Ω ( f i ) \sum_{i=1}^{t} \Omega(f_i) i=1tΩ(fi)
  4. 第三行:化简正则化项
    L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) + Constant L^{(t)} = \sum_{i=1}^{n} l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) + \Omega(f_t) + \text{Constant} L(t)=i=1nl(yi,y^i(t1)+ft(xi))+Ω(ft)+Constant

    • 在这一行中,我们注意到第 t t t 轮的目标函数实际上是将前 t − 1 t-1 t1 轮次的正则化项视为常数,因为它们已经是固定的,不再对当前轮次的优化产生影响。因此,我们只需要关注当前树的正则化项 Ω ( f t ) \Omega(f_t) Ω(ft)
    • 常数项 Constant \text{Constant} Constant 包括了前 t − 1 t-1 t1 轮次的正则化项 ∑ i = 1 t − 1 Ω ( f i ) \sum_{i=1}^{t-1} \Omega(f_i) i=1t1Ω(fi),它们对当前的优化过程不起作用,可以视为常数。

公式的核心思想

公式 (12-5) 表示的是 XGBoost 的逐步优化过程。在每一轮 t t t 中,XGBoost 通过选择一个新树 f t f_t ft 来最小化当前轮次的目标函数 L ( t ) L^{(t)} L(t),包括了当前轮次的损失和正则化项。这一过程有以下核心思想:

  • 最小化损失:模型在每一轮中,都尝试找到一个新的树 f t f_t ft,以最小化当前轮次的损失。这使得模型在每一轮都能进一步减少预测误差,逐步逼近真实目标值。
  • 控制复杂度:正则化项 Ω ( f t ) \Omega(f_t) Ω(ft) 限制了新树 f t f_t ft 的复杂度,防止模型过拟合。这一正则化项通常包含了树的叶子节点数和叶子节点权重的正则化(L1 或 L2 正则化),从而有效控制树的复杂度。

总结

公式 (12-5) 是 XGBoost 中每一轮迭代的目标函数,它包含了当前轮次的损失和新树的正则化项。通过最小化这个目标函数,XGBoost 能够在保证模型准确性的同时控制模型的复杂度,达到平衡的效果。这一公式为 XGBoost 的优化提供了基础,使得模型能够有效地提高预测精度并具备良好的泛化能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/13279.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【网页设计】HTML5 和 CSS3 提高

目标 能够说出 3~5 个 HTML5 新增布局和表单标签能够说出 CSS3 的新增特性有哪些 1. HTML5 的新特性 注:该部分所有内容可参考菜鸟教程菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com) HTML5 的新增特性主要是针对于以前的不足&#xf…

09C++结构体

/*结构体属于用户自定义的数据类型&#xff0c; 允许用户存储不同的数据类型, 语法:struct 结构体名{结构体成员列表} ;*/ //struct 结构体名 变量名 #include <iostream> #include <string> using namespace std; struct student { string name; int age;int s…

软件测试之白盒测试(超详细总结)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 白盒测试 白盒测试&#xff08;White Box Testing&#xff09;又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结…

【入门篇】数字统计——多语言版

题目跳转&#xff1a;数字统计 题目解析&#xff1a; 这道题目要求统计在给定范围 [L, R] 内所有整数中数字 2 出现的次数。例如&#xff0c;在范围 [2, 22] 中&#xff0c;数字 2 分别在数 2、12、20、21、22 中出现的次数&#xff0c;最终出现了6次。 题目的输入为两个正…

C++初阶——list

一、什么是list list是一个可以在序列的任意位置进行插入和删除的容器&#xff0c;并且可以进行双向迭代。list的底层是一个双向链表&#xff0c;双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。通过将每个元素与前一个元素的链接和后一个元素的链接关联起来&…

FlinkSql读取kafka数据流的方法(scala)

我的scala版本为2.12 <scala.binary.version>2.12</scala.binary.version> 我的Flink版本为1.13.6 <flink.version>1.13.6</flink.version> FlinkSql读取kafka数据流需要如下依赖&#xff1a; <dependency><groupId>org.apache.flink&…

力扣 LeetCode 19. 删除链表的倒数第N个结点(Day2:链表)

解题思路&#xff1a; 快慢指针 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy new ListNode(-1);dummy.next head;ListNode fast dummy;ListNode slow dummy;for (int i 0; i < n; i) {fast fast.next;}while (fast.ne…

提升法律文书处理效率的秘密武器:开源文档比对工具解析

本篇文章介绍了一款针对律师行业的免费开源文档比对工具&#xff0c;旨在解决法律文档的多版本比对难题。通过逐字、逐句精确比对、语义分析、批量处理等核心功能&#xff0c;该工具可高效识别文本差异&#xff0c;提升文书审查效率并降低错误风险。它支持多种文件格式&#xf…

linux命令详解,openssl+历史命令详解

openssl openssl是一个开源的加密工具包&#xff0c;提供了各种加密、解密、签名、验证等功能 openssl passwd -1 123password表示这个命令用于处理密码相关的操作&#xff0c;-1参数指定使用MD5加密算法对密码“123”进行加密处理。MD5是一种常用的哈希算法&#xff0c;它将…

轻松理解操作系统 - Linux的虚拟文件系统是如何简化我们的使用的?

在前面几期&#xff0c;我们不仅了解了 Linux文件系统 是如何在硬盘等储存介质上保存文件的&#xff1a; 什么是软硬链接 文件的“身份证” - inode 真正储存文件的地方 - 数据块 文件系统的心脏 - 超级块 以及了解了 Linux系统 中具体都有一些什么文件&#xff1a; Linu…

LeetCode【0019】删除链表的倒数第N个结点

本文目录 1 中文题目2 求解方法&#xff1a;虚拟头节点和快慢指针2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例&#xff1a; 链表如上&#xff1a; 输入&a…

【JavaSE】多线程案例---阻塞队列

1. 阻塞队列 阻塞队列是一种特殊的队列&#xff0c;也遵守 " 先进先出 " 的原则。 阻塞队列是一种线程安全的数据结构&#xff0c;并且具有以下特性&#xff1a; 1. 当队列为满时&#xff0c;继续进行入队列操作就会阻塞&#xff0c;直到有其他线程从队列中取走元素…

SQL练习(2)

题源&#xff1a;牛客官网 选择题 假设创建新用户nkw&#xff0c;现在想对于任何IP的连接&#xff0c;仅拥有user数据库里面的select和insert权限&#xff0c;则列表语句中能够实现这一要求的语句是&#xff08;&#xff09; A grant select ,insert on *.* to nkw% B grant…

Hyper-v中ubuntu与windows文件共享

Hyper-v中ubuntu与windows文件共享 前言相关链接第一步--第一个链接第二步--第二个链接测试与验证 前言 关于Hyper-V的共享我搞了好久&#xff0c;网上的很多教程太过冗余&#xff0c;我直接采用最简单的办法吧 相关链接 Hyper-V中Ubuntu 同windows系统共享文件夹-百度经验 …

【TCP零窗口问题】

零窗口问题说明 零窗口问题(Zero Window Problem)是指在TCP连接中,当接收方的接收缓冲区已满时,无法接受新的数据。此时,接收方会向发送方发送一个窗口大小为0的TCP消息,告知其暂停发送数据,直到接收方释放出缓冲区空间。这种情况在高负载或接收方处理能力不足时比较常见…

Oracle OCP认证考试考点详解082系列19

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 91. 第91题&#xff1a; 题目 解析及答案&#xff1a; 关于 Oracle 数据库中的索引及其管理&#xff0c;以下哪三个陈述是正确的&#x…

2445.学习周刊-2024年45周

一片树叶展示了秋天的美 ✍优秀博文 数据仓库如何划分主题域在忙碌的工作中如何保持信息的输入&#xff1f;PC小米妙享安装解锁流转补丁智能数据建设与治理Dataphin对方讲话不要乱插嘴轩师处世之道 ✍实用工具 typing-practice云搭 自动化巡检系统 ✍精彩言论 话说的越快、…

关于解决使用VMWare内的虚拟机无法识别USB问题小结

目录 前言 0. 查看是不是没有开启USB3.0的支持 1. 检查一下是否禁用了VMWare USB服务 2. 无奈之举 前言 笔者今天帮助一位同志解决了VMWare内的虚拟机不识别挂载设备的办法。这里对笔者使用的排查手段做一个总结。 0. 查看是不是没有开启USB3.0的支持 我们的第一件事情就…

【364】基于springboot的高校科研信息管理系统

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

RN codegen编译报错

react-native codegen 编译报错 error: redefinition of ‘NativeAccessibilityInfoSpecJSI’ class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public JavaTurboModule 解决&#xff1a; codegen不能和项目本身一起编译&#xff0c;先执行./gradlew clean&#xff0c;然…