基于GRU与Informer混合架构的时间序列预测,主要用于处理多变量时间序列的短期预测任务,已更新到Python机器学习/深度学习程序全家桶

代码实现了一个基于GRU与Informer混合架构的时间序列预测,主要用于处理多变量时间序列的短期预测任务。


1. 研究背景

时间序列预测在金融、能源、气象、交通等领域具有广泛应用。传统模型如ARIMA难以捕捉长程依赖,而Transformer类模型(如Informer)虽然能有效建模时序依赖,但在处理高噪声、短序列时仍存在挑战。为提升预测精度与稳定性,本系统引入GRU(门控循环单元)Informer的混合结构,利用GRU对局部时序信息进行建模,再通过Informer的自注意力机制捕捉全局依赖,从而实现更鲁棒的短期预测。


2. 主要功能

  • 多变量时间序列预测:支持多个外生变量输入,预测目标变量(默认最后一列为目标列)。
  • 短期预测:适用于预测未来少量时间点的任务。
  • 模型混合:结合GRU与Informer,在编码阶段融合两种特征。
  • 训练与评估:支持训练集/验证集划分、早停法、学习率自适应调整,并提供R²、MSE、RMSE、MAE、MAPE等评估指标。
  • 数据预处理:自动进行时间特征编码与归一化。

3. 算法步骤

  1. 数据加载与预处理

    • 读取CSV文件,提取目标变量与时间戳。
    • 使用time_features生成时间特征(如小时、星期等)。
    • 对数据进行归一化(MinMaxScaler),并按比例划分为训练集与测试集。
  2. 构建样本

    • 通过滑动窗口生成输入序列(x)与目标序列(y)。
    • 同时生成对应的时间特征序列。
  3. 模型构建

    • GRU模块:对原始序列提取局部时序特征。
    • Informer模块:包含编码器(ProbAttention)与解码器,用于捕捉全局依赖。
    • 特征融合:将GRU输出与Informer编码器输出相加,输入解码器。
  4. 训练过程

    • 使用MSE损失函数,Adam优化器,学习率动态调整(ReduceLROnPlateau)。
    • 支持早停机制,防止过拟合。
  5. 预测与评估

    • 在测试集上进行预测,反归一化后与真实值对比。
    • 计算多项评价指标,并绘制预测结果对比图。

4. 技术路线

  • 混合架构设计

    将GRU与Informer并行或串行融合,增强对局部与全局模式的学习能力。

  • 注意力机制

    Informer中的ProbAttention通过稀疏注意力降低复杂度,适合长序列,但本场景中主要用于短期预测,仍能提升精度。

  • 时间特征嵌入

    使用time_features将时间戳编码为向量,与数值特征共同输入模型,增强时序认知能力。

  • 归一化策略

    采用RevIN-like结构(在StandardNorm.py中实现)对输入进行归一化,并在输出时恢复,提升模型稳定性。


5. 公式原理(核心部分)

(1)GRU单元

GRU通过更新门与重置门控制信息流动:

zt=σ(Wz⋅[ht−1,xt]) z_t = \sigma(W_z \cdot [h_{t-1}, x_t]) zt=σ(Wz⋅[ht−1,xt])
rt=σ(Wr⋅[ht−1,xt]) r_t = \sigma(W_r \cdot [h_{t-1}, x_t]) rt=σ(Wr⋅[ht−1,xt])
h~t=tanh⁡(W⋅[rt⊙ht−1,xt]) \tilde{h}t = \tanh(W \cdot [r_t \odot h{t-1}, x_t]) h~t=tanh(W⋅[rt⊙ht−1,xt])
ht=(1−zt)⊙ht−1+zt⊙h~t h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t ht=(1−zt)⊙ht−1+zt⊙h~t

(2)Informer注意力机制(ProbAttention)

为降低自注意力复杂度,只选择"活跃"的查询向量进行点积计算,其稀疏性度量基于KL散度近似:

Mˉ(qi,K)=max⁡jqikjTd−1LK∑j=1LKqikjTd \bar{M}(q_i, K) = \max_j \frac{q_i k_j^T}{\sqrt{d}} - \frac{1}{L_K} \sum_{j=1}^{L_K} \frac{q_i k_j^T}{\sqrt{d}} Mˉ(qi,K)=jmaxd qikjT−LK1j=1∑LKd qikjT

(3)损失函数

采用均方误差:

L=1N∑i=1N(yi−y^i)2 \mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 L=N1i=1∑N(yi−y^i)2


6. 参数设定(示例)

参数 说明
window 20 输入序列长度
pred_len 1 预测长度
d_model 64 模型隐藏维度
n_heads 4 多头注意力头数
e_layers 2 编码器层数
d_layers 1 解码器层数
dropout 0.1 正则化丢弃率
batch_size 64 批次大小
learning_rate 0.0001 初始学习率
early_stop_ratio 0.2 早停比例

7. 运行环境

  • Python 3.7+
  • PyTorch 1.10+
  • 依赖库:numpy, pandas, matplotlib, scikit-learn, timm, einops, reformer_pytorch
  • 支持GPU(CUDA)加速

8. 应用场景

  • 金融预测:股票价格、交易量短期预测
  • 能源管理:电力负荷、光伏发电功率预测
  • 交通流量预测:路段车流量短期预估
  • 工业运维:设备传感器数据趋势预测
  • 气象预测:温度、湿度等短期变化

总结

该代码实现了一个融合GRU与Informer的短期多变量时间序列预测模型,具备完整的训练、验证、评估流程,结构清晰,易于扩展至其他时序任务。通过混合架构,兼顾局部时序建模与全局依赖捕捉,适用于对预测精度要求较高的场景。

完整代码私信回复基于GRU与Informer混合架构的时间序列预测,主要用于处理多变量时间序列的短期预测任务,已更新到Python机器学习/深度学习程序全家桶

相关推荐
Sgf2272 小时前
第7章 文件操作
服务器·开发语言·数据库·python
进击的小头2 小时前
第19篇:多个PI控制器串联控制系统设计与参数整定调试实战
python·算法
章鱼丸-2 小时前
DAY36 复习日@浙大疏锦行
python
学习指针路上的小学渣2 小时前
Selenium笔记
python·selenium
SunnyDays10112 小时前
使用 Python 在 Excel 中应用数据验证:详细指南
python·excel·数据验证
Jelena157795857922 小时前
1688.item_get_app接口:包装尺寸重量信息深度解析
开发语言·前端·python
用户8356290780512 小时前
使用 Python 精准控制 Word 段落格式
后端·python
NULIWEIMENXIANG2 小时前
ArcPy 程序调用 QGIS 进程实现几何拓扑检查
python·arcgis·gis
rookie软工2 小时前
Qt代理委托实现
开发语言·python·qt