关于H2O AutoML全数据集训练及时间序列建模的技术咨询
H2O AutoML 技术问题解答
问题1:参数设置下的交叉验证与模型拟合逻辑
- 交叉验证仅在
training_frame(你的train集)上执行,leaderboard_frame(test集)仅用于给训练好的模型做评分排名,完全不参与任何训练过程,包括交叉验证和模型拟合。 - H2O AutoML默认会在通过交叉验证选出最优模型后,自动使用全量训练集重新拟合该模型,这个最终模型就是AutoML输出的
leader模型,可通过aml@leader调用。
问题2:无leaderboard_frame时的最终模型训练逻辑
即使不指定leaderboard_frame,AutoML依然会基于交叉验证选出的最优模型(包含对应的超参数),自动用全量训练集重新训练得到最终的leader模型。此时leaderboard上的分数为交叉验证的平均分数。
问题3:Kaggle时间序列竞赛(6月预测)的AutoML全量建模方案
针对10年小时级数据、月份影响显著的6月预测场景,可按以下步骤操作:
- 强化时间特征工程
- 提取核心时间特征:月份、日期、小时、星期几、节假日标记,重点构建6月专属交互特征(如
月份=6与小时/星期的交叉特征)。 - 加入时间序列统计特征:滑动窗口统计(过去24小时/7天的均值、方差、极值)、历年6月同期的均值/中位数特征(如过去10年每年6月同一小时的平均数值)、趋势特征(前N个时间步的线性拟合斜率)。
- 提取核心时间特征:月份、日期、小时、星期几、节假日标记,重点构建6月专属交互特征(如
- 时间感知的建模设置
- 采用时间序列交叉验证:设置
nfolds(比如5-10),同时指定fold_assignment = "Time"或自定义时间折叠(按年份划分,确保训练集时间早于验证集),避免数据泄露。 - 指定竞赛对应的
sort_metric(如MAE、RMSE),让AutoML优先优化该指标。 - 可选将历年6月数据单独作为
leaderboard_frame,让AutoML基于6月数据的评分排序模型,优先选择对6月拟合效果好的模型。 - 用
max_runtime_secs或max_models控制训练成本,保证覆盖主流算法(除你排除的XGBoost)。
- 采用时间序列交叉验证:设置
问题4:7月专属模型的数据划分与AutoML适配
- 无需剔除训练集中的7月数据,保留历年7月数据能让模型学习到7月特有的模式(如季节性规律)。
- 数据集划分
- 训练集:全量历史数据(含历年7月),严格保持时间顺序,不打乱。
- 验证集:选择最近1-2年的7月数据,将其设为
leaderboard_frame,让AutoML优先优化7月的预测效果。
- 交叉验证设置
- 采用时间序列交叉验证:可按年份划分fold,每个fold的训练集为该年份之前的所有数据,验证集为该年份的7月数据;也可自定义
fold_col列,标记每个年份的7月为验证fold,其余时间为对应fold的训练数据,设置fold_column = fold_col。
- 采用时间序列交叉验证:可按年份划分fold,每个fold的训练集为该年份之前的所有数据,验证集为该年份的7月数据;也可自定义
- AutoML参数适配
- 设置
leaderboard_frame为7月专属验证集,让leaderboard基于7月评分排序。 - 开启
keep_cross_validation_predictions = TRUE,便于查看各模型在7月fold上的表现。 - 指定竞赛要求的
sort_metric,确保模型优化方向符合竞赛规则。
- 设置
内容的提问来源于stack exchange,提问作者Cem
相关产品推荐
相关产品推荐

