当前位置: 首页 > news >正文

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代码

http://www.jsqmd.com/news/695074/

相关文章:

  • mermaid初体验
  • 放弃数据分析转Java开发:一个双非硕士的岗位选择与避坑思考
  • Office Custom UI Editor:重新定义你的Office工作界面,效率提升50%不是梦!
  • 如何在PUBG中实现完美压枪?罗技鼠标宏终极教程指南
  • 甜品店亏损怎么自救?从赔钱到赚钱的3个狠招-佛山鼎策创局破局增长咨询
  • Human IgE一步法ELISA试剂盒如何拓展临床应用边界?
  • 5分钟搞定TouchDesigner实时人体姿态追踪:MediaPipe插件终极指南
  • 从零搭建GEO接口服务(附完整源码)| 新手友好,实操无坑
  • 《AI大模型应用开发实战从入门到精通共60篇》004、Hugging Face入门:模型库、数据集与Tokenizers快速上手
  • 基于微信小程序的茶馆连锁(预约+茶叶茶具商城)系统小程序设计与实现
  • 别再为破洞和缝隙头疼了!用CGAL的Stitch功能一键缝合网格边界
  • 理解Hive
  • 别再只画PCA了!用mixOmics给你的多组学文章加点高级可视化(网络图、双标图、热图一键生成)
  • 为什么你的 Reels 越做越没人看?Instagram 算法正在惩罚这类内容 - SocialEcho社媒管理
  • 3分钟让你的Mac变身专业KTV:LyricsX桌面歌词体验指南
  • 【国家药监局UDI校验强制新规倒计时】:VSCode实时校验模板已开源,错过将影响三类器械注册申报
  • 为什么你的Windows效率工具还在说英文?PowerToys-CN汉化项目深度解析
  • Qt右键菜单不弹?别急,先检查这个属性(setContextMenuPolicy详解)
  • Cadence IC617与Calibre 2019在Ubuntu 20.04上的避坑安装与集成指南
  • 【Linux系统】Shell命令运行及其原理
  • 建行广东江门分行:数字人民币场景应用引领校园金融数字化新风尚
  • DAN-F10N-00B,标准精度双频GNSS天线模块,实现城市环境米级精准定位与简易集成
  • 别再写SFINAE了!C++26反射驱动的零成本抽象重构:4类高频元编程模式迁移路径+编译时间压缩至1/5实录
  • 2026 年出海品牌社媒基准:你的竞争对手都在用什么策略 - SocialEcho社媒管理
  • 简单的拖拉拽功能
  • 别再乱连了!Altium Designer里Net Label、Port、Sheet Entry到底怎么选?一张图帮你理清
  • 从‘网红脸’到‘可控艺术’:用StyleGAN系列玩转人脸编辑的保姆级避坑指南
  • Python处理图片:用Pillow保存JPEG/PNG时,如何平衡‘体积’与‘画质’?一份实测指南
  • Docker部署vLLM大模型推理服务全攻略(2026年4月实测)
  • 时序数据库选型指南:我们是怎么评估和选型的