经典机器学习算法之GBDT算法

这篇具有很好参考价值的文章主要介绍了经典机器学习算法之GBDT算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇文章旨在让完全不懂的小伙伴对该算法有一个初步认识与理解,只适用于小白

1. 基本概念和基本原理

GBDT(Gradient Boosting Decision Trees,梯度提升决策树)是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来作为最终答案,我们根据其名字来展开推导过程是一种集成学习方法,通过迭代地训练多个决策树,将它们组合成一个强大的预测模型。GBDT以决策树为基分类器,通过梯度提升的方式逐步改善模型的预测能力。
基本原理是通过不断优化损失函数的负梯度来逐步拟合训练数据的残差。每个新的决策树都会尝试去拟合之前模型的残差,从而逐渐减小整体的预测误差。

2. 形式描述

基本形式描述

假设有一个训练数据集 D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i=1}^N D={(xi,yi)}i=1N,其中 x i x_i xi 是输入特征, y i y_i yi 是对应的输出标签。GBDT的目标是学习一个加法模型 F ( x ) F(x) F(x),使得

F ( x ) = ∑ m = 1 M β m h ( x ; γ m ) F(x) = \sum_{m=1}^M \beta_m h(x; \gamma_m) F(x)=m=1Mβmh(x;γm)

其中, h ( x ; γ m ) h(x; \gamma_m) h(x;γm) 是基函数(决策树), γ m \gamma_m γm 是基函数的参数, β m \beta_m βm 是基函数的系数, M M M 是基函数的个数。

目标函数描述

GBDT的目标函数是最小化损失函数的经验风险和正则化项:

L ( F ) = ∑ i = 1 N L ( y i , F ( x i ) ) + ∑ m = 1 M Ω ( h m ) \mathcal{L}(F) = \sum_{i=1}^N L(y_i, F(x_i)) + \sum_{m=1}^M \Omega(h_m) L(F)=i=1NL(yi,F(xi))+m=1MΩ(hm)

其中, L ( y i , F ( x i ) ) L(y_i, F(x_i)) L(yi,F(xi)) 是损失函数,衡量模型预测与真实标签之间的差异; Ω ( h m ) \Omega(h_m) Ω(hm) 是正则化项,用于控制模型的复杂度。

优化求解描述

GBDT使用前向分步算法来逐步优化目标函数。在每一步中,新增加一个基函数来减小损失函数。

  1. 初始化模型 F 0 ( x ) F_0(x) F0(x),可以是一个常数,如训练数据的平均值。

  2. 对于 m = 1 m = 1 m=1 M M M

    • 计算当前模型的残差 { r i m } i = 1 N \{r_{im}\}_{i=1}^N {rim}i=1N
      r i m = − [ ∂ L ( y i , F ( x i ) ) ∂ F ( x i ) ] F ( x ) = F m − 1 ( x ) r_{im} = -\left[\frac{\partial L(y_i, F(x_i))}{\partial F(x_i)}\right]_{F(x) = F_{m-1}(x)} rim=[F(xi)L(yi,F(xi))]F(x)=Fm1(x)
    • 拟合一个基函数(决策树) h m ( x ) h_m(x) hm(x),通过拟合残

{ r i m } i = 1 N \{r_{im}\}_{i=1}^N {rim}i=1N 得到参数 γ m \gamma_m γm

  • 使用线搜索或其他方法找到基函数的最优系数 β m \beta_m βm,即更新 F m ( x ) = F m − 1 ( x ) + β m h m ( x ) F_m(x) = F_{m-1}(x) + \beta_m h_m(x) Fm(x)=Fm1(x)+βmhm(x)
  1. 最终模型 F M ( x ) F_M(x) FM(x) 为:
    F M ( x ) = F 0 ( x ) + ∑ m = 1 M β m h m ( x ) F_M(x) = F_0(x) + \sum_{m=1}^M \beta_m h_m(x) FM(x)=F0(x)+m=1Mβmhm(x)

3. 构造GBDT

