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

有没有一种方法可以仅基于K年的数据来调整模型并选择最佳模型(是否集成),并且输出中也可以找到模型集成?

非常感谢!

解决方法

如果您要处理时间序列(非IID)数据,则不想使用交叉验证(CV),因为您不希望从未来折衷到预测过去。

我会明确添加date = datetime.date(2020,1,13) custom_q = (date + pd.offsets.QuarterBegin(0,startingMonth=2)) print (custom_q) 2020-02-01 00:00:00 df1 = df[df['Q'] == custom_q] print (df1) Quarter Month Data Value Year Q 0 1 1 A 100 2020 2020-02-01 1 1 2 B 134 2020 2020-02-01 ,以便在AutoML中禁用CV:

nfolds=0

要具有合奏,请添加一个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) ,它也适用于时间序列。查看更多信息here

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