多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测

多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测

目录

    • 多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测
      • 基本介绍
      • 模型特点
      • 程序设计
      • 参考资料

基本介绍

本次运行测试环境MATLAB2020b,MATLAB实现CNN-BiLSTM多变量时间序列预测。

模型特点

深度学习使用分布式的分层特征表示方法自动提取数据中的从最低层到最高层固有的抽象特征和隐藏不变结构. 为了充分利用单个模型的优点并提高预测性能, 现已提出了许多组合模型。构建基于卷积神经网络(Convolutional Neural Network,CNN)和双向长短期记忆(Bidirectional Long Short-Term Memory,BiLSTM)的混合模型(CNN-BiLSTM)进行棉花产量预估,提高时间维度和空间维度方面的特征提取能力。 近年来,深度学习方法凭借其自动学习并提取特征的能力,在机器视觉、自然语言处理等领域取得了巨大突破,在遥感影像处理方面也得到广泛应用。在时间特征提取方面,双向长短期记忆(BidirectionalLong Short Term Memory,BiLSTM)网络通过双向重叠计算,弥补了长短期记忆(Long Short-Term Memory,LSTM)网络无法同时提取从后向前的信息的不足,可以更好的捕捉双向的时序特征,在时序数据分析中取得了更为显著的效果[18-20]。但BiLSTM 网络在表达数据的空间维度特征方面适用性较差,难以充分挖掘数据的空间特性。为此,本研究提出了一种基于卷积神经网络(Convolutional Neural Network,CNN)和BiLSTM 网络串行结构的棉花估产模型,以棉花苗期、蕾期和花期的影像为输入,将CNN 网络在空间特征提取的优势与LSTM 网络在时序特征提取的优势相结合,充分利用其空间和时间两个方面的联系,增强模型的数据挖掘能力,以实现农田尺度的棉花产量预测。

多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测_第1张图片

  • 本研究提出的CNN-BiLSTM 模型结构主要由CNN模块、BiLSTM 模块和输出模块3 部分。CNN 结构的第一部分是卷积层,进行卷积运算提取局部空间特征。
  • BiLSTM 网络的主体隐藏层结构是在LSTM 网络的基础上由正向输入运算的LSTM 网络和反向输入运算的LSTM 网络上下叠加构成,在保留了LSTM 单元结构特点的同时,更加关注时序数据的前后关联性,确保时序特征的提取。
  • CNN-BiLSTM 模型的输出模块由全连接神经网络组成,网络输入向量包含CNN 提取的空间特征和BiLSTM网络提取的时序特征,其隐藏层数量为1,神经元个数为500,激活函数为ReLU,最终输出为估产结果。

程序设计

  • 完整程序和数据下载:MATLAB实现CNN-BiLSTM多变量时间序列预测
% CNN-BiLSTM多变量时间序列预测
% 数据集 列为特征,行为样本数目
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
clc
clear
load Train.mat
%
Train(1,:) =[];
y = Train.demand;
x = Train{:,3:end};
[xnorm,xopt] = mapminmax(x',0,1);
[ynorm,yopt] = mapminmax(y',0,1);
x = x';
k = 24;           % 滞后长度
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 转换成4-D image
for i = 1:length(ynorm)-k

    Train_xNorm{i} = reshape(xnorm(:,i:i+k-1),6,1,1,k);
    Train_yNorm(i) = ynorm(i+k-1);
end
Train_yNorm= Train_yNorm';
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%--------------------------------------------------------------------------
load Test.mat
Test(1,:) =[];
ytest = Test.demand;
xtest = Test{:,3:end};
[xtestnorm] = mapminmax('apply', xtest',xopt);
[ytestnorm] = mapminmax('apply',ytest',yopt);
xtest = xtest';
for i = 1:length(ytestnorm)-k
    Test_xNorm{i} = reshape(xtestnorm(:,i:i+k-1),6,1,1,k);
    Test_yNorm(i) = ytestnorm(i+k-1);
    Test_y(i) = ytest(i+k-1);
end
Test_yNorm = Test_yNorm';
  • 相关预测

多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测_第2张图片
多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测_第3张图片
多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测_第4张图片
多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测_第5张图片
多维时序 | MATLAB实现CNN-BiLSTM多变量时间序列预测_第6张图片

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127313031?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128011037?spm=1001.2014.3001.5502

你可能感兴趣的:(时间序列,CNN-BiLSTM,多变量时间序列,时间序列预测)