【问题标题】:Ensembling in h2o - missing models在 h2o 中集成 - 缺少模型
【发布时间】:2018-05-26 07:46:19
【问题描述】:

我正在使用 h2o 包从具有不同正则化参数(alpha、lambda)的 GLM 模型构建一个集成。当我尝试按照文档构建合奏时:

ensemble <- h2o.stackedEnsemble(x = predictors,
                                y = response,
                                training_frame = train,
                                model_id = "ensemble",
                                base_models = list(glm_grid@model_ids)) 

其中glm_grid@model_ids 是来自网格搜索的模型,以确定 GLM 的最佳 alphalambda 正则化参数。我收到以下错误:

When creating a StackedEnsemble you must specify one or more models; 24 were specified but none of those were found: [list("glm_grid_model_6", glm_grid_model_11, glm_grid_model_7, glm_grid_model_9, glm_grid_model_2, glm_grid_model_21, glm_grid_model_15, glm_grid_model_0"]

你知道问题出在哪里吗?

编辑:我尝试遵循文档并使用与该文档类似的代码:

gbm_grid <- h2o.grid(algorithm = "gbm",
                     grid_id = "gbm_grid_binomial",
                     x = x,
                     y = y,
                     training_frame = train,
                     ntrees = 10,
                     seed = 1,
                     nfolds = nfolds,
                     fold_assignment = "Modulo",
                     keep_cross_validation_predictions = TRUE,
                     hyper_params = hyper_params,
                     search_criteria = search_criteria)

# Train a stacked ensemble using the GBM grid
ensemble <- h2o.stackedEnsemble(x = x,
                                y = y,
                                training_frame = train,
                                model_id = "ensemble_gbm_grid_binomial",
                                base_models = gbm_grid@model_ids)

根据@Erin LeDell,我删除了额外的list(),它现在可以工作了。但是,我最终想做的是使用来自各种模型的网格,例如:

ensemble <- h2o.stackedEnsemble(x = x,
                                y = y,
                                training_frame = train,
                                model_id = "my_ensemble_binomial",
                                base_models = list(my_gbm, my_rf))

EDIT2:

通过使用解决它:

model_list <- as.list(c(glm_grid_1@model_ids,
                        glm_grid_2@model_ids))


ensemble <- h2o.stackedEnsemble(x = predictors,
                                y = response,
                                training_frame = train,
                                model_id = "ensemble1231",
                                base_models = model_list)

【问题讨论】:

  • 请贴出用于创建glm_grid的代码,以及list(glm_grid@model_ids)的结果。此外,您报告的错误消息中的引号 (") 似乎存在问题

标签: r machine-learning glm h2o ensemble-learning


【解决方案1】:

你有一个额外的 list() 包裹在 glm_grid@model_ids 周围,你在这里不需要,这可能是错误的根源。 glm_grid@model_ids 对象已经是一个列表。改为这样做:

ensemble <- h2o.stackedEnsemble(x = predictors,
                                y = response,
                                training_frame = train,
                                model_id = "ensemble",
                                base_models = glm_grid@model_ids) 

有关更多信息,请参阅 R 示例 here

【讨论】:

  • 我尝试过类似于this,但它不起作用。
  • 如果您认为我的回答是正确的,您能接受吗?谢谢。
猜你喜欢
  • 2020-08-05
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
相关资源
最近更新 更多