时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

目录

    • [时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比](#时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比)

效果一览





基本介绍

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比。

1.MATLAB实现EEMD-LSTM、LSTM时间序列预测对比;

2.时间序列预测 就是先eemd把原输入全分解变成很多维作为输入 再输入LSTM预测 ;

3.运行环境Matlab2018b及以上,输出RMSE、MAPE、MAE等多指标对比,

先运行main1_eemd_test,进行eemd分解;再运行main2_lstm、main3_eemd_lstm;再运行main4_compare,两个模型对比。

模型搭建

EEMD-LSTM和LSTM集合是两种用于时间序列预测的方法,它们结合了经验模态分解 (Empirical Mode Decomposition, EMD) 和长短期记忆神经网络 (Long Short-Term Memory, LSTM)。这两种方法都具有一定的优势和适用场景,下面对它们进行对比。

EEMD-LSTM:

EEMD是一种数据分解方法,通过将时间序列分解成多个固有模态函数 (Intrinsic Mode Functions, IMF) 和一个剩余项,将非线性和非平稳的时间序列转化为多个平稳的子序列。

EEMD能够将时间序列的相关信息提取到不同的IMF中,每个IMF代表了时间序列中的不同频率成分。

LSTM是一种适用于序列数据的循环神经网络,能够捕捉长期依赖关系,适用于处理时间序列数据。

EEMD-LSTM的基本思路是将原始时间序列通过EEMD进行分解,然后将每个IMF作为LSTM的输入,利用LSTM模型对每个IMF进行预测,最后将预测结果合并得到最终的预测结果。通过构建多个独立的LSTM模型,每个模型都有不同的初始化条件和参数设置。每个LSTM模型都会对时间序列进行训练和预测,最后将它们的预测结果进行综合,例如通过平均或加权平均的方式得到最终的预测结果。优势在于通过建立多个模型,可以利用不同的初始化条件和参数组合,增加了模型的多样性,提高了整体的预测准确性。

对比:EEMD-LSTM利用EEMD将时间序列分解成不同频率的子序列,然后利用LSTM对每个子序列进行预测,最后将预测结果合并。这种方法能够更好地处理非线性和非平稳的时间序列,能够提取出不同频率成分的信息。然而,EEMD的分解过程可能会引入一些噪声,并且需要额外的计算步骤。

LSTM集合通过构建多个LSTM模型,利用不同的初始化条件和参数组合,增加了模型的多样性,提高了预测准确性。这种方法相对简单,不需要进行数据分解,适用于一般的时间序列预测任务。

程序设计

clike 复制代码
%% 创建混合LSTM网络架构
% 输入特征维度
numFeatures  = f_;
% 输出特征维度
numResponses = 1;
FiltZise = 10;
%  创建"LSTM"模型
    layers = [...
        % 输入特征
        sequenceInputLayer([numFeatures 1 1],'Name','input')
        sequenceFoldingLayer('Name','fold')
        % LSTM特征学习
        lstmLayer(50,'Name','lstm1','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        % LSTM输出
        lstmLayer(optVars.NumOfUnits,'OutputMode',"last",'Name','bil4','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        dropoutLayer(0.25,'Name','drop3')
        % 全连接层
        fullyConnectedLayer(numResponses,'Name','fc')
        regressionLayer('Name','output')    ];

    layers = layerGraph(layers);
    layers = connectLayers(layers,'fold/miniBatchSize','unfold/miniBatchSize');

%% LSTM训练选项
% 批处理样本
MiniBatchSize =128;
% 最大迭代次数
MaxEpochs = 500;
    options = trainingOptions( 'adam', ...
        'MaxEpochs',500, ...
        'GradientThreshold',1, ...
        'InitialLearnRate',optVars.InitialLearnRate, ...
        'LearnRateSchedule','piecewise', ...
        'LearnRateDropPeriod',400, ...
        'LearnRateDropFactor',0.2, ...
        'L2Regularization',optVars.L2Regularization,...
        'Verbose',false, ...
        'Plots','none');

%% 训练混合网络
net = trainNetwork(XrTrain,YrTrain,layers,options);

参考资料

1\] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502 \[2\] https://blog.csdn.net/kjm13182345320/article/details/128690229

相关推荐
addaduvyhup6 小时前
【RNN-LSTM-GRU】第三篇 LSTM门控机制详解:告别梯度消失,让神经网络拥有长期记忆
rnn·gru·lstm
软件算法开发1 天前
基于LSTM深度学习的网络流量测量算法matlab仿真
深度学习·matlab·lstm·网络流量测量
vvilkim1 天前
PyTorch 中的循环神经网络 (RNN/LSTM):时序数据处理实战指南
pytorch·rnn·lstm
THMAIL1 天前
机器学习从入门到精通 - 循环神经网络(RNN)与LSTM:时序数据预测圣经
人工智能·python·rnn·算法·机器学习·逻辑回归·lstm
THMAIL2 天前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
Gyoku Mint2 天前
NLP×第六卷:她给记忆加了筛子——LSTM与GRU的贴靠机制
人工智能·深度学习·神经网络·语言模型·自然语言处理·gru·lstm
addaduvyhup3 天前
【RNN-LSTM-GRU】第一篇 序列建模基础:理解数据的“顺序”之力
rnn·gru·lstm
addaduvyhup3 天前
【RNN-LSTM-GRU】第二篇 序列模型原理深度剖析:从RNN到LSTM与GRU
rnn·gru·lstm
简简单单做算法7 天前
基于GA遗传优化的双向LSTM融合多头注意力(BiLSTM-MATT)时间序列预测算法matlab仿真
人工智能·matlab·时间序列预测·bilstm·ga遗传优化·bilstm-matt·多头注意力
2202_7567496912 天前
自然处理语言NLP: 基于双分支 LSTM 的酒店评论情感分析模型构建与实现
人工智能·自然语言处理·lstm