趋近智
标准梯度提升算法迭代地将新树拟合到模型当前预测的伪残差上。然而,这种方法容易出现过拟合 (overfitting),特别是当单个树被允许生长得较深或进行很多次提升迭代时。为了解决这个问题,引入随机性是提高机器学习 (machine learning)模型稳定性和泛化能力的一种常见策略。类似的概念也可以有效地应用于梯度提升,这种变体通常被称为随机梯度提升 (SGB),由 Friedman 首次提出。
SGB 不使用整个训练数据集来计算伪残差并拟合每个新的基础学习器 (树),而是在每次迭代中通过对数据进行抽样来引入随机性。这种修改主要有两个目的:通过降低方差来改善泛化能力,并且可能加快计算速度。
在 GBM 框架中,抽样有两种主要的实现方式:
这是与术语“随机梯度提升”最常见的关联形式。在拟合每棵新树 之前,会不放回地随机选择一部分训练实例(行)。假设所选比例是 (在 Scikit-learn 等库中通常由名为 subsample 的参数 (parameter)控制)。仅使用 样本的这个子集来:
未选择实例的伪残差不直接用于拟合第 棵树。
影响:
subsample 参数的常见范围是 0.5 到 0.8 之间。将 subsample 设置为 1.0 会恢复原始的确定性 GBM 算法用于行选择。使用小于 1.0 的值会引入随机性。比例过小可能会阻碍学习过程,增加偏差或需要显著更多的树。
随机梯度提升中的行抽样。在每次迭代 (m, m+1, ...) 中,都使用训练实例的一个不同随机子集来计算残差并拟合下一棵树。
除了对行进行抽样,我们在构建每棵树时还可以对特征(列)进行抽样。这类似于随机森林中常用的特征抽样。在每个节点找到最佳分割之前(或有时,每棵树只执行一次),会考虑一个随机的特征子集。
在 Scikit-learn 的 GradientBoostingClassifier 和 GradientBoostingRegressor 中,这由 max_features 参数 (parameter)控制。
影响:
max_features 参数通常可以设置为:
max_features * n_features 个特征。使用 max_features=None 或 max_features=n_features 意味着所有特征都会被考虑,禁用列抽样。
行抽样和列抽样并非相互排斥;它们可以一起使用。将它们组合提供了一个强大的正则化 (regularization)机制,并且可以进一步提高计算效率。例如,将 subsample 设置为 0.8 且 max_features 设置为 0.8 意味着每棵树都使用 80% 的行构建,并在寻找分割时考虑 80% 的特征。
这些方法将确定性 GBM 转换为随机算法。虽然在优化过程中引入随机性可能看起来反直觉,但它通常使模型对未见过的数据表现出更好的泛化能力,这通过防止过拟合 (overfitting)并在提升过程中考察更多不同类型的基础学习器来实现。subsample 和 max_features 都成为模型开发过程中重要的超参数 (parameter) (hyperparameter),需要调整,以及学习率 (learning_rate) 和树复杂度参数 (max_depth, min_samples_split 等)。这些参数之间的关系很重要;例如,较低的抽样率可能需要更多的提升迭代 (n_estimators) 或对学习率进行调整。
这部分内容有帮助吗?
GradientBoostingClassifier和GradientBoostingRegressor的subsample和max_features参数的实践细节和解释。© 2026 ApX Machine Learning用心打造