xgboost:算法数学原理

news2024/11/23 3:40:23

xgboost算法数学原理

1、求预测值
y ^ i = ϕ ( x i ) = ∑ k = 1 K f k ( x i ) , f k ∈ F , (1) \hat{y}_i=\phi\left(\mathbf{x}_i\right)=\sum_{k=1}^K f_k\left(\mathbf{x}_i\right), \quad f_k \in \mathcal{F},\tag{1} y^i=ϕ(xi)=k=1Kfk(xi),fkF,(1)
F = { f ( x ) = w q ( x ) } ( q : R m → T , w ∈ R T ) \mathcal{F}=\left\{f(\mathbf{x})=w_{q(\mathbf{x})}\right\}\left(q: \mathbb{R}^m \rightarrow T, w \in \mathbb{R}^T\right) F={f(x)=wq(x)}(q:RmT,wRT):递归树的的空间;

q q q:每棵树的结构,映射一个样本到一个叶子节点index;

T : T: T:叶子的数目; f k f_k fk对于一个独立的树结构 q q q和叶子权重 w w w

w i w_i wi:在 i − t h i-th ith叶子节点的分数;(与决策树不同,递归树在每个叶子节点上包含一个连续分数)。

示例图:(注:图中的人指的是一个个样本)

结合上面的公式理解就是对于样本 i i i的预测值等于 K K K棵递归树样本落在的叶子节点对应的分数的和;

在这里插入图片描述

2、计算带正则项的损失
L ( ϕ ) = ∑ i l ( y ^ i , y i ) + ∑ k Ω ( f k )  where  Ω ( f ) = γ T + 1 2 λ ∥ w ∥ 2 (2) \begin{aligned} & \mathcal{L}(\phi)=\sum_i l\left(\hat{y}_i, y_i\right)+\sum_k \Omega\left(f_k\right) \\ & \text { where } \Omega(f)=\gamma T+\frac{1}{2} \lambda\|w\|^2 \end{aligned}\tag{2} L(ϕ)=il(y^i,yi)+kΩ(fk) where Ω(f)=γT+21λw2(2)
l l l:衡量预测值 y i ^ \hat{y_i} yi^和目标值 y i y_i yi差别的可微的凸函数;

Ω \Omega Ω:模型复杂度的惩罚项;用于平滑最终的学习权重避免过拟合。正则化的目标函数倾向于选择一个更简单、可预测的函数(递归树模型);传统的梯度提升树没有用正则化项,RGF用到。

3、梯度树集成(Gradient Tree Boosting)

从对全部递归树的损失,利用贪心和近似,推导到一棵树的损失

为什么用(3)式作为目标函数而不是(2)式?

将(1)和(2)合并:
L ( ϕ ) = ∑ i l ( ∑ k = 1 K f k ( x i ) , y i ) + ∑ k Ω ( f k )  where  Ω ( f ) = γ T + 1 2 λ ∥ w ∥ 2 (2) \begin{aligned} & \mathcal{L}(\phi)=\sum_i l\left(\sum_{k=1}^K f_k\left(\mathbf{x}_i\right), y_i\right)+\sum_k \Omega\left(f_k\right) \\ & \text { where } \Omega(f)=\gamma T+\frac{1}{2} \lambda\|w\|^2 \end{aligned}\tag{2} L(ϕ)=il(k=1Kfk(xi),yi)+kΩ(fk) where Ω(f)=γT+21λw2(2)

可以看到(2)式不能进行优化,不能优化的原因是 K K K棵树的话,就有 K K K f ( x ) f(x) f(x),在优化理论中,相当于多变量优化,是一个极其难以优化的问题。所以使用(3)式这种贪婪的方式,每一次只优化一棵树。
L ( t ) = ∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) (3) \mathcal{L}^{(t)}=\sum_{i=1}^n l\left(y_i, \hat{y}_i^{(t-1)}+f_t\left(\mathbf{x}_i\right)\right)+\Omega\left(f_t\right)\tag{3} L(t)=i=1nl(yi,y^i(t1)+ft(xi))+Ω(ft)(3)
y i ^ t \hat{y_i}^{t} yi^t:第 i i i个样本实例在第 t t t次迭代的预测值;

