← 返回题目列表

RNN 做时间序列预测要注意什么?

中等 第 24 / 25 题 更新于 2026/09/20
循环神经网络机器学习面试题模型训练
学习 AI 实战项目

简化版

用 RNN 做时序预测时,输入窗口必须只含预测原点之前的观测,输出可为单步或多步。关键不是套 LSTM,而是正确时间切分、特征可用性、尺度处理和与季节性基线比较。

详细版

  • 滑动窗口构造要避免目标进入输入。

  • 训练/验证按时间排序,不能随机打散样本跨期。

  • 多步可递归、直接多输出或 seq2seq。

  • 归一化参数只在训练期拟合。

  • 必须与 last value、季节 naive 等强基线比较。

完整版教学

一、RNN 学的是历史状态到未来目标的映射

RNN 把可变长度历史压入 hidden state,适合非线性动态;但长期季节性未必比显式 lag 与传统模型更容易学。

多步递归把上一步预测喂回,误差会累积;直接多输出避免反馈,却为每个 horizon 学习固定输出。

因此模型结构必须与预测协议一起选择,不能在训练时做单步 teacher forcing,却用完全不同的多步闭环结果宣称泛化良好。

二、底层机制与公式

input X_t=[y_(t-L),...,y_(t-1),known_covariates]
target=[y_t,...,y_(t+H-1)]

三、带数字的推演

用过去 L=24 小时预测未来 H=6 小时。

原点 t 的输入最后一个销量只能是 y_(t-1);若标准化均值使用测试月份数据,即使窗口无未来也仍泄漏。

四、方案对比

方案/对象核心特点代价或边界
递归多步单步模型复用误差累积
Direct multi-output一次给 H 步输出维度固定
Seq2seq灵活建模 horizon训练推理复杂

五、执行流程

按原点构造窗口 -> 时间划分 -> 训练段 fit scaler -> RNN 训练
-> walk-forward 验证 -> 分 horizon/季节切片 -> 与 naive 基线比较

六、边界条件与工程代价

未来已知日历、计划价格可作为 future covariate;未来天气实际值若线上拿不到就不能离线使用。

非平稳序列需滚动重训或漂移监控,单次随机留出无法反映未来退化。

记忆钩子:时序 RNN 先画原点 t:左边才是输入,右边是 horizon。

七、常见误区与追问

  • 误区:RNN 自动解决季节性。 显式周期特征和基线仍常必要。

  • 追问:递归预测为何误差累积? 后续输入包含前一步预测而非真值。

  • 误区:窗口正确就不会泄漏。 全期 scaler 和未来协变量仍可泄漏。

  • 追问:如何评估多步? 逐 horizon 报 MAE/RMSE,并按业务权重汇总。

  • 追问:为何比较 naive? 很多稳定时序用上一值/上周期就很强。

八、加强记忆

时序 RNN 先画原点 t:左边才是输入,右边是 horizon。

窗口、scaler、协变量和验证都必须服从这条时间线。