时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测

时序预测 | MATLAB实CNN-GRU(卷积门控循环单元)时间序列预测

目录

    • 时序预测 | MATLAB实CNN-GRU(卷积门控循环单元)时间序列预测
      • 基本介绍
      • 研究回顾
      • 模型结构
      • 程序设计
      • 学习总结
      • 参考资料
      • 致谢

基本介绍

本次运行测试环境MATLAB2020b

  • 提出了一种基于卷积神经网络(Convolutional Neural Network,
    CNN)和门控循环单元(Gated Recurrent Unit,GRU)神经网络的混合预测模型。
  • 该模型首先采用CNN提取特征向量,然后利用GRU神经网络学习特征动态变化规律进行股指预测。仿真结果表明,与GRU神经网络、长短时记忆(Long-Short-Term Memory,LSTM)神经网
    络和CNN相比,该模型能够挖掘历史数据中蕴含的信息,有效提高预测的准确率。

研究回顾

  • 机器学习法之一的神经网络算法凭借其良好的非线性处理能力得到了广泛应用。黄宏运等人利用遗传算法优化反向传播(Back Propagation,BP)神经网络的初始权阈值,解决了BP 神经网络在预测过程中容易陷入局部最小值、收敛速度慢等问题。
  • 潘和平等人提出了一种由经验模态分解、主成分分析和前馈神经网络三部分组成的预测模型,该模型能有效提高预测的准确率。随着深度学习的发展,众多学者尝试将其应用到预测研究中。
  • Luca 等人提出了一种小波和CNN相结合的模型。
  • Qin 等人提出了一种基于双阶段注意力的循环神经网络模型,该模型能够自适应地提取相关输入特征进行预测。
  • Fischer 等人将LSTM神经网络应用于预测,LSTM预测性能优于随机森林、逻辑回归分类器和深度神经网络。陈佳等人提出了基于特征选取和LSTM神经网络的模型,该方法提升了预测的速度和准确率。
  • 针对数据大规模、非线性等特点,本文研究了一种结合CNN和GRU神经网络的混合模型对股指进行单步预测。一方面,利用CNN强大的特征提取能力,挖掘数据之间的内在联系,从而降低原始数据的规模和复杂度;另一方面,通过GRU神经网络的时序记忆能力,学习股指数据内部动态变化规律,建立输入与输出之间的非线性关系。在本文的后半部分,为了验证算法的有效性和普适性,借鉴统计试验法的思想对构建的模型进行了多次运行仿真。仿真结果表明,本文设计的预测模型具有较高的预测准确率,且具备一定的普遍适用性。

模型结构

时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第1张图片时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第2张图片
时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第3张图片

程序设计

%  创建"CNN-GRU"模型
    layers = [...
        % 输入特征
        sequenceInputLayer([numFeatures 1 1],'Name','input')
        sequenceFoldingLayer('Name','fold')
        % CNN特征提取
        convolution2dLayer(FiltZise,32,'Padding','same','WeightsInitializer','he','Name','conv','DilationFactor',1);
        batchNormalizationLayer('Name','bn')
        eluLayer('Name','elu')
        averagePooling2dLayer(1,'Stride',FiltZise,'Name','pool1')
        % 展开层
        sequenceUnfoldingLayer('Name','unfold')
        % 平滑层
        flattenLayer('Name','flatten')
        % GRU特征学习
        gruLayer(128,'Name','GRU1','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        dropoutLayer(0.25,'Name','drop1')
        % GRU输出
        gruLayer(32,'OutputMode',"last",'Name','bil4','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        dropoutLayer(0.25,'Name','drop2')
        % 全连接层
        fullyConnectedLayer(numResponses,'Name','fc')
        regressionLayer('Name','output')    ];
    
  • 预测效果
    时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第4张图片

时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第5张图片
时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第6张图片
时序预测 | MATLAB实现CNN-GRU(卷积门控循环单元)时间序列预测_第7张图片

学习总结

  • 本文融合CNN和GRU神经网络,提出了一种混合预测模型。该模型使用CNN提取数据的隐藏特征,减小原始数据规模,然后利用GRU神经网络学习数据的内部动态变化规律,实现预测。

参考资料

[1] 张贵生,张信东. 基于微分信息的ARMAD-GARCH 股价
预测模型[J].系统工程理论与实践,2016,36(5):1136-1145.
[2] 李梅,宁德军,郭佳程. 基于注意力机制的CNN-LSTM模
型及其应用[J]. 计算机工程与应用,2019,55(13):20-27.
[3] https://mianbaoduo.com/o/bread/mbd-YZ2ak5hp

致谢

  • 大家的支持是我写作的动力!
  • 感谢大家订阅!

你可能感兴趣的:(时间序列,深度学习,MATLAB,数据预测,深度学习,时间序列,CNN-GRU)