当前位置: 首页 > news >正文

《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=1NL(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))=(yf(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)+(1y)log(1f(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)=(yic)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=1N(yic)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=1Nyi

因此,在平方损失的情况下,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+(1yi)log(1c)]

在这种情况下,公式(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=1N[yilogc+(1yi)log(1c)]

通过对 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)=logNi=1Nyii=1Nyi

6. 总结

公式(11-13)的作用是初始化GBDT模型,使得初始预测值 f 0 ( x ) f_0(x) f0(x) 能够尽量接近真实值,从而为后续的树提供一个合理的起点。通过最小化损失函数之和,我们可以根据不同的损失函数类型选择合适的初始值,例如:

  • 回归任务中使用平方损失的均值。
  • 分类任务中使用对数损失的对数几率。

这一初始化过程确保了GBDT的模型从一开始就具有一定的预测能力。


对数损失下的GBDT初始预测值f0(x) 的表达式 推导过程


http://www.mrgr.cn/news/64304.html

相关文章:

  • Linux常用基本指令和shell
  • STM32 从0开始系统学习5
  • Hbuilder html5+沉浸式状态栏
  • 安装fpm,解决*.deb=> *.rpm
  • LoopBack快速入门
  • c# WinForm弹出窗体时不获取焦点方法
  • LangChain学习之路
  • 【Comsol教程】计算流道中的流量
  • 一般无人机和FPV无人机的区别
  • WorkFlow Communicator之TCPServer(上)
  • QT打包Macosx应用发布App Store简易流程
  • 关于函数指针的一些例子说明
  • 探讨 Vue2 和 Vue3 中双向绑定机制的优化与差异
  • MybatisPlus - 核心功能
  • B3628 机器猫斗恶龙
  • C++队列
  • Linux系列-进程的概念
  • 02LangChain 实战课——安装入门
  • 支付宝批量转账工具--企业资金快速流转的安心之选
  • pytorch使用pyinstaller编译报错:找不到源代码
  • 轻松理解操作系统 - Linux 文件系统的心脏是什么?
  • 分享一下面试中常用的10 个面试点全解析,面试成功的秘诀
  • go语言回调函数的使用
  • 抓包sslpinning绕过
  • 代码随想录第十八天
  • C语言之写一个修改数组内容的函数