构造梯度提升树的步骤如下:

  1. 准备训练数据集 D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i=1}^N D={(xi,yi)}i=1N

  2. 初始化模型 F 0 ( x ) F_0(x) F0(x),可以是一个常数,如训练数据的平均值。

  3. 对于 m = 1 m = 1 m=1 M M M,重复以下步骤:

    • 计算当前模型的残差 { r i m } i = 1 N \{r_{im}\}_{i=1}^N {rim}i=1N
      r i m = − [ ∂ L ( y i , F ( x i ) ) ∂ F ( x i ) ] F ( x ) = F m − 1 ( x ) r_{im} = -\left[\frac{\partial L(y_i, F(x_i))}{\partial F(x_i)}\right]_{F(x) = F_{m-1}(x)} rim=[F(xi)L(yi,F(xi))]F(x)=Fm1(x)
    • 拟合一个基函数(决策树) h m ( x ) h_m(x) hm(x),通过拟合残差 { r i m } i = 1 N \{r_{im}\}_{i=1}^N {rim}i=1N 得到参数 γ m \gamma_m γm
    • 使用线搜索或其他方法找到基函数的最优系数 β m \beta_m βm,即更新 F m ( x ) = F m − 1 ( x ) + β m h m ( x ) F_m(x) = F_{m-1}(x) + \beta_m h_m(x) Fm(x)=Fm1(x)+βmhm(x)
  4. 最终模型 F M ( x ) F_M(x) FM(x) 为:
    F M ( x ) = F 0 ( x ) + ∑ m = 1 M β m h m ( x ) F_M(x) = F_0(x) + \sum_{m=1}^M \beta_m h_m(x) FM(x)=F0(x)+m=1Mβmhm(x)

下面给出一个具体的例子来说明:

假设我们有一个回归问题,训练数据集包含以下数据点:

(x1, y1) = (1, 5)
(x2, y2) = (2, 10)
(x3, y3) = (3, 15)

我们的目标是构建一个梯度提升树来拟合这些数据点。

首先,我们初始化模型 F 0 ( x ) F_0(x) F0(x) 为训练数据标签的平均值: F 0 ( x ) = mean ( y 1 , y 2 , y 3 ) = mean ( 5 , 10 , 15 ) = 10 F_0(x) = \text{mean}(y_1, y_2, y_3) = \text{mean}(5, 10, 15) = 10 F0(x)=mean(y1,y2,y3)=mean(5,10,15)=10

接下来,我们计算残差 { r i m } i = 1 N \{r_{im}\}_{i=1}^N {rim}i=1N

r1 = -(5 - 10) = 5
r2 = -(10 - 10) = 0
r3 = -(15 - 10) = -5

然后,我们拟合一个基函数(决策树)来拟合这些残差,得到参数 γ m \gamma_m γm。假设拟合得到

的决策树为 h 1 ( x ) h_1(x) h1(x),并且它的叶子节点有两个,分别为区间 [1, 2] 和 [3, 3]。对应的参数为 γ 1 = ( a , b ) = ( 3 , − 2 ) \gamma_1 = (a, b) = (3, -2) γ1=(a,b)=(3,2)

接着,我们使用线搜索或其他方法找到基函数的最优系数 β 1 \beta_1 β1。在这个例子中,我们可以通过最小化损失函数 ∑ i = 1 N L ( y i , F m − 1 ( x i ) + β m h m ( x i ) ) \sum_{i=1}^N L(y_i, F_{m-1}(x_i) + \beta_m h_m(x_i)) i=1NL(yi,Fm1(xi)+βmhm(xi)) 来求解 β 1 \beta_1 β1。具体求解过程略过。

假设最优系数为 β 1 = 1 \beta_1 = 1 β1=1,则更新模型为 F 1 ( x ) = F 0 ( x ) + β 1 h 1 ( x ) F_1(x) = F_0(x) + \beta_1 h_1(x) F1(x)=F0(x)+β1h1(x)

最终,我们得到模型 F 1 ( x ) F_1(x) F1(x)

F_1(x) = 10 + 1 * 3  (if x in [1, 2])
         10 + 1 * (-2) (if x in [3, 3])

可以继续进行更多的迭代,得到更复杂的模型,直到达到预定的迭代次数或满足停止条件。

这就是构造梯度提升树的基本步骤和一个简单示例。

通过迭代地拟合基函数和更新模型,GBDT能够逐步改善模型的预测能力,并在回归和分类问题中取得出色的表现。文章来源地址https://www.toymoban.com/news/detail-505253.html

