[机器学习]GBDT(介绍2)

是的,你说得非常对!GBDT(Gradient Boosting Decision Tree,梯度提升决策树)的核心就是由多棵决策树(通常是回归树)组成的集成学习模型。

可以这样理解GBDT:

  1. 核心思想 - 提升(Boosting): GBDT属于Boosting家族的算法。它的核心思想是顺序地训练多棵弱学习器(通常是浅层决策树,也叫弱学习器),每棵树都试图去纠正前一棵树留下的错误。
  2. "梯度"的含义: 这里的"梯度"指的是损失函数的负梯度方向。在每一步迭代中:
    • 计算当前模型(由前面所有树组成)在训练数据上的负梯度(可以理解为预测值与真实值之间的残差的方向)。
    • 训练一棵新的决策树来拟合这个负梯度(即残差)。这棵树的目标是尽可能好地预测当前模型犯的错误。
    • 将这棵新树加入到模型中(通常乘以一个较小的学习率learning_rate),更新模型的预测值。
  3. 多棵树协同工作: 最终的预测结果是所有树预测结果的加权和 (通常是累加和)。每一棵树都在努力弥补前一棵树的不足,最终组合成一个强大的模型。
    • 第一棵树:学习原始数据的初步模式。
    • 第二棵树:学习第一棵树预测的残差(错误)。
    • 第三棵树:学习前两棵树组合预测后的残差。
    • ... 以此类推,直到达到预设的树的数量(n_estimators)或满足停止条件。

关键点总结:

  • 是多个树: 绝对不止一棵树,通常是成百上千棵。
  • 顺序训练: 树是按顺序一棵一棵训练的,后训练的树依赖于前面所有树的结果(残差)。这与随机森林(并行训练独立树)形成鲜明对比。
  • 弱学习器: 每棵树本身通常是一个"弱学习器"(例如,深度很浅的树,如只有几层),防止单棵树过拟合。Boosting的力量在于将这些弱学习器组合成一个强学习器。
  • 拟合残差: 每棵新树的目标是拟合当前模型预测值与真实值之间的残差(通过损失函数的梯度体现)。
  • 加法模型: 最终预测是所有树预测值的累加。

与随机森林(也是多棵树)的区别:

特性 GBDT (Gradient Boosting) 随机森林 (Random Forest)
集成类型 Boosting (顺序,自适应) Bagging (并行,独立)
树关系 树之间有强依赖,后树纠正前树错误 树之间独立训练
训练顺序 顺序训练 并行训练
关注点 主要降低偏差 (通过不断修正错误) 主要降低方差 (通过平均独立模型)
单棵树 通常是弱学习器 (浅树) 通常是强学习器 (深树,可能过拟合单棵树)
样本使用 每棵树使用全部或大部分训练样本 (但权重或目标在变) 每棵树在随机子样本 (有放回抽样) 上训练
特征使用 每棵树通常使用所有特征 (或可按比例随机选) 每棵树在随机特征子集上训练
过拟合 对过拟合更敏感,需仔细调参 (树数量、学习率、树深度) 相对更鲁棒,不易过拟合
速度 通常训练较慢 (顺序) 通常训练较快 (并行)

简单比喻:

想象一个学生在做一系列练习题:

  • GBDT: 学生先做第一遍(第一棵树),老师批改后指出错题(计算残差)。学生重点研究这些错题(第二棵树拟合残差),再做一遍。老师再批改新产生的错题(新残差)。学生再研究这些新错题(第三棵树)... 如此反复,直到做了足够多遍或错题很少了。最终成绩是每一遍修正结果的综合。
  • 随机森林: 让一群学生(多棵树)各自独立地做同一套题(各自看到数据的随机部分),最后把所有人的答案汇总(投票或平均)得出最终答案。

结论:

GBDT确实是由多棵决策树(回归树)构成的集成模型。这些树不是独立工作的,而是通过Boosting机制顺序构建,每一棵都在努力修正前面所有树累积的错误,最终组合成一个预测能力强大的模型。理解它如何利用多棵树顺序地拟合残差是理解GBDT的关键。

相关推荐
Victor3563 小时前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
Victor3563 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术5 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
Gogo8166 小时前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端
fuquxiaoguang6 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
毕设源码_廖学姐6 小时前
计算机毕业设计springboot招聘系统网站 基于SpringBoot的在线人才对接平台 SpringBoot驱动的智能求职与招聘服务网
spring boot·后端·课程设计
野犬寒鸦8 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
逍遥德9 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
MX_93599 小时前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
程序员泠零澪回家种桔子10 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构