问题描述
我正在尝试创建一个确定的回归器的集合,考虑到这一点,我在寻找某种方法来使用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则不是这种分类器,因此,在用作基本分类器时,预计不会提供太多。