注:二阶泰勒公式:
f ( x + Δ x ) ≈ f ( x ) + f ′ ( x ) ⋅ Δ x + 1 2 f ′ ′ ( x ) ⋅ Δ x 2 f(x+\Delta x)\approx f(x)+f'(x)\cdot\Delta x+\dfrac{1}{2}f''(x)\cdot\Delta x^2 f(x+Δx)f(x)+f(x)Δx+21f′′(x)Δx2

但是(3)式还是不容易优化,需要进行二阶近似:
L ( t ) ≃ ∑ i = 1 n [ l ( y i , y ^ ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) (4) \mathcal{L}^{(t)} \simeq \sum_{i=1}^n\left[l\left(y_i, \hat{y}^{(t-1)}\right)+g_i f_t\left(\mathbf{x}_i\right)+\frac{1}{2} h_i f_t^2\left(\mathbf{x}_i\right)\right]+\Omega\left(f_t\right)\tag{4} L(t)i=1n[l(yi,y^(t1))+gift(xi)+21hift2(xi)]+Ω(ft)(4)
g i g_i gi g i = ∂ y ^ ( t − 1 ) l ( y i , y ^ ( t − 1 ) ) g_i=\partial_{\hat{y}^{(t-1)}} l\left(y_i, \hat{y}^{(t-1)}\right) gi=y^(t1)l(yi,y^(t1))

h i h_i hi h i = ∂ y ^ ( t − 1 ) 2 l ( y i , y ^ ( t − 1 ) ) h_i=\partial_{\hat{y}^{(t-1)}}^2 l\left(y_i, \hat{y}^{(t-1)}\right) hi=y^(t1)2l(yi,y^(t1))

进一步去掉常数项,得到损失函数:(常数项不影响损失函数,因为常数项不影响最小化损失函数问题,只会影响损失函数的结果的量级)
L ~ ( t ) = ∑ i = 1 n [ g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + Ω ( f t ) (5) \tilde{\mathcal{L}}^{(t)}=\sum_{i=1}^n\left[g_i f_t\left(\mathbf{x}_i\right)+\frac{1}{2} h_i f_t^2\left(\mathbf{x}_i\right)\right]+\Omega\left(f_t\right)\tag{5} L~(t)=i=1n[gift(xi)+21hift2(xi)]+Ω(ft)(5)
按照叶子节点进行样本的集合划分:
L ~ ( t ) = ∑ i = 1 n [ g i f t ( x i ) + 1 2 h i f t 2 ( x i ) ] + γ T + 1 2 λ ∑ j = 1 T w j 2 = ∑ j = 1 T [ ( ∑ i ∈ I j g i ) w j + 1 2 ( ∑ i ∈ I j h i + λ ) w j 2 ] + γ T (6) \begin{aligned} \tilde{\mathcal{L}}^{(t)} & =\sum_{i=1}^n\left[g_i f_t\left(\mathbf{x}_i\right)+\frac{1}{2} h_i f_t^2\left(\mathbf{x}_i\right)\right]+\gamma T+\frac{1}{2} \lambda \sum_{j=1}^T w_j^2 \\ & =\sum_{j=1}^T\left[\left(\sum_{i \in I_j} g_i\right) w_j+\frac{1}{2}\left(\sum_{i \in I_j} h_i+\lambda\right) w_j^2\right]+\gamma T \end{aligned}\tag{6} L~(t)=i=1n[gift(xi)+21hift2(xi)]+γT+21λj=1Twj2=j=1T iIjgi wj+21 iIjhi+λ wj2 +γT(6)
I j = { i ∣ q ( x i ) = j } I_j=\{i|q(\mathbf{x}_i)=j\} Ij={iq(xi)=j}:叶子节点 j j j的样本集合;

然后对 w w w求导数,令其==0,得到:
w j ∗ = − ∑ i ∈ I j g i ∑ i ∈ I j h i + λ , (7) w_j^*=-\dfrac{\sum_{i\in I_j}g_i}{\sum_{i\in I_j}h_i+\lambda},\tag{7} wj=iIjhi+λiIjgi,(7)
计算对应的优化值:
L ~ ( t ) ( q ) = − 1 2 ∑ j = 1 T ( ∑ i ∈ I j g i ) 2 ∑ i ∈ I j h i + λ + γ T . (8) \tilde{\mathcal{L}}^{(t)}(q)=-\dfrac{1}{2}\sum\limits_{j=1}^{T}\dfrac{\left(\sum_{i\in I_j}g_i\right)^2}{\sum_{i\in I_j}h_i+\lambda}+\gamma T.\tag{8} L~(t)(q)=21j=1TiIjhi+λ(iIjgi)2+γT.(8)
式(8)可以作为像决策树里面的纯度、信息熵一样的划分函数,得到树的划分分数。如图

在这里插入图片描述

通常应该计算单个叶子节点和添加左右节点的贪婪算法来评估是不是增加分支,而不能直接计算(8),如下:
L s p l i t = 1 2 [ ( ∑ i ∈ I L g i ) 2 ∑ i ∈ I L h i + λ + ( ∑ i ∈ I R g i ) 2 ∑ i ∈ I R h i + λ − ( ∑ i ∈ I g i ) 2 ∑ i ∈ I h i + λ ] − γ (9) \mathcal{L}_{split}=\dfrac{1}{2}\left[\dfrac{(\sum_{i\in I_L}g_i)^2}{\sum_{i\in I_L}h_i+\lambda}+\dfrac{(\sum_{i\in I_R}g_i)^2}{\sum_{i\in I_R}h_i+\lambda}-\dfrac{(\sum_{i\in I}g_i)^2}{\sum_{i\in I}h_i+\lambda}\right]-\gamma\tag{9} Lsplit=21[iILhi+λ(iILgi)2+iIRhi+λ(iIRgi)2iIhi+λ(iIgi)2]γ(9)
R}h_i+\lambda}-\dfrac{(\sum_{i\in I}g_i)^2}{\sum_{i\in I}h_i+\lambda}\right]-\gamma\tag{9}
$$

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

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

