回归预测 | Matlab实现BiGRU-Attention多变量回归预测

发布于:2025-09-14 ⋅ 阅读:(16) ⋅ 点赞:(0)

该代码实现了一个基于双向GRU(BiGRU)与自注意力机制(Self-Attention)的回归预测模型,用于对时间序列或结构化数据进行预测。以下是代码的详细分析:


一、主要功能

使用双向GRU + 自注意力机制构建深度学习模型,对输入数据进行回归预测,评估其在训练集和测试集上的性能,并可视化预测结果。


二、逻辑关联

  1. 数据准备:导入数据、划分训练集与测试集、归一化处理、数据平铺与格式转换。
  2. 模型构建:使用双向GRU提取正向与反向序列特征,引入自注意力机制增强关键信息捕捉能力。
  3. 模型训练:使用Adam优化器进行训练,支持学习率衰减和批量训练。
  4. 预测与评估:对训练集和测试集进行预测,反归一化后计算多种评估指标(R²、RMSE、MAE、MAPE、MBE、MSE)。
  5. 结果可视化:绘制预测对比图、线性拟合图、误差分析图。

三、算法步骤

  1. 导入数据并随机打乱;
  2. 按比例划分训练集和测试集;
  3. 数据归一化(mapminmax);
  4. 数据平铺与格式转换(适用于序列输入);
  5. 构建包含双向GRU和自注意力层的网络;
  6. 设置训练选项并训练网络;
  7. 进行预测并反归一化;
  8. 计算评估指标并可视化结果。

四、技术路线

  • 深度学习框架:MATLAB Deep Learning Toolbox
  • 网络结构:BiGRU + Self-Attention + Fully Connected
  • 优化算法:Adam with piecewise learning rate decay
  • 评估指标:R², RMSE, MAE, MAPE, MBE, MSE
  • 可视化:预测曲线、拟合散点图、误差分析图

五、公式原理

1. GRU 单元公式(门控循环单元)

[
\begin{aligned}
z_t &= \sigma(W_z \cdot [h_{t-1}, x_t]) \
r_t &= \sigma(W_r \cdot [h_{t-1}, x_t]) \
\tilde{h}t &= \tanh(W \cdot [r_t \odot h{t-1}, x_t]) \
h_t &= (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t
\end{aligned}
]

2. 自注意力机制(Self-Attention)

[
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
]
其中 ( Q, K, V ) 分别由输入序列通过线性变换得到。

3. 评估指标公式(以RMSE为例)

[
\text{RMSE} = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2}
]


六、参数设定

参数名 取值 说明
num_size 0.7 训练集比例
outdim 1 输出维度
numHiddenUnits 40 GRU隐藏单元数
MiniBatchSize 30 批大小
MaxEpochs 800 最大训练轮数
InitialLearnRate 0.01 初始学习率
LearnRateDropFactor 0.5 学习率衰减因子
LearnRateDropPeriod 800 学习率衰减周期

七、运行环境

  • 软件:MATLAB R2021a 或更高版本(需Deep Learning Toolbox)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码获取私信回复Matlab实现BiGRU-Attention多变量回归预测


网站公告

今日签到

点亮在社区的每一天
去签到