2026/4/1 6:15:52
网站建设
项目流程
做软件的声称发现网站漏洞,免费网络电视app,中国建设银行北京分行网站,wordpress 博客 安装教程XGBoost 全称是 Extreme Gradient Boosting#xff0c;翻译过来是极端梯度提升树。它是 GBDT#xff08;梯度提升树#xff09;的升级版#xff0c;在工业界和竞赛中被称为 “大杀器”—— 因为它效果好、速度快、泛化能力强#xff0c;上手门槛也不算高。
还是用学生成绩…XGBoost 全称是Extreme Gradient Boosting翻译过来是极端梯度提升树。它是GBDT梯度提升树的升级版在工业界和竞赛中被称为 “大杀器”—— 因为它效果好、速度快、泛化能力强上手门槛也不算高。还是用学生成绩预测的例子从 “和 GBDT 的关系”“核心优化点”“生成过程” 三个维度用大白话讲明白。一、先搞懂XGBoost 和 GBDT 的关系GBDT串行生成多棵回归树每棵树都用来拟合前一轮模型的残差最终累加所有树的结果。XGBoost 就是在 GBDT 的基础上做了4 个关键 “升级”让模型变得更 “猛”拟合更精准不仅用残差一阶信息还用到了残差的 “变化趋势”二阶信息不易过拟合加入了专门的 “防复杂” 惩罚项速度更快支持特征并行训练效率大幅提升更贴心自动处理缺失值不用手动填充。打个比方GBDT 像一个认真的纠错员每次只盯着 “上次错了多少” 来改XGBoost 像一个聪明的纠错专家不仅看 “错了多少”还看 “错误会怎么变”同时避免自己 “钻牛角尖”过拟合。二、XGBoost 的核心优化点大白话版这部分是 XGBoost 的灵魂不用公式只讲 “优化带来的好处”。1. 加了 “正则化”防止模型 “学太细”GBDT 训练树的时候只追求 “残差拟合得越准越好”容易生成枝叶繁多的复杂树过拟合—— 比如为了一个异常学生的成绩专门加一个分支。XGBoost 在目标函数里加了2 个惩罚项惩罚树的叶子节点数量叶子越多惩罚越重惩罚叶子节点的预测值预测值的绝对值越大惩罚越重。好处强迫模型生成 “简洁树”在 “拟合数据” 和 “模型简单” 之间找平衡泛化能力更强。2. 用了 “二阶泰勒展开”拟合残差更精准GBDT 拟合的是残差真实值 - 预测值这其实是损失函数的一阶导数信息。XGBoost 更进一步用了损失函数的一阶 二阶导数信息相当于不仅知道 “错了多少”还知道 “错误的变化速度”。好处对残差的拟合更精准模型预测误差更小。3. 支持 “特征并行”训练速度飞起来GBDT 训练时特征处理是串行的—— 一个特征一个特征地计算划分效果。XGBoost 可以并行处理特征在训练前对所有特征的取值进行排序并缓存后续划分树的时候直接用缓存数据。好处尤其是特征数量多的时候训练速度比 GBDT 快很多。4. 自动处理 “缺失值”不用手动填数据现实中的数据经常有缺失比如某个学生的 “作业完成率” 没记录GBDT 需要手动填充比如填均值、中位数。XGBoost 会自动学习缺失值的最优划分方向训练时它会尝试把缺失值分到左子树或右子树看哪种划分效果更好然后记住这个规则。好处省去了缺失值处理的麻烦还能得到更合理的划分结果。三、XGBoost 生成过程二分类任务—— 5 名学生及格预测以5 名学生的二分类数据集为例完整拆解 XGBoost 生成每一棵 CART 回归树的全过程包含公式推导、数值计算、最优划分选择、模型更新所有关键步骤零基础也能看懂。一、前置准备1. 数据集二分类1 及格0 不及格样本编号特征 1学习时长小时 / 天x1特征 2作业完成率%x2标签 y1 及格0 不及格11300224003360144801559012. 核心超参数简化计算树的数量 M2演示 2 轮迭代学习率 η0.1控制单棵树的贡献正则化参数λ1叶子权重惩罚、γ0叶子节点数惩罚简化计算3. XGBoost 核心公式二阶泰勒展开二、XGBoost 生成全过程迭代 2 轮步骤 1初始化初始模型 f0(x)二分类任务的初始模型是正例占比的对数几率让初始损失最小初始模型对所有样本的输出都是 f0(x)0.4055。步骤 2第一轮迭代生成第 1 棵树 h1(x)子步骤 2.1计算一阶 / 二阶导数 、逐个样本计算样本编号yiσ(f0)giσ−yihiσ⋅(1−σ)100.60.6−00.60.6×0.40.24200.60.6−00.60.24310.60.6−1−0.40.24410.60.6−1−0.40.24510.60.6−1−0.40.24最终导数集合g[0.6,0.6,−0.4,−0.4,−0.4], h[0.24,0.24,0.24,0.24,0.24]子步骤 2.2遍历所有特征 阈值计算目标函数 Obj选最优划分XGBoost 是二叉树对每个特征的取值排序后取相邻值中点作为候选阈值计算划分后的 ObjObj 越小划分效果越好。1针对特征 1学习时长 x1阈值 2.5关键最优划分其他阈值对比仅示例无需全算阈值 1.5Obj≈−0.237比 - 0.905 大效果差阈值 3.5Obj≈−0.402比 - 0.905 大效果差2针对特征 2作业完成率 x2x2 取值排序[30,40,60,80,90] → 候选阈值25、35、50、70、85。阈值 50 时划分结果与 x12.5 完全一致样本 1、2 为左叶子样本 3-5 为右叶子Obj≈−0.905。子步骤 2.3确定最优划分 计算叶子权重最优划分选 x12.5或 x250划分规则x1≤2.5 → 左叶子x12.5 → 右叶子。左叶子权重w1−0.4811.2≈−0.811 右叶子权重w2−0.721−1.2≈0.698第 1 棵树 h1(x) 的预测值样本编号12345h1(xi)-0.811-0.8110.6980.6980.698子步骤 2.4更新模型 f1(x)代入 η0.1样本编号f0(xi)η⋅h1(xi)f1(xi)f0η⋅h110.40550.1×(−0.811)−0.08110.4055−0.0811≈0.324420.4055-0.08110.324430.40550.1×0.6980.06980.40550.0698≈0.475340.40550.06980.475350.40550.06980.4753步骤 3第二轮迭代生成第 2 棵树 h2(x)子步骤 3.1重新计算一阶 / 二阶导数 、基于更新后的模型 f1(x)先计算 σ(f1(xi))Sigmoid 函数样本编号f1(xi)σ(f1)1e−f11yigiσ−yihiσ⋅(1−σ)10.3244≈0.58000.5800.580×0.420≈0.243620.3244≈0.58000.5800.243630.4753≈0.6171-0.3830.617×0.383≈0.236340.4753≈0.6171-0.3830.236350.4753≈0.6171-0.3830.2363子步骤 3.2重复 “最优划分 叶子权重” 计算遍历特征和阈值后最优划分仍为 x12.5划分结果不变计算得左叶子权重 w1≈−0.75右叶子权重 w2≈0.65第 2 棵树 h2(x) 预测值[−0.75,−0.75,0.65,0.65,0.65]子步骤 3.3更新最终模型 f2(x)样本编号f1(xi)η⋅h2(xi)f2(xi)10.3244-0.0750.249420.3244-0.0750.249430.47530.0650.540340.47530.0650.540350.47530.0650.5403步骤 4最终预测二分类概率转换将模型输出 f2(x) 代入 Sigmoid 函数转为 0~1 概率阈值 0.5样本编号f2(xi)σ(f2)1e−f21预测结果≥0.5 及格10.2494≈0.562实际≈0.560.5 更合理此处因迭代轮数少及格错误20.2494≈0.562及格错误30.5403≈0.632及格正确40.5403≈0.632及格正确50.5403≈0.632及格正确三、核心总结1. XGBoost 生成核心步骤二分类初始化计算初始对数几率 f0(x)迭代生成每棵树计算损失函数的一阶 / 二阶导数 、替代 GBDT 的残差遍历所有特征 阈值计算带正则化的目标函数 Obj选最优划分计算叶子节点权重生成当前树用学习率更新模型预测模型输出经 Sigmoid 转换为概率按阈值判断类别。2. 关键差异对比 GBDTXGBoost 用一阶 二阶导数指导划分比 GBDT 的 “残差” 更精准目标函数加入正则化项、避免过拟合划分时同时考虑 “拟合效果” 和 “树复杂度”生成更稳健的树。3. 数值计算核心导数 gi 反映 “模型需要修正的方向”hi 反映 “修正的难度”叶子权重 wj 是 “当前划分下最优的修正值”学习率 η 控制每棵树的贡献防止单棵树主导预测。