【机器学习笔记】xgboost陈天奇PPT逐页翻译详解

本文详细解读陈天奇的Xgboost PPT,从监督学习概念到梯度提升算法,深入探讨Xgboost的工作原理。重点介绍了损失函数、正则项在模型构建中的作用,回归树集成的特性,以及梯度提升算法的优化策略,如如何通过贪婪法确定最佳分裂点。最后,文章提出对未来研究的展望,包括时间序列学习和与其他算法的比较。
摘要由CSDN通过智能技术生成

xgboost是机器学习目前使用最广、效率最高的工具。之前大概了解过xgboost的原理,说实话并没有真正的理解,甚至连它和Lightgbm的优势劣势在哪里都不知道。因此这次我打算来仔细研读陈天奇大神的Xgboost PPT,逐页翻译并加备注,这样也能帮助自己更好的理解这个算法。

原PPT链接:https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf

一、监督学习的几点关键概念

在这里插入图片描述

  • xi属于实数空间,表示第i个训练集
  • 模型:常见的即为线性模型,包括了线性回归和逻辑回归。线性回归是用来预测连续型y值的,如房价;逻辑回归是用来判断类别的,如是否离职。
  • 参数w,即为我们需要通过数据来计算得到的值,学习的结果即为找到合适参数w,使得计算结果 y ^ \hat{y} y^接近最接近yi。

在这里插入图片描述

  • 目标函数也是机器学习中最重要的函数,学习的目的是让目标函数打到最小值。常见的目标函数由两部分构成:损失函数,一般为预测值和实际值的差距,衡量的是模型有多适配训练集。另一部分为正则项,通常利用正则项来调节模式,避免过拟合。

  • 对于损失函数,常见的有:

    1. 平方差,用于一般回归
    2. 逻辑差,也叫交叉熵损失(Cross Entropy Loss),常用于逻辑回归
  • 对于正则项,常见的也有两种:

    1. L2 模,即参数w的平方和再乘以系数λ
    2. L1模,即参数w乘以系数λ

在这里插入图片描述
将以上几种分类合并起来,我们就能得到以下几种模型:

  • 岭回归:线性回归模型+L2正则项,利用的是平方差损失函数
  • Lasso回归:线性回归模型+L1正则项,同样用平方差损失函数
  • 逻辑回归:线性模型,交叉熵损失函数,L2正则项

将模型,参数,目标函数的概念分开讨论,在工程上也有益处,因为我们可以修改部分代码,就能部署不同的回归函数了。

在这里插入图片描述

  • 这页继续强调了一下损失函数和正则项对于模型学习的不同作用。前者倾向于生成更具预测性的模型,避免欠拟合;而后者倾向于生成更简易的模型,避免过拟合。二者相辅相成。

二、 回归树集成

在这里插入图片描述
在这里插入图片描述

  • 回归树模型是区别于线性模型的另一种模型,也叫CART(Classification And Regression Tree),特点是利用将特征分隔成不同的特征空间,每一个特征空间为一个叶子,每一片叶子有一个大粪。如图中所示,按照年龄分成了两组,两个叶子的得分分别为+2和-1分

在这里插入图片描述
案例继续,现在有另一棵决策树,以是否用电脑为分界线,分割成两组,那么新的叶子又有两个得分0.9和-0.9。那么将两棵树合在一起看,就能得到具体某个元素(即xi)的得分,即为不同决策树所在叶子的得分之和。

在这里插入图片描述

  • 树模型目前广泛适用于数据挖掘竞赛中,常见的有GBM(gradient boosting machine,一般叫做梯度提升树算法),和Random Forest(随机森林)
  • 对输入不需要进行特征正则化
  • 可以在不同变量中学习到高阶关系(如两个参数的乘积这类关系)
  • 可规模化,并能使用于工业中。

在这里插入图片描述
现在开始详解树模型。
上文提到,可以将第i个数据,在不同的树中的得分累加起来,得到一个总得分,就是这页公式的含义。
y ^ \hat{y} y^:样本在不同树模型中的总得分,也为模型预测值。
f k f_{k} fk: 第k棵树的得分表,如在上文中,小于20岁得2分,大于20岁得0.9分,就是一种f函数。k棵树共有k种函数。
这里我们可以将 f k f_{k} fk视为一个参数来训练,好比线性模型中的w

