GBDT 算法中构建第一个弱学习器(CART 回归树)-计算示例

这张图是 GBDT 算法中**构建第一个弱学习器(CART 回归树)**的完整计算过程,我用通俗的例子和数值拆解来一步步解释:


一、先明确初始状态

我们有 10 个样本,每个样本的目标值 是真实标签(比如学生的考试分数),初始时模型的预测值是所有目标值的平均值(因为平方损失下,均值是最优初始预测)。

样本序号 (x) 1 2 3 4 5 6 7 8 9 10
目标值(真实分) 5.56 5.70 5.91 6.40 6.80 7.05 8.90 8.70 9.00 9.05
初始预测值(均值) 7.31 7.31 7.31 7.31 7.31 7.31 7.31 7.31 7.31 7.31
负梯度(残差 = 真实值 - 预测值) -1.75 -1.61 -1.40 -0.91 -0.51 -0.26 1.59 1.39 1.69 1.74
  • 初始预测值 7.31 是所有目标值的平均值:

    \\frac{5.56+5.70+5.91+6.40+6.80+7.05+8.90+8.70+9.00+9.05}{10} = 7.31

  • 负梯度(残差)反映了初始预测的错误:负的残差表示"预测值偏高",正的残差表示"预测值偏低"。

二、构建第一个弱学习器:找最优切分点

我们的目标是训练一个 CART 回归树,让它拟合这些残差(负梯度)。CART 树的核心是找到一个切分点,把样本分成两组,让两组内的残差波动最小(平方损失最小)

1. 切分点的选择

我们遍历所有可能的切分点(图里是 1.5, 2.5, ..., 9.5,对应样本序号的中间值),对每个切分点计算平方损失:

  • 切分点 1.5:把第 1 个样本和第 2-10 个样本分成两组。

    • 左子树(第 1 个样本):残差 -1.75 → 子树均值 -1.75
    • 右子树(第 2-10 个样本):残差 -1.61, -1.40, -0.91, -0.51, -0.26, 1.59, 1.39, 1.69, 1.74 → 子树均值 0.19
    • 平方损失:左子树损失为 0(只有一个样本,无波动),右子树损失为 15.72 → 总损失 15.72
  • 切分点 6.5:把第 1-6 个样本和第 7-10 个样本分成两组。

    • 左子树(第 1-6 个样本):残差 -1.75, -1.61, -1.40, -0.91, -0.51, -0.26 → 子树均值 -1.07
    • 右子树(第 7-10 个样本):残差 1.59, 1.39, 1.69, 1.74 → 子树均值 1.60
    • 平方损失:左子树损失 1.85 + 右子树损失 0.07 → 总损失 1.93(所有切分点中最小)
2. 最优切分点的结论

对比所有切分点的平方损失,6.5 对应的损失最小(1.93),因此我们选择 6.5 作为第一个弱学习器的切分点,构建出一棵简单的二叉树:

  • 左子叶(x ≤ 6.5):输出 -1.07(前 6 个样本的残差均值)
  • 右子叶(x > 6.5):输出 1.60(后 4 个样本的残差均值)

三、这个弱学习器的作用

这个决策树的输出是残差的修正值,它告诉我们:

  • 对于前 6 个样本(残差为负,预测值偏高),需要在初始预测值 7.31减去 1.07 (即 7.31 - 1.07 = 6.24),让预测更接近真实值。
  • 对于后 4 个样本(残差为正,预测值偏低),需要在初始预测值 7.31加上 1.60 (即 7.31 + 1.60 = 8.91),让预测更接近真实值。

叠加这个修正后,新的预测值会比初始预测更准确,这就是 GBDT"迭代修正错误"的核心逻辑。


相关推荐
先吃饱再说1 天前
判断回文字符串,从一行代码到双指针优化
算法
黄敬峰1 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术1 天前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六1 天前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术1 天前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize1 天前
初识DFS 与 BFS:递归、队列与图遍历
算法
罗西的思考2 天前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队2 天前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC3 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode