【问题标题】:does the 'init' parameter of scikit-learn GradientBoostingRegressor define the base estimator?scikit-learn GradientBoostingRegressor 的“init”参数是否定义了基本估计量?
【发布时间】:2021-01-02 07:30:25
【问题描述】:

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

我的问题是:在 GradientBoosting 的 init 参数中传递我的回归器,会使其使用我指定为基本估计器而不是树的回归器吗?文档说初始化值必须是“一个用于计算初始预测的估计器对象”,所以我不知道我将传入 init 的估计器是否实际上用作要增强的弱学习器通过bosting方法,或者它只是在开始时使用,之后所有的工作都由决策树完成。

【问题讨论】:

    标签: machine-learning scikit-learn regression ensemble-learning


    【解决方案1】:

    GradientBoostingRegressor 只能使用回归树作为基础估计量;来自docs(强调我的):

    在每个阶段都有一个回归树适合

    正如相关Github thread 中指出的那样(HT 致 Ben Reiniger 在下面的评论中指出这一点):

    实现完全依赖于基本估计器是树的假设

    为了提高仲裁基回归量(类似于 bagging),您需要 AdaBoostRegressor,这与 bagging 类似,也需要一个 base_estimator 参数。但在此之前,您可能想在Execution time of AdaBoost with SVM base classifier 中查看自己的答案;引用:

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

    猜你喜欢
    • 2020-09-25
    • 2019-08-18
    • 1970-01-01
    • 2015-02-15
    • 2018-04-05
    • 2018-08-29
    • 1970-01-01
    • 2013-06-04
    • 2021-08-17
    相关资源
    最近更新 更多