You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Keras LSTM的时间序列预测收敛及部分未来特征处理问题

问题1:模型方案合理性与部分已知未来特征的优化方案

你当前拆分双输入的方案是完全合理的,属于业界处理「历史全特征+未来部分已知特征」多步预测的主流落地思路之一,效果优于传统统计模型、树模型也符合预期。更优化的处理方案有两种:

  • Seq2seq带协变量结构:用LSTM作为编码器处理input_past得到历史序列的隐状态、细胞状态作为解码器的初始状态,解码器每一步预测时,输入当前时间步的已知未来特征+上一步的预测值,能更好捕捉未来特征和历史序列的时序依赖关系,比你当前直接将未来特征过全连接后拼接的方案精度更高。Keras中可以通过LSTM层的return_state参数拿到编码器的状态值,用来初始化解码器即可。
  • 特征对齐补全方案:如果待预测步长y2较短,可以直接将未来已知特征对齐到历史窗口的尾部,未知特征(包括目标变量)用占位值(如特征均值、0)填充,整体拼成单组符合LSTM要求的3维输入,损失函数仅约束目标变量的预测误差即可,实现逻辑更简单,适合快速迭代验证。

问题2:模型结果波动大的解决与生产版本选择

同配置同输入训练的结果大幅波动,90%以上的原因是没有固定训练过程的所有随机源,先按以下步骤修复:

  1. 固定所有随机种子,在代码最开头加入以下配置:
import numpy as np
import tensorflow as tf
import random
import os

SEED = 42
os.environ['PYTHONHASHSEED'] = str(SEED)
os.environ['TF_DETERMINISTIC_OPS'] = '1'
random.seed(SEED)
np.random.seed(SEED)
tf.random.set_seed(SEED)
# 启用TF算子确定性,适配GPU训练场景
tf.config.experimental.enable_op_determinism()

固定完成后,同配置同输入的训练结果应该完全一致,不会出现大幅波动。

如果需要基于多轮训练结果选择生产版本,按以下优先级筛选:

  • 优先选择时间外验证集(注意不能用随机拆分的验证集,必须是训练时间范围之后的真实数据,避免数据泄露)表现稳定在前20%,且测试集表现和验证集表现偏差不超过5%的版本,不要选择仅在测试集上表现最优的过拟合版本。
  • 若固定随机种子后仍有轻微波动,可做5~10次重复训练,要么取多轮模型的权重平均得到单一模型,要么将多轮模型的预测结果取均值输出,稳定性会大幅提升,精度损失极小。
  • 上线前必须做滚动回测:将模型放在过去36个月的历史数据上做逐窗口滚动预测,确保整体MAPE稳定在10%15%区间,没有出现单段时间误差突增的异常情况,再正式上线。

内容的提问来源于stack exchange,提问作者Heiner Hippke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:54:01