【问题标题】:Stacking of different models (including rf, glm) in h2o (R)在 h2o (R) 中堆叠不同模型(包括 rf、glm)
【发布时间】:2018-07-22 20:41:56
【问题描述】:

我对 R 中的 h2o.stackedEnsemble 有疑问。当我尝试从 GLM 模型(或任何其他模型和 GLM)创建集成时,我收到以下错误:

DistributedException from localhost/127.0.0.1:54321: 'null', caused by java.lang.NullPointerException

DistributedException from localhost/127.0.0.1:54321: 'null', caused by java.lang.NullPointerException
    at water.MRTask.getResult(MRTask.java:478)
    at water.MRTask.getResult(MRTask.java:486)
    at water.MRTask.doAll(MRTask.java:390)
    at water.MRTask.doAll(MRTask.java:396)
    at hex.StackedEnsembleModel.predictScoreImpl(StackedEnsembleModel.java:123)
    at hex.StackedEnsembleModel.doScoreMetricsOneFrame(StackedEnsembleModel.java:194)
    at hex.StackedEnsembleModel.doScoreOrCopyMetrics(StackedEnsembleModel.java:206)
    at hex.ensemble.StackedEnsemble$StackedEnsembleDriver.computeMetaLearner(StackedEnsemble.java:302)
    at hex.ensemble.StackedEnsemble$StackedEnsembleDriver.computeImpl(StackedEnsemble.java:231)
    at hex.ModelBuilder$Driver.compute2(ModelBuilder.java:206)
    at water.H2O$H2OCountedCompleter.compute(H2O.java:1263)
    at jsr166y.CountedCompleter.exec(CountedCompleter.java:468)
    at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263)
    at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
    at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477)
    at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: java.lang.NullPointerException

Error: DistributedException from localhost/127.0.0.1:54321: 'null', caused by java.lang.NullPointerException

当我堆叠任何其他模型时不会发生该错误,仅在 GLM 中出现。当然,我使用相同的折叠进行交叉验证。

一些用于训练模型和集成的示例代码:

glm_grid <- h2o.grid(algorithm = "glm",
                     family = 'binomial',
                     grid_id = "glm_grid",
                     x = predictors,
                     y = response,
                     seed = 1,
                     fold_column = "fold_assignment",
                     training_frame = train_h2o,
                     keep_cross_validation_predictions = TRUE,
                     hyper_params = list(alpha = seq(0, 1, 0.05)),
                     lambda_search = TRUE,
                     search_criteria = search_criteria,
                     balance_classes = TRUE,
                     early_stopping = TRUE)

glm <- h2o.getGrid("glm_grid",
                  sort_by="auc",
                  decreasing=TRUE)

ensemble <- h2o.stackedEnsemble(x = predictors,
                                y = response,
                                training_frame = train_h2o,
                                model_id = "ens_1",
                                base_models = glm@model_ids[1:5])

【问题讨论】:

    标签: java r h2o ensemble-learning


    【解决方案1】:

    这是一个错误,您可以跟踪修复here 的进度(这应该会在下一个版本中修复,但它可能会更早修复并在每晚发布的版本中可用)。

    我打算建议在循环中训练 GLM 或应用函数(而不是使用 h2o.grid())作为临时解决方法,但不幸的是,同样的错误发生了。

    【讨论】:

    • H2O 在 GLM 中不支持 balance_classes = TRUE。我会删除它 - 这将有助于解决 NPE。
    • 删除 balance_classes = TRUE 似乎解决了我的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2021-06-08
    • 2015-11-13
    • 2018-09-21
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多