首页 > 解决方案 > 在 H2O AutoML 中使用 validation_frame

问题描述

刚开始使用 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,validation_frame 被忽略“......默认情况下,当nfolds> 1时,交叉验证指标将用于提前停止,因此validation_frame 将被忽略。”

有没有办法仅根据 K 年数据来调整模型并选择最好的模型(无论是否集成),而模型的集成也可以在输出中使用?

非常感谢!

标签: h2oautoml

解决方案


如果您正在处理时间序列(非 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也适用于时间序列的。在此处查看更多信息。

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


推荐阅读