时序预测 | 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

相关推荐
渣渣苏11 小时前
NLP从入门到精通
ai·大模型·nlp·lstm·transform
范桂飓11 小时前
人工智能发展史 — RNN/LSTM/GRU/Transformer 序列模型发展历程
人工智能·rnn·lstm
盼小辉丶12 小时前
PyTorch实战(16)——基于LSTM实现音乐生成
pytorch·深度学习·lstm·生成模型
斯外戈的小白1 天前
【NLP】LSTM架构
人工智能·自然语言处理·lstm
非著名架构师2 天前
当AI气象大模型成为新质生产力:如何用“会思考的气象体”重构企业生产排程?
神经网络·lstm·transformer·高精度气象数据·风光高精度功率预测
鹿角片ljp3 天前
基于 BiLSTM 的中文文本相似度计算项目实现
python·nlp·lstm
像风一样自由20204 天前
LSTM-KNN融合模型:让AI既有记忆又会“查字典“
人工智能·rnn·lstm
CClaris6 天前
手撕 LSTM:用 NumPy 从零实现 LSTM 前向传播
人工智能·numpy·lstm
fantasy_arch6 天前
LSTM和DenseNet区别
人工智能·rnn·lstm
Dev7z7 天前
基于粒子群优化的LSTM时间序列预测模型研究
人工智能·机器学习·lstm