机器学习:集成学习4(XGBoost推导)

目录标题

一、概念

二、推导概述

XGBoost(极限梯度提升树,Extheme Gradient Boosting Tree),基于 打分函数的结果 决定是否分枝

步骤: 1.在损失函数的基础上 + 正则化项

2.基于特勒展开二阶式进行转换, 转成 近似函数

3.把问题从 样本角度 -> 叶子点角度 进行分析

4.得到最终结论,打分函数 ->Gian值 = 拆分前的分 - (拆分后左子树的分 - 拆分后右子树的分)

三、推导第一步

特勒展开看我前置知识 blog:机器学习:集成学习4(XGBoost前置知识泰勒展开式1)(或自行学习)

这里t轮的预测 怎么等于 t- 1 的预测 + t棵树的输出 这步转换在 blog

机器学习:集成学习2(GBDT算法)

1、先看原始目标函数

图片上方写的是:

o b j ( t ) = ∑ i = 1 n L ( y i , y ^ i ( t ) ) + ∑ k = 1 t Ω ( f k ) obj^{(t)} = \sum_{i=1}^n L\left(y_i, \hat{y}i^{(t)}\right) + \sum{k=1}^t \Omega(f_k) obj(t)=i=1∑nL(yi,y^i(t))+k=1∑tΩ(fk)