到了这里,关于经典机器学习算法之GBDT算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习十大经典算法

    机器学习算法是计算机科学和人工智能领域的关键组成部分,它们用于从数据中学习模式并作出预测或做出决策。本文将为大家介绍十大经典机器学习算法,其中包括了线性回归、逻辑回归、支持向量机、朴素贝叶斯、决策树等算法,每种算法都在特定的领域发挥着巨大的价

    2024年02月14日
    浏览(42)
  • 机器学习笔记之优化算法(十八)经典牛顿法

    本节将介绍 优化算法——经典牛顿法 ( Newton Method ) (text{Newton Method}) ( Newton Method ) 。 下降方向 在线搜索方法——方向角度中介绍了 下降方向 ( Descent Direction ) (text{Descent Direction}) ( Descent Direction ) 的概念。首先,通过推导得到 如果 更新方向 P k mathcal P_k P k ​ 与梯度方向

    2024年02月11日
    浏览(37)
  • 【五大机器学习经典算法,一起跟随浙大开启智能未来!】

    在这个知识更新迭代的浪潮中,你是否面临着人工智能的飞速冲击、就业市场的无形挑战以及被淘汰的压力: 职业焦虑,Al是否会取代我的工作? 学习费劲,知识迭代太快,好不容易跟上却已过时? 键盘敲的冒火星,AI 自动化仅需5分钟 消费降级,升职加薪难上加难 内心的

    2024年02月01日
    浏览(29)
  • GitHub Copilot 使用攻略,本篇文章作者是GPT-3.5

    引言: 在软件开发领域,编写高质量的代码是开发者们的永恒追求。然而,传统的编码过程常常耗费大量时间和精力,而且在遇到复杂的问题时,开发者可能会面临困惑和不确定性。为了解决这些挑战,GitHub推出了一款强大的工具——GitHub Copilot,它利用人工智能技术提供智

    2024年02月16日
    浏览(59)
  • python机器学习经典算法代码示例及思维导图(数学建模必备)

    最近几天学习了机器学习经典算法,通过此次学习入门了机器学习,并将经典算法的代码实现并记录下来,方便后续查找与使用。 这次记录主要分为两部分:第一部分是机器学习思维导图,以框架的形式描述机器学习开发流程,并附有相关的具体python库,做索引使用;第二部

    2024年02月12日
    浏览(39)
  • 机器学习笔记之优化算法(十九)经典牛顿法的收敛性分析

    上一节整体介绍了 经典牛顿法 ,并讨论了其更新方向 P k mathcal P_k P k ​ 是否为 下降方向 。本节将对 经典牛顿法 在迭代过程中的收敛性 进行分析。 在这些迭代算法中,我们关注的重点在于 算法在迭代过程中 是否收敛 ,以及它的 收敛速度 。 Wolfe text{Wolfe} Wolfe 准则的收

    2024年02月11日
    浏览(43)
  • 集成学习——Boosting算法:Adaboost、GBDT、XGBOOST和lightGBM的简要原理和区别

    Boosting算法是通过串联的方式,将一组弱学习器提升为强学习器算法。它的工作机制如下: (1)用初始训练集训练出一个基学习器; (2)依据基学习器的表现对训练样本分布进行调整,使得之前做错的训练样本在之后中得到最大的关注; (3)用调整后的样本分布进行下一

    2024年02月16日
    浏览(41)
  • 一文全解经典机器学习算法之支持向量机SVM(关键词:SVM,对偶、间隔、支持向量、核函数、特征空间、分类)

    之前所介绍的逻辑回归是基于似然度的分类方法,通过对数据概率进行建模来得到软输出。但这种分类方法其实稍加“繁琐”,因为要 估计数据的概率分布作为中间步骤 。这就像当一个人学习英语时,他只要直接报个班或者自己看书就行了,而不需要先学习诘屈聱牙的拉丁

    2024年02月03日
    浏览(63)
  • 机器学习之十大经典算法

    机器学习算法是计算机科学和人工智能领域的关键组成部分,它们用于从数据中学习模式并作出预测或做出决策。本文将为大家介绍十大经典机器学习算法,其中包括了线性回归、逻辑回归、支持向量机、朴素贝叶斯、决策树等算法,每种算法都在特定的领域发挥着巨大的价

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包