相关文章

即时通讯开发常用加解密算法与通讯安全

平时开发工作中,我们会经常接触加密、解密的技术。尤其在今天移动互联网时代,越来越多的用户会将数据存储在云端,或使用在线的服务处理信息。这些数据有些涉及用户的隐私,有些涉及用户的财产,要是没有一套的方案来解决…

玩转结构体---【C语言】

⛩️博主主页:威化小餅干📝系列专栏:【C语言】藏宝图🎏 ✨绳锯⽊断,⽔滴⽯穿!一个编程爱好者的学习记录!✨目录结构体类型的声明结构体成员访问结构体传参前言我们是否有想过,为什么会有结构体呢…

stylelint执行插件的全过程

stylelint可以用来扩展插件去实现各种规则,接下来带大家看看stylelint是如何执行插件的 首先遍历absoluteFilePaths路径(该路径是我们执行lint命令配置的文件类型eslint --cache --max-warnings 0 \"{src,mock}/**/*.{vue,ts,tsx}\" --fix&…

Spark RDD

RDD RDD 是构建 Spark 分布式内存计算引擎的基石,如 :DAG/调度系统都衍生自 RDD RDD 是对分布式数据集的抽象,囊括所有内存/磁盘的分布式数据实体 RDD/数组差异 对比项数组RDD概念数据结构实体数据模型抽象数据跨度单机进程内跨进程&…

GC简介和监控调优

GC简介: GC(Garbage Collection)是java中的垃圾回收机制,是Java与C/C的主要区别之一,在使用JAVA的时候,一般不需要专门编写内存回收和垃圾清理代 码。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。 什么…

ThreadLoca基本使用以及与synchronized的区别

文章目录1. ThreadLocal介绍1.1 官方介绍1.2 基本使用1.2.1 常用方法1.2.2 使用案例1.3 ThreadLocal类与synchronized关键字1.3.1 synchronized同步方式1.3.2 ThreadLocal与synchronized的区别2. 运用场景_事务案例2.1 转账案例2.1.1 场景构建2.1.2 引入事务2.2 常规解决方案2.…

k8s servelList(服务列表) 卡死不同步问题分析

提要容器集群版本情况:k8s 1.20客户端k8s client版本: 0.21事情是这样的,运行了一年的服务,突然有一天业务反馈服务使用异常,然后初步调查结果如下以下截图是网关异常以下截图是客户端zull(feign&#xff0…

依赖倒置DIP在系统架构中的应用

最近在对项目中的某一模块进行重构和功能的拓展。一直没想到好方法。 简单理解为: R项目 调用了 E项目的打印接口,但是E项目需要对R传来对数据传输对象DTO进行二次处理,甚至夹杂很多R项目的业务逻辑(去调用R项目的接口&#xff0…

代码规范书写说明

目录 一,命名风格 二、常量定义 三、代码格式 一,命名风格 (1)、不能够以下划线或者美元符号开始,也不能以下划线或者美元符号结束 反例:_name / __name / $name / name_ (2)、所…

春招进行时:“211文科硕士吐槽工资5500” HR:行情和能力决定价值

学历重要,还是能力重要? 春招进行时,不少学生求职遇冷,会把原因归结为学历水平不够高、毕业院校不够档次、专业不够热门、非一线城市就业机会少等等。 直到上海一位211大学的文科男硕士,吐槽招聘会提供的岗位薪资待遇…

10个实用技巧:如何让你的外贸独立站排名直线上升

在当今竞争激烈的互联网市场中,谷歌SEO已经成为了外贸独立站排名提升的必修课程。为了使得自己的网站能够在谷歌上排名更高,网站优化的工作显得尤为重要。 在这篇文章中,我们将分享10个实用技巧,帮助你的外贸独立站排名直线上升。…

【软件测试】接口测试总结

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做和如何做?并没有解释为什么要做? 第二部分&#xff1…

java虚拟机栈解读

虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更…

【微信小程序-原生开发】实用教程11 - 用户登录鉴权(含云函数的创建、删除、使用,通过云函数获取用户的openid)

此篇可在实用教程10(见下方链接)的基础上继续开发,也可以在任何微信小程序中直接使用。 https://blog.csdn.net/weixin_41192489/article/details/128835069 用户登录鉴权逻辑 核心技术:通过云函数获取用户的openid 要想使用云函数…

网络层IP协议与数据链路层以太网协议

文章目录一、IP协议IP地址地址管理路由选择DNS二、以太网协议以太网帧MTU一、IP协议 IP协议是我们网络层的代表协议,今天我们就来一起学习一下吧,我们这里介绍的主要是IPv4协议。 版本:指定IP协议的版本,版本的取值只有4&#x…

如何使用ExchangeFinder在给定域中寻找Microsoft Exchange实例

关于ExchangeFinder ExchangeFinder是一款功能强大且使用简单的开源工具,该工具能够在给定域中尝试搜索指定的Microsoft Exchange实例,该工具的搜索机制基于Microsoft Exchange的常见DNS名称实现,并且能够识别指定的Microsoft Exchange版本&…

java基础之异常总结(自问自答版本)

1.errors和exception的区别是什么? 二者都是JAVA异常处理的重要子类,各自都包含大量子类 区别: exception:程序本身可以处理的异常,可以通过catch来进行捕获,遇到这种错误,应对其进行处理,使应用程序可以继…

大数据技术之Canal入门篇

大数据技术之Canal入门篇 文章目录大数据技术之Canal入门篇写在前面第 1 章 Canal 入门1.1 什么是 Canal1.2 MySQL 的Binlog1.2.1 什么是 Binlog1.2.2 Binlog 的分类1.3 Canal 的工作原理1.3.1 MySQL 主从复制过程1.3.2 Canal 的工作原理1.4 使用场景第 2 章 MySQL 的准备2.1 创…

作为产品经理,你都是怎样思考问题的?

作为产品经理,我们既不是产品的业务员更不是原型画师,而是伟大的创造者。用户对一个产品的评价可能只有好与坏,而作为产品工作者的我们必须有自己思考产品的视角,透过表现洞察本质。笔者根据自己有限的用户研究与产品设计的工作经…

leetcode_回溯算法

回溯算法刷题总结回溯法理论基础回溯算法的模板组合问题77.组合优化版本216.组合总和III17.电话号码的字母组合组合总和组合总和II分割131.分割回文串93.复原IP地址子集78.子集90.子集II491.递增子序列(和子集问题很像)排列全排列全排列II其他问题332.重…