XGBoost最通俗版的公式推导与原理解释,超详细!!

本文深入解析XGBoost算法,从分类树与回归树的基础概念,到Boosting技术的原理,再到XGBoost的核心思想和优化策略,最后对比GBDT与XGBoost的差异。文章详细阐述了XGBoost如何利用泰勒展开公式进行优化,以及其在解决过拟合问题上的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.分类树与回归树

XGBoost是以CART回归树作为基本分类器, 那么什么是回归树呢?什么又是分类树呢?

其实分类树和回归树都属于决策树,关于决策树的知识,这篇文章就不做过多的介绍。

分类树:分类树的样本输出都是以类别的形式,比如说判断蘑菇是有毒还是没有毒,判断西瓜是甜还是不甜。

回归树:回归树的样本输出是数值的形式,比如给某人发放房屋贷款的数额。

回归树的关键是:

1).分裂点依据什么来划分

2).分类后的节点预测值是多少

2.Boost介绍

XGBoost顾名思义,里面肯定是用到Boost的知识,什么是Boost呢?

Boost可以用于回归和分类问题,它每一步会产生一个弱分类器 (如决策树),然后通过加权累加起来变成一个强分类器。比如每一步都会产生一个f(x)F(x)=\sum f_i(x),其实就是一堆分类器通过加权合并成一个强分类器。

3.XGBoost介绍

有了前面的两个基础知识,现在开始介绍XGBoost。

XGBoost的核心思想:

  1. 对所有特征按照特征的数值进行预排序
  2. 在遍历分割点的时候,用O(#data)的代价找到一个特征上的最好分割点
  3. 在找到一个特征分割点的时候,将数据分裂到左右子节点。

我们的目标,希望建立 N 个回归树,使得树群的预测值尽量接近真实值(准确率)而且有尽量大的泛化能力。也就是说,给定输入向量x和输出向量y组成的若干个训练样本(x1,y1),(x2,y2)....(xn,yn),目标找到一个近似函数 F(\vec{x}) , 使得损失函数L(y,F(\vec{x}))的损失值最小。其中F(\vec{x})就是我们的预测值。

这里的 F(\vec{x})就是我们通过很多弱分类器加权得到的。

F(\vec{x})是第一个的时候,我们定义为常函数,如下图。

我们要求第m个F(\vec{x})的时候,前m-1个分类器是已经选好的,我们只要找出第m个最优的弱分类器,加到前m-1个里,就变成了第m个F(\vec{x}),这里用到的就是贪心的思想。

所以我们的目标函数就是:

意思就是找到第t个比较好的弱分类器,使得误差变小,后面一项是正则项。有的同学可能会有疑问,平时的损失函数里,通常是把 \omega 作为参数,来找到一个合适参数使得损失最小,怎么这里是函数?别着急,往下看。

XGBoost用到了泰勒展开公式,并展开到了二阶,其中泰勒展开公式是:

我们令目标函数里的公式里的,令

再令g_i为 f(x) 的一阶导,令h_i 为二阶导,如下图所示:

所以目标函数变成:

其中C为常数。

说到这,我们先停一下,因为说了半天和回归树没有关系,现在就让它们发生“关系”,咳咳~

开头说了,回归树的输出是数值,在XGBoost里,回归树实际上就是f(x),它的输出值实际上是权值,也就是说,它的叶子节点的值是权值w1,w2,...,那么也就是说f_i(x)可以等价为w_i,这样一来,就变成一般求损失函数的套路,对 w 进行求导,然后依次迭代。

但是现在还没有结束,公式有些太复杂了,需要进行简化。

这个是正则项,它实际的公式其实是长这样的

目标函数就变成了:

这里的 gi  实际上是梯度,,而变为了常数加到C里,因为前 t-1 个弱分类器已经确定,那么预测值就已经确定了,所以是常数。

假如一个二叉树的分成了4个叶子节点,一共有100个样本,其中20个样本落在第一个叶子节点,30个样本落在第2个叶子节点,10个样本落在第三个,其余落在第四个叶子节点。那么第一个叶子节点的梯度值应该是20个样本梯度值相加,然后乘第一个叶子节点的权重 w1, 同理其他的叶子节点,然后把四个叶子节点的梯度与权值的乘积相加起来。公式就变成了下面这样。

 

对于这个式子,定义:

带进去,公式就变成了这样。

这个时候公式就快大功告成啦!!!

然后对权重w求偏导:

然后将w的式子回代到目标函数中,最终目标函数变成了这个样子

OK!大功告成!

4. GBDT VS XGBoost

1)传统 GBDT 以 CART 作为基分类器,xgboost 还支持线性分类器,这个时候 xgboost 相当于带 L1 和 L2 正则化项的逻辑斯特回归(分类问题)或者线性回归(回归问题);

2)传统 GBDT 在优化时只用到一阶导数信息,xgboost 则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。

5. Boost Vs Xgboost

 

6. 总结

由于“随机森林族”本身具备过拟合的优势, 因此XGBoost仍然在一定程度上具有过拟合的特性。

XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升树的机器学习算法,它在各种机器学习竞赛中表现出色。下面是XGBoost原理公式推导: 1. 原理XGBoost是一种集成学习算法,通过组合多个弱学习器(决策树)来构建一个强学习器。它采用了梯度提升的思想,每一轮迭代都通过拟合前一轮模型的残差来训练新的模型,然后将新模型加入到集成中。 2. 损失函数: XGBoost使用了一种特殊的损失函数,称为目标函数。目标函数由两部分组成:损失函数和正则化项。常用的损失函数有平方损失函数、逻辑损失函数等。 3. 梯度提升: 在XGBoost中,每个决策树都是通过梯度提升来构建的。梯度提升的过程可以简单描述为以下几个步骤: - 初始化模型:将初始预测值设置为常数,通常为训练集样本的平均值。 - 计算残差:计算当前模型对训练集样本的预测值真实值之间的差异,得到残差。 - 拟合决策树:使用残差作为目标变量,拟合一个决策树模型。 - 更新模型:将新的决策树模型加入到集成中,并更新模型的预测值。 - 重复以上步骤,直到达到预定的迭代次数或满足停止条件。 4. 正则化: 为了防止过拟合,XGBoost引入了正则化项。正则化项由两部分组成:树的复杂度和叶子节点权重的L1或L2正则化。通过控制正则化参数,可以平衡模型的复杂度和拟合能力。 5. 公式推导XGBoost公式推导涉及到目标函数、损失函数、正则化项等,具体推导过程较为复杂。你可以参考XGBoost的论文《XGBoost: A Scalable Tree Boosting System》中的相关推导部分,详细了解公式推导的细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值