CEEMDAN +组合预测模型(Transformer - BiLSTM + ARIMA)

ops/2024/10/20 13:41:43/

 往期精彩内容:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较

全是干货 | 数据集、学习资料、建模资源分享!

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(一)EMD-CSDN博客

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(二)EEMD

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD-CSDN博客

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(四)CEEMD-CSDN博客

EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客

拒绝信息泄露!VMD滚动分解 + Informer-BiLSTM并行预测模型-CSDN博客

风速预测(一)数据集介绍和预处理_风速数据在哪里下载-CSDN博客

风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客

风速预测(三)EMD-LSTM-Attention模型-CSDN博客

风速预测(四)基于Pytorch的EMD-Transformer模型-CSDN博客

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型-CSDN博客

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型-CSDN博客

CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)-CSDN博客

前言

本文基于前期介绍的风速数据(文末附数据集),介绍一种综合应用完备集合经验模态分解CEEMDAN与混合预测模型(Transformer - BiLSTM + ARIMA)的方法,以提高时间序列数据的预测性能。该方法的核心是使用CEEMDAN算法对时间序列进行分解,接着利用Transformer - BiLSTM模型和ARIMA模型对分解后的数据进行建模,最终通过集成方法结合两者的预测结果。

风速数据集的详细介绍可以参考下文:

风速预测(一)数据集介绍和预处理_风速数据在哪里下载-CSDN博客

1 风速数据CEEMDAN分解与可视化

1.1 导入数据

1.2 CEEMDAN分解

根据分解结果看,CEEMDAN一共分解出11个分量,我们大致把前7个高频分量作为Transformer - BiLSTM模型的输入进行预测,后4个低频分量作为ARIMA模型的输入进行预测。

2 数据集制作与预处理

划分数据集,按照8:2划分训练集和测试集, 然后再按照前7后4划分分量数据

在处理LSTF问题时,选择合适的窗口大小(window size)是非常关键的。选择合适的窗口大小可以帮助模型更好地捕捉时间序列中的模式和特征,为了提取序列中更长的依赖建模,本文把窗口大小提升到24,运用CCEMDAN-Transformer - BiLSTM模型来充分提取前7个分量序列中的特征信息。

分批保存数据,用于不同模型的预测

3 基于CEEMADN的 Transformer - BiLSTM 模型预测

3.1 定义CEEMDAN-Transformer - BiLSTM预测模型

注意:

  • 输入维度为7,维度7维代表前7个分量

  • 输入形状为 torch.Size([64, 7, 48])

  • 在PyTorch中,transformer模型的性能与batch_first参数的设置相关,当batch_first为True时,输入的形状应为(batch, sequence, feature),这种设置在某些情况下可以提高推理性能。

在使用Transformer模型中的多头注意力时,输入维度必须能够被num_heads(注意力头的数量)整除。因为在多头注意力机制中,输入的嵌入向量会被分成多个头,每个头的维度是embed_dim / num_heads,因此embed_dim必须能够被num_heads整除,以确保能够均匀地分配给每个注意力头。

因为此时分解分量为7个,可以事先适当改变分量个数,或者对信号进行堆叠,使调整多头注意力头数能够与之对应整除的关系。本文采用对序列进行对半切分堆叠,使输入形状为[64, 14, 12]。

3.2 设置参数,训练模型

100个epoch,MSE 为0.00638,Transformer - BiLSTM预测效果良好,适当调整模型参数,还可以进一步提高模型预测表现。

注意调整参数:

  • 可以适当增加Transformer层数和隐藏层的维度,微调学习率;

  • 调整BiLSTM层数和维度数,增加更多的 epoch (注意防止过拟合)

  • 可以改变滑动窗口长度(设置合适的窗口长度)

保存训练结果和预测数据,以便和后面ARIMA模型的结果相组合。

4 基于ARIMA的模型预测

传统时序模型(ARIMA等模型)教程如下:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较_时序预测:lstm、arima、holt-winters、sarima模型的分析与比较-CSDN博客

数据加载,训练数据、测试数据分组,四个分量,划分四个数据集

4.1 介绍一个分量预测过程(其他分量类似)

第一步,单位根检验和差分处理

第二步,模型识别,采用AIC指标进行参数选择

第三步,模型预测

第四步,模型评估

保存预测的数据,其他分量预测与上述过程一致,保留最后模型结果即可。

5 结果可视化和模型评估

组合预测,加载各模型的预测结果

5.1 结果可视化

5.2 模型评估

由分量预测结果可见,前7个分量在Transformer - BiLSTM预测模型下拟合效果良好,分量9在ARIMA模型的预测下,拟合程度比较好,其他低频分量拟合效果弱一点,调整参数可增强拟合效果。

6  代码、数据整理如下:


http://www.ppmy.cn/ops/126993.html

相关文章

滚雪球学Redis[5.2讲]:Redis持久化优化深度解析:RDB与AOF的策略选择与实践

全文目录: 🚦前言📦5.2 Redis的持久化优化⚙️5.2.1 Redis持久化的背景与重要性🔧5.2.2 RDB与AOF的优化策略💡RDB持久化优化建议💡AOF持久化优化建议 🔄5.2.3 磁盘I/O性能的影响与优化&#x1f…

数字化转型的难度是什么?

数字化转型的难度,不仅仅是技术层面的更迭,更是企业文化、组织架构、运营流程乃至员工心态的全面重塑。在这个过程中,我们往往会遇到以下几个维度的难题: 1. 许多企业在数字化转型的过程中,只重视技术的应用和实施&am…

MySQL 安装与配置详细教程

MySQL 安装与配置详细教程 MySQL 是一款流行的关系型数据库管理系统,广泛应用于 Web 应用和应用程序中。在本文中,我们将提供一份详细的 MySQL 安装与配置教程,帮助初学者快速上手。 ## 1. 安装 MySQL 首先,我们需要从 MySQL 官…

C#连接Oracle数据库的方法

C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)-CSDN博客 .NET连接Oracle数据库踩过的坑 1 常用数据库访问类 一般来说,C#连接Oracle数据库,我们通常会通过封装好的dll调用,目前常用的有三个: (1&a…

navicat 3730错误

Navicat 3730 错误通常是由于在执行 SQL 语句时出现了语法错误或者其他问题导致的。具体来说,这个错误通常出现在 Navicat 尝试解析 SQL 语句时发现无法识别的语法或结构错误。 解决步骤 检查 SQL 语句的语法: 确保 SQL 语句语法正确无误。逐条执行 SQL…

子数组的最大异或和

LintCode 炼码 - 更高效的学习体验&#xff01; 子数组的最大异或和_牛客题霸_牛客网 算法&#xff1a;最大子数组异或和_异或值最大的子数组-CSDN博客 #include <iostream> #include <limits> #include <new> #include <vector> using namespace st…

Linux学习笔记9 文件系统的基础

一、查看文件组织结构 Linux中一切都是文件。 Linux和Win的文件系统不是一个结构&#xff0c;Linux存在的根目录是所有目录的起点。 所有的存储空间和设备共享一个根目录&#xff0c;不同的磁盘块和分区挂载在其下&#xff0c;成为某个子目录的子目录&#xff0c;甚至设备也挂…

【Linux】< 条件变量等待>解决< 线程饥饿问题 >——【多线程同步问题】

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…