这里:

  • ( t (t (t) 表示第 ( t (t (t) 轮
  • ( y ^ i ( t ) (\hat{y}_i^{(t)} (y^i(t)) 是第 ( t (t (t) 轮的预测值
  • ( L (L (L) 是损失函数
  • ( Ω ( f k ) (\Omega(f_k) (Ω(fk)) 是第 ( k (k (k) 棵树的正则化项
  • y i y_i yi就是真实值,不是本轮真实,右上角可没有标t(老师讲课讲错了,使用t-1 个弱学习器 预测值 和 t 个弱学习器的预测值 算 t 弱学习器 的输出,和这个 y i y_i yi就是真实值没关系, 最终二阶泰勒展开算的是 f t ( x i ) f_t(x_i) ft(xi))

2、关键:预测值是怎么累加的?

XGBoost 是加法模型,每一轮新加一棵树。

所以第 (t) 轮的预测值等于:

y ^ i ( t ) = y ^ i ( t − 1 ) + f t ( x i ) \hat{y}_i^{(t)} = \hat{y}_i^{(t-1)} + f_t(x_i) y^i(t)=y^i(t−1)+ft(xi)

意思是:

第 (t) 轮的预测值 = 前 (t - 1) 轮的预测值 + 第 (t) 棵树的输出

这个公式是理解这一步的全部关键。

四、推导第二步

泰勒可以将一个函数变成各阶导数和

五、推导第三步

理解下面前置知识图片

前置知识:区分 f t ( x i ) f_t(x_i) ft(xi)和 w w w 区别

结论先放在前面:

  1. ( w (w (w) 确实是这个叶子节点的输出值(也就是这个样本的输出)。
  2. PPT 并没有写错, ( f t ( x i ) (f_t(x_i) (ft(xi)) 和 ( w (w (w) 其实是同一个东西的两种不同表达方式,只是站在了不同的视角。

为了让你彻底明白,我们把这两张图拆开,用大白话一步步理顺。


1、为什么 PPT 没有写错? ( f t ( x i ) (f_t(x_i) (ft(xi)) 到底是什么?

首先,我们要搞懂 ( f t ( x i ) (f_t(x_i) (ft(xi)) 这个符号代表什么。

  • ( t (t (t):代表第 ( t (t (t) 棵树。
  • ( x i (x_i (xi):代表第 ( i (i (i) 个样本的特征。
  • ( f t ( x i ) (f_t(x_i) (ft(xi)):意思是"第 ( t (t (t) 棵树,对第 ( i (i (i) 个样本给出的预测值"。

现在,假设你有一棵树(比如图里的那棵树),样本 ( i (i (i) 顺着树的分支往下走,最后落在了 D 这个叶子节点上。

那么,这棵树对这个样本的预测值 ( f t ( x i ) (f_t(x_i) (ft(xi)) 是多少呢?就是 D 这个叶子节点的输出值。

我们把 D 叶子节点的输出值命名为 ( w 1 (w_1 (w1)。

所以,对于落在 D 节点的样本来讲, ( f t ( x i ) = w 1 (f_t(x_i) = w_1 (ft(xi)=w1)。

PPT 右图只是把"某个具体样本的预测值"统一抽象成了 ( w 1 , w 2 , w 3 , w 4 (w_1, w_2, w_3, w_4 (w1,w2,w3,w4)。它们本质上是一回事,只是叫法不同。就像同一个人,在家里叫"爸爸",在公司叫"张总"。


2、为什么 PPT 左边写 ( f t ( x i ) (f_t(x_i) (ft(xi)),右边写 ( w (w (w)?

因为这两张图在推导不同的阶段,视角发生了转换:

  • 左图(宏观/样本视角):

    我们要算总损失 ( o b j ( t ) (obj^{(t)} (obj(t)),公式是 ( ∑ i = 1 m g i f t ( x i ) + 1 2 h i f t 2 ( x i ) (\sum_{i=1}^m g_i f_t(x_i) + \\frac{1}{2} h_i f_t\^2(x_i) (∑i=1mgift(xi)+21hift2(xi))。

    这里是在遍历每一个样本 ( i (i (i),把每个样本的预测值加起来。对于样本 ( i (i (i) 来说,它的预测值就是 ( f t ( x i ) (f_t(x_i) (ft(xi))。

    所以公式里只能写 ( f t ( x i ) (f_t(x_i) (ft(xi)),因为还没确定它落在哪个叶子节点。

  • 右图(微观/叶子节点视角):

    我们需要把上面的公式整理一下,合并同类项。

    如果 10 个样本里,有 3 个样本落在了 D 节点,那么这 3 个样本的预测值都是同一个数,也就是 D 节点的输出值 ( w 1 (w_1 (w1)。

    所以,原本的 ( ∑ i = 1 m (\sum_{i=1}^m (∑i=1m)(按样本求和),就变成了按叶子节点求和:

( g 1 w 1 + g 2 w 1 + g 3 w 1 ) + ( g 4 w 2 + g 5 w 2 ) + ... (g_1 w_1 + g_2 w_1 + g_3 w_1) + (g_4 w_2 + g_5 w_2) + \dots (g1w1+g2w1+g3w1)+(g4w2+g5w2)+...

提取公因式 ( w 1 (w_1 (w1) 之后,就变成了 ( ( g 1 + g 2 + g 3 ) w 1 ((g_1 + g_2 + g_3)w_1 ((g1+g2+g3)w1)。

所以,PPT 右图并没有把 ( f t ( x i ) (f_t(x_i) (ft(xi)) 错写成 ( w (w (w),而是把 ( f t ( x i ) (f_t(x_i) (ft(xi)) 替换成了它实际代表的数值 ( w (w (w),用来做合并同类项化简。

对应样本角度转成叶节点角度(公式转换)

所有样本一阶导之和和二阶导之和带入 转换

求导算出 w ,然后带入公式

六、推导第四步

相关推荐
鲜于言悠9052 小时前
AI自动化工作流实战:告别重复加班的四层架构方案
人工智能
一水鉴天2 小时前
软件方法—工程函数—语言模型 20260925(千问)
人工智能·机器学习·边缘计算
程序员的账号2 小时前
《Python工匠》资源分享
人工智能·python·深度学习·机器学习
揽秀亭长2 小时前
视频转脚本有哪些技术路线?三种常见方案对比分析
人工智能·音视频
2601_962202982 小时前
首衡集采集配怕破损?万象包装优化降损耗
大数据·人工智能
随性而行3602 小时前
企业微信二次开发如何接入大模型工具?API接口实现智能任务调用的技术思路
java·前端·人工智能·python·微信·机器人·企业微信
IT大白鼠2 小时前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 0 篇 · 导读:把 Linux 运维交给 AI,到底靠谱吗
linux·运维·人工智能
程序员的账号2 小时前
《深度学习入门2自制框架》中文PDF+源代码+斋藤康毅
人工智能·深度学习·pdf
一木 之林2 小时前
多模态大模型一统精讲 NLP 和 CV:从 ViT、CLIP 到 BLIP、LLaVA 的三段式统一架构
人工智能·自然语言处理·架构