scikit-learn GradientBoostingRegressor的'init'参数是否定义基本估计量?

问题描述

我正在尝试创建一个确定的回归器的集合,考虑到这一点,我在寻找某种方法来使用sklearn已经存在的集合方法,并尝试更改该集合的基本估计量。套袋文档很清楚,因为它说您可以通过将回归变量作为参数传递给“ base_estimator”来更改基本估计量,但是使用GradientBoosting可以在“ init”参数中传递回归变量。

我的问题是:将我的回归变量传递给GradientBoosting的init参数,是否将使用我指定为基本估计量的回归变量而不是树?该文档说init值必须是“用于计算初始预测的估计器对象”,所以我不知道我将在init中传递的估计器实际上是否将用作弱化学习者的增强对象可以通过Bosting方法进行操作,也可以只在开始时使用,之后再由决策树完成所有工作。

解决方法

GradientBoostingRegressor只能使用回归树作为基本估计量;来自docs(重点是我):

在每个阶段都适合回归树

正如相关的Github thread中所指出的那样(本特·里尼格(HT)在下面的评论中指出):

实施完全依赖于基本估计量为树的假设

为了增强仲裁基准回归器(类似于装袋),您需要AdaBoostRegressor,与装袋类似,它也需要一个base_estimator参数。但是在这样做之前,您可能希望先看看Execution time of AdaBoost with SVM base classifier中的答案;引用:

使用决策树作为基本分类器(更具体地说,决策树桩,即深度仅为1的DT),构想了Adaboost(和类似的集成方法);有充分的理由说明为什么今天仍然存在,如果您未明确指定base_classifier参数,则该参数将假定值为DecisionTreeClassifier(max_depth=1)。 DT很适合此类集合,因为它们本质上是不稳定分类器,而SVM则不是这种分类器,因此,在用作基本分类器时,预计不会提供太多。