趋近智
XGBoost 采用形式化的正则化 (regularization)方法,这使其区别于许多传统梯度提升算法。不同于 Scikit-Learn 的 GradientBoostingClassifier 等方法通常通过 max_depth 和 subsample 等超参数 (parameter) (hyperparameter)来控制过拟合 (overfitting),XGBoost 将正则化直接整合到其目标函数中。这种整合使得算法能够在树构建过程的每一步对模型复杂程度进行惩罚,从而得到泛化能力更强的模型。
正如章节介绍中提到的,XGBoost 目标函数由两部分组成:损失函数 (loss function)和正则化项。
第一部分 用于衡量实际目标值 与预测值 之间的差异。第二部分 是正则化项,它对集成模型中每棵树 的结构复杂程度进行惩罚。接下来,我们来仔细分析一下这个正则化项。
XGBoost 中的正则化 (regularization)项 定义为:
这个公式可能看起来有些复杂,但它由一些简单的部分构成,这些部分控制着树结构的不同方面。
接下来我们看看这些组成部分如何帮助防止过拟合 (overfitting)。
第一项 直接处理树中叶子节点的数量。叶子节点多的树结构更复杂,更容易拟合训练数据中的噪声。gamma 超参数 (parameter) (hyperparameter)(在 XGBoost 库中通常称为 min_split_loss)设定了添加新分割点的阈值。
当 XGBoost 评估一个潜在的分割点时,它会计算该分割点能带来的损失函数 (loss function)降低量。只有当这个损失降低量大于 gamma 值时,该分割点才会被接受。
gamma 值(例如 0)意味着没有惩罚,算法会在每次损失降低时进行节点分裂,这可能导致过拟合 (overfitting)。gamma 值使得算法更为保守。它要求损失有显著降低才会创建新分支,从而在树生长时有效地进行剪枝。这提供了一种更有原则的方式来控制树的大小,而不是简单地通过 max_depth 设置一个硬性限制。
正则化公式中的另外两项关注于叶子节点的权重 (weight) 。这些权重是每个弱学习器对最终预测贡献的实际值。如果这些值非常大,则表示单棵树有很强的影响力,使得模型对训练数据中的微小变化敏感。
项 是 L2 正则化惩罚,类似于岭回归中使用的形式。它惩罚叶子节点权重的平方大小。
lambda 超参数 (parameter) (hyperparameter)控制此惩罚的强度。默认值为 1,提供适度的正则化。增加 lambda 会使模型更趋于保守。项 是 L1 正则化惩罚,类似于 Lasso 回归。它惩罚权重的绝对值。
lambda 常用,但在需要更稀疏模型的场景中它很有用。alpha 超参数控制此惩罚的强度。默认值为 0,这意味着除非指定一个值,否则它不会被应用。下图展示了这些正则化惩罚在一个简单决策树上的应用位置。
这棵树的总结构复杂程度惩罚是施加于叶子节点数量 (T=3) 的 gamma 惩罚与施加于每个叶子节点权重 (-0.2, 0.3, 0.15) 的 L1/L2 惩罚之和。
通过将这些惩罚直接集成到目标函数中,XGBoost 在拟合训练数据和保持模型简单、泛化能力强之间取得了更明智的平衡。这种内置的防止过拟合 (overfitting)机制是其在比赛和生产系统中都非常有效和受欢迎的主要原因。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•