从理论到实践的梯度提升(第2部分)

梯度提升的理论与实践(第2部分)

使用Scikit-Learn中的梯度提升类来解决不同的分类和回归问题

Photo by Luca Bravo on Unsplash

在本文的第一部分中,我们介绍了梯度提升算法并展示了其伪代码实现。

在本文的这一部分中,我们将探讨Scikit-Learn中实现该算法的类,讨论它们的各种参数,并演示如何使用它们来解决几个分类和回归问题。

虽然XGBoost库(将在未来的文章中介绍)提供了一个更优化和高度可扩展的梯度提升实现,但对于小到VoAGI大小的数据集,通常更容易使用Scikit-Learn中的梯度提升类,其具有更简单的接口和更少的可调超参数。

Scikit-Learn中的梯度提升

Scikit-Learn提供了以下实现梯度提升决策树(GBDT)模型的类:

  1. GradientBoostingClassifier 用于分类问题。
  2. GradientBoostingRegressor 用于回归问题。

除了决策树的标准参数,如标准参数,如准则、最大深度(默认为3)和最小样本拆分,这些类还提供以下参数:

  1. loss — 要优化的损失函数。在GradientBoostingClassifier中,该函数可以是’log_loss’(默认)或’exponential’(使梯度提升行为类似于AdaBoost算法)。在GradientBoostingRegressor中,该函数可以是’squared_loss’(默认)、’absolute_loss’、’huber’或’quantile’。
  2. n_estimators — 提升迭代次数(默认为100)。
  3. learning_rate — 缩小每棵树的贡献的因子(默认为0.1)。
  4. subsample — 用于训练每棵树的样本比例(默认为1.0)。
  5. max_features — 在每个节点搜索最佳拆分时要考虑的特征数量。选项是指定整数用于…