#第一性原理 Extreme Gradient Boosting(每一步都计算损失函数的梯度,指导下一棵树往哪个方向去纠正错误) [[决策树]]就是类似于用纹不纹身来判断一个人是不是好女孩,价值观太单一了,用 xgboost 搞多棵树,逐步补充自己判断失误的地方 单棵[[决策树]]就像是用一个过于简单的标准来判断,比如"纹身=不好"这种非黑即白的思维。这样显然是有偏见且不准确的: 你对决策树的理解非常准确: **决策树** 的本质思想就是: > 每次选取一个特征,以该特征进行划分,目标是**使数据的不确定性(熵或基尼系数)减少得最多**。 --- # XGBoost 是什么? XGBoost(eXtreme Gradient Boosting)本质上是一个**基于决策树的集成算法**。它属于 **Boosting(提升)** 类算法,也就是通过迭代的方式,不断地加入新的决策树,逐渐降低模型的预测误差。 通俗点来说,XGBoost **不是一棵树,而是许多颗决策树的组合**。每棵新加入的树都是在努力修正之前所有树的不足或错误(残差),进而实现精准预测。 --- # 🌳 XGBoost 具体怎么运作? ## 第一步:构建初始树 - 一开始,我们用一个非常简单的树(甚至可能是一个常数)去预测结果。 - 由于这个树很简单,预测的误差比较大。 ## 第二步:计算残差(误差) - 用真实值减去预测值,得到每个样本的**残差**。 - 例如: ```Java 真实房价:500万 预测房价:400万(初始树预测) 残差 = 500 - 400 = 100万 ``` ## 第三步:针对残差再建树 - 我们再建立第二棵树,专门来预测刚刚计算的残差。 - 也就是说,第二棵树的目标是尽可能预测准确第一棵树预测不了的部分。 ## 第四步:迭代不断优化 - 继续重复计算残差、构建新树,依次进行下去。 - 每次加入的新树都在努力减少上一轮的误差,最终预测变得非常精准。 最终的预测结果,就是所有树预测的结果累加起来的。 --- # ⚙️ XGBoost 与传统决策树的区别 |特征|传统决策树|XGBoost| |---|---|---| |结构|单棵树|多棵树组合(Boosting)| |目标|每次最大熵减|每次构建的树降低前面树预测的残差| |树的规模|通常较大且复杂|通常较小且较简单(避免过拟合)| |性能|容易过拟合|更不容易过拟合,泛化能力更强| --- # 🚀 XGBoost 为什么强? XGBoost 能获得出色性能的原因: 1. **树的组合** 每颗树的误差被后一棵树修正,误差不断降低。 2. **梯度下降优化** XGBoost 使用了类似于梯度下降的思想,不断逼近真实值。 3. **正则化控制** 树的生长会受到严格的约束,比如树的深度、叶子节点权重限制,避免过拟合。 4. **高效计算** XGBoost对计算进行了高效优化,能快速处理大量数据。 --- # 📌 总结 **XGBoost = 决策树 + Boosting思想 + 梯度下降 + 正则化。** 每颗树都为修正前面的错误而生,最终实现精准预测,是一种性能优异的模型,被广泛用于各大机器学习比赛和实际业务中。 - 可能有纹身的是艺术家 - 没纹身的也可能是不好的人 - 纹身的大小、位置、内容都没考虑 而 XGBoost 的思路就是: 1. 第一棵树用"纹身"特征分类,发现预测错了一批艺术家 2. 第二棵树就专门学习"职业"特征,来纠正对艺术家的误判 3. 第三棵树可能会看"教育背景" 4. 第四棵树再看"兴趣爱好" ... 通过这种方式,模型逐步: - 纠正偏见 - 考虑更多维度 - 形成更全面的判断 就像人的成长一样,从最初的简单判断,通过不断学习和纠正,逐渐形成更成熟、更包容的认知。 这也说明了为什么在机器学习中,单一的简单模型往往不如集成模型表现好 - 因为现实世界太复杂了,需要从多个角度去理解和判断。 ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2025%2F01%2F24%2F16-46-21-dac5f273d7c5066d91f3a109486250bc-202501241646992-812b50.png)