【问题标题】:Use of validation_frame in H2O AutoML在 H2O AutoML 中使用 validation_frame
【发布时间】:2020-10-01 11:19:10
【问题描述】:

刚开始使用 H2O AutoML,所以如果我错过了一些基本的东西,请提前道歉。

我有一个二元分类问题,其中数据是 K 年的观察结果。我想在 K-1 年进行训练并调整模型并根据剩余的 K 年明确选择最佳模型。

如果我关闭交叉验证(nfolds=0)以避免将年份随机混合到 N 折叠中并将 K 年的数据定义为 validation_frame,那么我没有创建集合(如预期的那样,根据文档),实际上我需要。

如果我使用交叉验证(默认 nfolds)进行训练并将验证框架定义为 K 年数据

aml = H2OAutoML(max_runtime_secs=3600, seed=1)
aml.train(x=x,y=y, training_frame=k-1_years, validation_frame=k_year)

然后根据 http://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html 验证帧被忽略 “...默认情况下,当 nfolds > 1 时,交叉验证指标将用于提前停止,因此将忽略 validation_frame。”

有没有办法仅根据 K-year 数据调整模型并选择最佳模型(集成与否),而输出中也提供模型集成?

非常感谢!

【问题讨论】:

  • 您好,相信您误会了。例如,将您的训练数据框定义为 k-2 年,将验证数据框定义为 k-1 年,将测试集定义为 k 年,您将创建集成模型。验证数据集是选择用于测试集的最佳超参数的另一种方式。
  • 感谢您的建议,但我认为在这种情况下将忽略validation_frame(根据文档)。为了确保在 validation_frame 上完成模型超参数调整,我必须明确设置 nfolds=0。这反过来意味着不会创建任何合奏。
  • 抱歉,是的,您是正确的,您需要根据文档指定 n_folds = 0 和 yes,不会创建 ensemble。但是,您可以采用的另一种方法是分别创建您的个人模型,然后创建您的自定义集成模型。见下方Python代码链接(docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/…

标签: h2o automl


【解决方案1】:

如果您正在处理时间序列(非 IID)数据,您不希望进行交叉验证 (CV),因为您不希望从未来折叠到预测过去。

我会明确添加 nfolds=0 以便在 AutoML 中禁用 CV:

aml = H2OAutoML(max_runtime_secs=3600, seed=1, nfolds=0)
aml.train(x=x,y=y, training_frame=k-1_years, validation_frame=k_year)

要拥有一个集合,请添加一个blending_frame,它也适用于时间序列。查看更多信息here

此外,因为您正在处理时间序列数据。我建议添加时间序列转换(例如滞后),以便您的模型获取前几年的信息及其聚合(例如加权移动平均线)。

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2018-01-25
    • 2021-04-30
    • 2021-08-08
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多