别再死记公式了!用Excel手动画一棵GBDT回归树,彻底搞懂梯度提升

发布时间:2026/5/16 23:20:25

别再死记公式了!用Excel手动画一棵GBDT回归树,彻底搞懂梯度提升 用Excel手把手教你构建GBDT回归树从残差计算到预测实战很多人在学习GBDT时会被复杂的数学公式吓退但其实这个算法的核心思想可以用简单的加减乘除来理解。想象一下你正在教一个孩子投篮第一次他投得太偏右了你让他下次往左调整一点第二次又偏低了你再建议他抬高一点——这就是GBDT的基本逻辑通过不断修正前一次的错误来逼近正确答案。下面我将用Excel表格带你一步步实现这个修正过程完全避开数学公式的困扰。1. 准备工作理解GBDT的核心组件GBDTGradient Boosting Decision Tree由两个关键部分组成决策树和梯度提升。我们可以这样类比决策树就像一系列的是非判断题年龄大于30岁吗体重超过70kg吗通过这些问题将人群分成不同小组梯度提升每次新建一棵树都是为了纠正前一棵树预测的错误专业术语叫残差在Excel中实现时我们需要准备以下要素数据表格包含特征列如年龄、体重和标签列如身高计算列用于存储每棵树的预测值和残差分裂点评估表记录每个可能分裂点的误差值提示建议使用Excel的数据验证功能创建下拉菜单方便选择不同的分裂点进行评估2. 初始预测建立基准线GBDT的第一步是做一个最笨的预测——对所有样本预测相同的值。这个值怎么选通常取所有标签的平均值。在我们的身高预测例子中假设数据如下初始预测值为(1.11.31.71.8)/41.475编号年龄体重(kg)真实身高(m)初始预测15401.11.47527601.31.475321701.71.475430601.81.475接下来我们计算每个样本的残差真实值-预测值残差 真实身高 - 初始预测在Excel中添加残差列用简单减法公式即可完成编号真实身高(m)初始预测残差11.11.475B2-C221.31.475B3-C3............3. 构建第一棵回归树学习残差模式现在我们要用这些残差作为新的学习目标构建第一棵决策树。关键步骤是选择最佳分裂点遍历每个特征的每个可能值找到使误差最小的分裂方式计算叶节点值每个终节点的预测值取该节点样本残差的平均值3.1 寻找最佳分裂点在Excel中创建分裂点评估表分裂特征分裂值左节点样本右节点样本左节点残差均值右节点残差均值总平方误差年龄5-1,2,3,4-平均值(D2:D5)计算误差年龄712,3,4D2平均值(D3:D5)........................计算总平方误差的公式为SUMXMY2(左节点实际残差,左节点预测均值)SUMXMY2(右节点实际残差,右节点预测均值)通过比较所有可能分裂点的总误差我们选择误差最小的那个。假设我们发现体重≤45kg是最佳分裂点。3.2 构建树结构并预测根据最佳分裂点构建第一棵树第一层分裂体重≤45kg是进入左节点样本1否进入右节点样本2,3,4对右节点继续分裂例如按年龄≤25年龄≤25样本2,3年龄25样本4最终每个叶节点的预测值为该节点残差的平均值叶节点包含样本预测值左1样本1-0.375右1样本2,3AVERAGE(D3,D4)右2样本4D54. 更新预测集成第一棵树的结果现在我们将第一棵树的预测结果加到初始预测上公式为新预测 初始预测 学习率 × 树预测值假设学习率设为0.1更新预测表编号初始预测树1预测更新后预测11.475-0.375C2 0.1*D221.475-0.175C3 0.1*D3............然后计算新的残差新残差 真实值 - 更新后预测5. 迭代构建更多树持续修正误差重复上述过程构建第二棵树用新的残差作为学习目标寻找最佳分裂点构建树结构更新预测值通常我们会设置迭代次数如5轮每轮都专注于修正前一轮留下的残差。在Excel中可以为每棵树创建单独的工作表使用前一个工作表的残差作为当前工作表的学习目标保持相同的分裂点评估流程经过多轮迭代后最终预测是所有树预测的加权和最终预测 初始预测 学习率×(树1预测树2预测...树n预测)6. 预测新样本走完所有决策路径当有新样本需要预测时如年龄25体重65kg从初始预测值开始1.475让样本走过每棵树根据特征值选择分裂路径记录每棵树的叶节点预测值汇总所有树的贡献初始预测 学习率×∑(单棵树预测值)在Excel中可以用VLOOKUP或IF函数实现自动路径选择。例如IF(体重45, 左分支, IF(年龄25, 右分支A, 右分支B))7. 关键技巧与常见问题7.1 学习率调整学习率(η)控制每棵树的贡献程度η较大如0.5学习快但可能不稳定η较小如0.05需要更多树但更精确在Excel中可以通过调节这个参数观察预测效果变化。7.2 停止条件迭代何时停止常见标准残差足够小达到预设的树数量验证集误差开始上升可以设置条件格式标记残差列当所有残差绝对值0.01时停止。7.3 特征重要性评估通过统计各特征被选为分裂点的次数和误差减少量可以评估特征重要性。在Excel中记录每棵树的分裂特征计算每个特征带来的误差减少总和用条形图可视化比较8. 从Excel到Python概念迁移理解Excel实现后过渡到Python就很简单了。主要对应关系Excel操作Python代码计算残差residual y - y_pred寻找最佳分裂点DecisionTreeRegressor的split方法多棵树集成GradientBoostingRegressor学习率调整learning_rate参数例如用sklearn实现相同逻辑from sklearn.ensemble import GradientBoostingRegressor # 准备数据 X [[5,40], [7,60], [21,70], [30,60]] y [1.1, 1.3, 1.7, 1.8] # 训练GBDT模型 model GradientBoostingRegressor(n_estimators5, learning_rate0.1, max_depth3) model.fit(X, y) # 预测新样本 print(model.predict([[25, 65]])) # 输出 ≈1.567通过这种从Excel到代码的渐进式学习你会发现那些看似复杂的机器学习算法核心思想往往出奇地简单。我在教学过程中发现很多原本对公式恐惧的学生在亲手用Excel构建几棵树后都能建立起直观理解。记住好的学习不是记住公式而是培养对算法行为的直觉。

相关新闻