在这里插入图片描述
那我们应该如何学习这个参数(函数)呢?其实跟线性模型也是一样的,设置目标函数并通过训练优化它。
这里举了一个例子,如何预测我对浪漫音乐的喜爱程度(回归模型)。从散点图我们可以清晰的看到,可以将数据点分成三个阶段,即三个样本空间,可以最大程度拟合这个喜爱程度。
但是如果用到机器学习的手段,就需要一些优化过程了。

在这里插入图片描述
首先,需要确定的有两点,一个是需要多少个分裂点,这里可以理解为可以有多少棵树;其次,需要确定的是每一层的高度是多少,这里相当于是每一片叶子的得分。

在这里插入图片描述
右上的图,分裂过多,虽然每一层的得分基本可以反应实际的结果,但是会造成过拟合。
左下的图,只有一棵分裂树,模型简易,但是由于分裂点位置错误,也导致了模型错误。
只有右下的图既保证了模型的准确性,又保证了简易型,防止过拟合。

在这里插入图片描述
根据以上案例,我们再回到模型建立的一般步骤中。
模型函数已知,现在来考虑目标函数。前文提到,目标函数分为了损失函数和正则项,这两项都与模型函数fk有关。
但是对于树模型,对正则项的定义也能简单一点,例如使用树的节点数、深度作为正则项,或者用叶深度的L2模作为正则项。

在这里插入图片描述

  • 当我们在讨论决策树时,它通常是启发式的(heuristics):
    根据信息增益分裂树。关于信息增益,简单来说是代表了在一个条件下,信息复杂度(不确定性)减少的程度。具体展开可以百度。
    修剪树枝
    设置最大深度
    顺滑叶得分

  • 启发式的学习方法其实和目标函数也是息息相关的,例如:
    信息增益对应的是训练损失
    剪枝对应了根据节点的正则化修正
    最大深度对应了函数空间的最大限制
    顺滑叶得分则对应了对叶权重的L2正则化。

在这里插入图片描述
既然是CART,顾名思义,它技能用于预测回归,也能用以预测分类,这与你的目标函数的选择相关。
例如,如果用平方差作为损失函数,那就能获得一个回归树,也就是常见的GBM(Gradient Boosting Machine)。
而如果选用交叉熵作为损失函数,就能得到LogitBoost。

三、梯度提升(Gradient Boosting)算法详解

在这里插入图片描述
再次强调了机器学习的几点特性:

  • 偏差-方差平衡
  • 损失函数+正则项所构成的目标函数应用于回归树训练
  • 我们想要的是具有预测性和建议的函数

在这里插入图片描述

  • 第一行为目标函数,其中 l ( y i , y i ^ ) l(y_{i},\hat{y_{i}}) l(yi,yi^)表示损失函数,第一项需要将对所有样本求和。 Ω ( f k ) \Omega (f_{k}) Ω(fk)表示正则项,需要对k个特征的正则项进行求和。

  • 为了降低目标函数,既需要让损失函数降低,即拉近预测值与实际值之间的距离,又需要让正则项降低,即降低各个特征函数的权重。

  • 在这里,我们没办法使用SGD(Stochastic Gradient Decent,随机梯度下降法)。因为SGD常用来寻找的是数值解,需要有已定的目标函数;但是在这里,我们需要在确定是一个函数,而非数值解,因此无法使用。

  • 解决方案是使用加法模型提升。具体来说,是将每一次的预测值,转换为前一次的预测值加上一个函数 f t ( x i ) f_{t}(x_{i}) ft(xi)。注意这里的 f t ( x i ) f_{t}(x_{i}) ft(xi)和上文的 Ω ( f k ) \Omega (f_{k}) Ω(fk)中的 f k f_{k} fk不是同一个函数。

