news 2026/4/24 23:39:16

VMD滚动分解+BiLSTM多变量时序预测,防信息泄露,MATLAB代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMD滚动分解+BiLSTM多变量时序预测,防信息泄露,MATLAB代码






功能概述

该代码实现了一种基于变分模态分解(VMD)与双向长短期记忆网络(BiLSTM)的滚动多变量时间序列预测方法,专门用于防止在时间序列预测中因使用未来数据而导致的信息泄露问题。核心思想为:在预测未来每一步时,仅使用截至当前时刻的已知数据重新进行模态分解,再对每个模态分别建模预测,最后集成重构,从而保证模型的真实可用性与泛化能力。

主要功能

  • 对目标时间序列进行在线滚动 VMD 分解(随新数据到来动态更新分解结果)。
  • 为每个 VMD 分解出的本征模态函数(IMF)训练独立的 BiLSTM 网络。
  • 利用历史多变量特征(含目标变量历史值)构造滑动窗口输入,预测未来单步或多步目标值。
  • 评估模型在测试集上的 RMSE、MAE、MAPE、R² 指标,并提供丰富的可视化图表。

算法步骤与技术路线

1. 数据准备与初始划分
  • 读取 Excel 数据(data.xlsx),前四列为特征 A~D,第五列为待预测目标 E。
  • 按时间顺序划分训练集(前 70%)和测试集(后 30%),初始时仅训练集目标值对模型已知。
2. 滚动分解预测循环(逐测试点推进)

对于每一个测试点t=1,2t = 1, 2t=1,2,…\dots,NtestN_{\text{test}}Ntest

  1. VMD 分解:对当前累积已知目标序列执行 VMD,得到KKK个 IMF 分量。
  2. 模态独立建模:对每个 IMF,利用全部已知特征矩阵(包含特征列与目标历史)构造输入输出样本,训练 BiLSTM 网络,并预测未来第zimzimzim步的该模态值。
  3. 模态集成:将所有 IMF 预测值相加,得到目标变量的最终预测值。
  4. 数据集更新:将当前测试点的真实值(含所有特征与目标)追加至已知数据池,供下一轮分解与训练使用。
3. 误差评估与结果可视化
  • 计算测试集上的 RMSE、MAE、MAPE、R²。
  • 绘制预测对比曲线、回归散点图、误差直方图、最后一次 VMD 分解子图、各模态预测贡献柱状图以及功率谱密度图。

涉及公式与核心原理

变分模态分解(VMD)

VMD 将非平稳信号f(t)f(t)f(t)分解为KKK个具有稀疏中心频率的窄带 IMFuk(t)u_k(t)uk(t),求解如下约束变分问题:
min⁡{uk},{ωk}{∑k=1K∥∂t[(δ(t)+jπt)∗uk(t)]e−jωkt∥22}s.t.∑k=1Kuk=f(t) \min_{\{u_k\},\{\omega_k\}} \left\{ \sum_{k=1}^{K} \left\| \partial_t \left[ \left( \delta(t) + \frac{j}{\pi t} \right) * u_k(t) \right] e^{-j\omega_k t} \right\|_2^2 \right\} \quad \text{s.t.} \quad \sum_{k=1}^{K} u_k = f(t){uk},{ωk}min{k=1Kt[(δ(t)+πtj)uk(t)]ejωkt22}s.t.k=1Kuk=f(t)
引入二次惩罚因子α\alphaα与拉格朗日乘子λ\lambdaλ,通过交替方向乘子法(ADMM)迭代求解。

BiLSTM 预测模型

BiLSTM 包含前向和后向 LSTM 层,能够同时捕捉序列的过去与未来上下文信息(训练时未来信息已知,但预测时仅使用历史窗口输入)。代码中采用'OutputMode', 'last'仅取最后时间步的双向输出。

数据归一化

使用mapminmax将输入与输出映射至[0,1][0,1][0,1]
xnorm=x−xmin⁡xmax⁡−xmin⁡ x_{\text{norm}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}}xnorm=xmaxxminxxmin