这里对GBDT在做多一些解释,方便下文的理解。

  • GBDT的思想是累加多个弱学习器,以达到强学习器的效果。
  • 每一棵树,就是一个弱分类器。例如大于10岁和小于10岁是一个弱分类器,性别是另一个弱分类器,把二者的得分相加起来,就能得到一个预测值y。
  • 加法模型是GBDT的常见模型,他的思路是先训练一棵树,即弱分类器,计算弱分类器与实际值的差值。接着,将该差值传到下一个弱分类器中,再计算差值与下一个分类器的差值,以此迭代。如果换个方向讲,就是每一次迭代,预测值都等于了前一次的预测值,加上了这次的树。
  • 对于加法模型,正则项也与SGD算法中的L1范式L2范式有区别。在GBDT中,常见的正则项处理方式有三种(摘自百度):
    1. 第一种,是对步长的调节,即每一轮迭代中对新增的树乘上一个系数v,v属于[0,1]。对于同样的训练集学习效果,较小的步长意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。
    2. 第二种正则化的方式是通过子采样比例(subsample)。取值为(0,1]。注意这里的子采样和随机森林不一样,随机森林使用的是放回抽样,而这里是不放回抽样。如果取值为1,则全部样本都使用,等于没有使用子采样。如果取值小于1,则只有一部分样本会去做GBDT的决策树拟合。选择小于1的比例可以减少方差,即防止过拟合,但是会增加样本拟合的偏差,因此取值不能太低。推荐在[0.5, 0.8]之间。
    3. 第三种利用了决策树的剪枝,即正则项为α*T,T为叶子树,显然T无法过大,否则目标函数会过高。

在这里插入图片描述
那么我们要如何确定这个加法项ft呢,其实也是利用训练优化它。

这里先明确几个概念:

  1. y ^ i ( t ) \hat{y}_{i}^{(t)} y^i(t)表示,第t次迭代的第i个变量所对应的预测值。
  2. 将所有变量的预测值求和,才是目标函数的第一项。

将加法公式 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(t1)+ft(xi)代入到目标函数中,可以将目标函数的第一项——损失函数变为:
∑ i = 1 n l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) \sum_{i=1}^{n}l(y_{i},\hat{y}_{i}^{(t-1)}+f_{t}(x_{i})) i=1nl(yi,y^i(t1)+ft(xi))

其次,对于正则项,在原公式中,是对每一次迭代的残差函数 f i f_{i} fi求和。但是假如我们使用了上一页中提到的步长控制法,这一项其实仅与本次迭代有关。因此作者这里就将求和符号去掉了,仅留下了本次迭代所增加的决策树 f t f_{t} ft

接着,作者举了一个例子,当损失函数为平方差时,即:

  • 18
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
XGBoost是一个开源的机器学习项目,它是陈天奇等人开发的,能够高效地实现梯度提升决策树算法,并在算法和工程方面进行了许多改进。XGBoost在Kaggle竞赛和其他机器学习竞赛中广泛应用,并取得了不错的成绩。它全名为极端梯度提升(eXtreme Gradient Boosting),是目前最快最好的开源boosted tree工具包之一。 XGBoost使用的算法是改进的梯度提升决策树(GBDT)。与传统的GBDT相比,XGBoost通过对目标函数进行二阶泰勒展开,求出下一步要拟合的树的叶子节点权重,从而根据损失函数的减小情况选择合适的属性进行分裂。这种改进使得XGBoost在训练效率和预测准确性方面表现出色。 对于机器学习中的XGBoost回归问题,它使用集成学习方法来构建预测模型。预测模型可以表示为XGBoost的形式,其中包含了多个弱分类器的组合。这些弱分类器通过迭代的方式不断优化,使得整个预测模型的性能得到提升。 总之,XGBoost是一个强大的机器学习工具,既可以用于分类问题,也可以用于回归问题。其采用了改进的梯度提升决策树算法,具有高效、准确的特点,并在许多机器学习竞赛中取得了优秀的成绩。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [机器学习算法(十五):XGBoost](https://blog.csdn.net/weixin_39910711/article/details/121210569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值