预测误差指标
  • RMSE:1n∑i=1n(yi−y^i)2\sqrt{\frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2}n1i=1n(yiy^i)2
  • MAE:1n∑i=1n∣yi−y^i∣\frac{1}{n}\sum_{i=1}^n |y_i - \hat{y}_i|n1i=1nyiy^i
  • MAPE:1n∑i=1n∣yi−y^iyi∣×100%\frac{1}{n}\sum_{i=1}^n \left|\frac{y_i - \hat{y}_i}{y_i}\right| \times 100\%n1i=1nyiyiy^i×100%
  • R²:1−∑(yi−y^i)2∑(yi−yˉ)21 - \frac{\sum (y_i - \hat{y}_i)^2}{\sum (y_i - \bar{y})^2}1(yiyˉ)2(yiy^i)2

参数设定一览

参数名取值含义
kim4历史窗口长度(使用过去 4 步数据预测未来)
zim1预测步长(预测未来 1 步目标值)
K_imf6VMD 分解模态个数
alpha2000VMD 惩罚因子(控制带宽约束强度)
tau0噪声容忍度(通常为 0)
DC0是否保留直流分量(0 为不保留)
init1初始化方式(1 为随机初始化)
tol1e-7VMD 收敛容差
train_ratio0.7初始训练集比例
bilstm_units64BiLSTM 隐藏层单元数
max_epochs200最大训练轮数
mini_batch_size24批量大小
initial_lr1e-3初始学习率(随轮次下降)
LearnRateDropFactor0.2学习率下降因子
LearnRateDropPeriod80学习率下降周期(轮)

运行环境要求

  • 软件:MATLAB(建议 R2019b 及以上版本)
  • 数据格式:Excel 文件.xlsx,第一行为表头,数据列为连续数值型。

应用场景

该方法适用于对数据时效性要求严格、禁止未来信息泄露的中长期时间序列预测任务,典型场景包括:

  • 能源领域:电力负荷预测、风电/光伏出力预测(需逐日更新并重分解)
  • 金融工程:股票价格或波动率预测(逐笔交易不可使用未来信息)
  • 工业过程控制:传感器信号趋势预测(在线监测需滚动更新模型)
  • 气象/环境:气温、空气质量指数预报(数据实时新增)

滚动分解机制保证了模型在真实部署时能始终基于当前最新信息进行建模与预测,避免了传统一次性全局分解可能引入的未来数据污染问题。

完整代码私信VMD滚动分解+BiLSTM多变量时序预测,防信息泄露,MATLAB代码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 23:36:22

从零搭建GEO接口服务(附完整源码)| 新手友好,实操无坑

从零搭建GEO接口服务(附完整源码)| 新手友好,实操无坑前言:在地理信息开发、位置服务类项目中,GEO接口是核心基础,可实现经纬度解析、地址转坐标、两点距离计算等常用功能。很多新手面对GEO服务搭建时&…

作者头像 李华
网站建设 2026/4/24 23:31:22

2026 年 4 月电商客服外包公司避坑指南:10 家服务商真实数据对比

2026 年 4 月电商客服外包公司避坑指南:10 家服务商真实数据对比(权威实测版)2026 年,全渠道电商已全面进入存量竞争与精细化运营深水区。客服作为品牌与消费者的核心交互触点,其响应效率、服务专业度与体验一致性&…

作者头像 李华
网站建设 2026/4/24 23:27:21

从R-CNN到Mask R-CNN:目标检测与实例分割技术演进

1. 从R-CNN到Mask R-CNN:目标检测的技术演进2014年R-CNN的横空出世,第一次将深度学习引入目标检测领域。当时我在做安防监控项目,传统方法对遮挡目标的识别率还不到60%。R-CNN通过选择性搜索生成候选框,再用CNN提取特征的思路&…

作者头像 李华
网站建设 2026/4/24 23:24:53

告别HTTP超时:用深证通MR消息队列改造券商网关,实现请求平滑削峰

告别HTTP超时:用深证通MR消息队列改造券商网关,实现请求平滑削峰 在金融交易系统中,每秒数千笔的订单洪流如同潮水般涌来,而传统的HTTP/Socket接口就像一条狭窄的单车道——当早高峰来临,再宽的车道也会堵得水泄不通。…

作者头像 李华
网站建设 2026/4/24 23:24:20

如何高效管理Windows窗口缩放:Magpie系统托盘功能的完整实现方案

如何高效管理Windows窗口缩放:Magpie系统托盘功能的完整实现方案 【免费下载链接】Magpie A general-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie Magpie是一款专为Windows 10/11设计的通用窗口放大器…

作者头像 李华