目录

一、 背景介绍

二、 原理介绍

2.1模型原理

RNN模型介绍

2.LSTM模型介绍

三、 实验论证

3.1 数据预处理

3.2 模型的评价指标

3.3 实验模型设置

3.4 实验数据和超参数设置

3.5 模型性能评估和实验结果比较

3.5.1 LOSS图像:

3.5.2 三种模型MSE,RMSE,MAE、R^2值比较

3.5.3 最终拟合情况可视化三种模型比较

3.5.4  以LSTM为例最终预测值可视化

四、实验结论


一、 背景介绍

黄金期货是交易市场上的一个投资品种,不管是对套期保值,还是维护金融稳定等,都有着很重要的作用,对其价格波动进行预测也极具现实意义

在预测方法上可分成传统预测模型和非线性预测模型。传统预测模型包含ARIMA模型(移动平均自回归模型)、GARCH模型 ( 自回归条件异方差模型)、指数平滑模型等,并在黄金价格预测研究上取得了很大进步。比如在2014年,Sharma A M和Baby S运用ARIMA模型对印度的黄金价格进行预测分析传统预测模型的各项研究均证明了其在预测黄金价格的走势或动态特征方面是有效的,但是,鉴于黄金期货价格时间序列具有非线性及高噪声的数据特征,对其精确预测依旧十分困难,同时由于时间的动态变化,使得自变量和因变量二者之间的关系也会随之发生变动,因此传统时间序列模型很难精准得对黄金期货市场进行预测。

近年来,随着计算机硬件水平提升得越来越快,对神经网络的研究也逐渐深入,由此非线性模型逐渐取代了时间序列模型在黄金期货预测方面的应用,非线性预测模型包括基于ANN模型(人工神经网络模型)及其演化的各种模型,如BPNN、SVR模型(支持向量回归模型)、DNN模型(深层神经网络模型)及其演化的各种模型,如CNN、 RNN等。 2010年曾濂等人提出了一种基于BP神经网络的改进模型,研究首先使用定性分析找到伦敦黄金期货价格变动的影响因素,然后利用投影寻踪方法筛选出非线性因素中影响力最大的因素输入神经网络,并改进算法进行网络学习,最后训练得出所需的BPNN。基于浅层神经网络对黄金期货价格及趋势进行预测的研究较之深层神经网络的要多,包括ANN模型,基于GA-BP神经网络和SVR模型等等。

近年来,LSTM模型(Long-Short Term Memory)和GRU模型(Gate Recurrent Unit)开始逐步应用在金融序列预测问题上,众多研究者开始利用LSTM模型对股票市场进行建模预测,2015年,Chen等人将其运用于我国股票市场的股价预测,相较于其他预测模型,LSTM的预测效果得到了大幅提升。多个应用LSTM模型的金融序列预测,都获得了更佳的预测效果,但目前应用在黄金期货市场预测上的研究成果相对较少。

综上所述,为了寻找一种更合适的黄金期货价格预测方法,建立了RNN,LSTM,GRU预测模型。以ZGQ1黄金期货价格序列为研究对象,先将原始黄金期货价格序列进行归以化处理,然后进行不同参数下模型的比较,最后,选择出最适应归一化数值下的参数模型,输出预测的结果。结果表明,LSTM模型具有更高的精度,也验证了模型有效性

二、 原理介绍

传统的黄金期货价格预测模型不能充分描述黄金期货价格很强的非线性、非平稳性和高噪声的特点,因此在预测问题上存在许多困难,而神经网络能够发现并刻画数据自身复杂的内部结构特征,也能自适应得学习和构建数据的非线性的复杂关系,不会对输入变量施加限制,也具备更好的迁移学习(transfer learning)性质,因此非常适合处理如黄金期货价格这样的金融数据。其中LSTM模型更是经由丢弃和保留的机制有效解决了梯度反传进程中产生的梯度消失与梯度爆炸问题。相比单层LSTM,双层LSTM更容易进行训练,能够很大程度上提高训练效率。因此,本文建立了基于RNN,LSTM和GRU的三个预测模型,三个模型仅基于相关黄金期货价格的时间序列数据,不考虑其他影响因素,因此有效地消除了数据输入变量和模型参数的不确定性

2.1模型原理

  1. RNN模型介绍

循环神经网络( Recurrent NeuralNetwork, RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,RNN模型能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN模型就能够很好地解决这类问题。

图2-1-1-1普通RNN的主要模型

(两个输入: ①x为当前状态下数据的输入,②h表示为上一个节点的输入;

两个输出: ③y为当前节点状态下的输出,④h’表示为传递到下一个节点的输出)

图2-1-2-2 序列形式输入的RNN模型

2.LSTM模型介绍

LSTM网络模型,最早由Hochreiter和Schmidhuber(1997)提出。LSTM模型能够解决长序列训练过程中的梯度消失和梯度爆炸问题,即相比传统的RNN模型,LSTM模型能够在更长的时间序列中有更好的表现。

图2-1-2-1 传统RNN模型与LSTM模型对比

(LSTM模型三个输入: ①x_t为当前状态下数据的输入,②h_(t-1)表示为上一个节点的输入;③c_(t-1)为上个节点的单元状态

三个输出: ④y_t为当前节点状态下的输出,⑤h_t表示为传递到下一个节点的输出,⑥c_t表示为传递到下一个节点的状态值)

图2-1-2-2 LSTM单个神经元结构

LSTM每一个神经元的结构如图所示,其内部包括一个细胞状态(Cell) 和三个门控(Gates) 设置,细胞状态(Cell) 记录神经元状态,综合隐藏和时间步的事件,通常是经由三种门控机制实现这类记忆方式,即输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate)。输入门门和输出门用来接收、输出和修正参数。

遗忘门(Forget Gate)决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t;

输入门(Output Gate)决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t;

输出门(output gate)控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t。

(σ为sigmoid函数前馈网络层,tanh表示双曲正切函数前馈网络层,⊗表示点乘,⊕表示向量拼接。经由拼接向量乘.上权重矩阵之后,再经由激活函数转换来作为一种门控状态。)

首先计算t时刻下遗忘门(Forget Gate)的激活状态f_t值:

其次计算t时刻下输入门(Input Gate)i_t的值和输入细胞的候选状态 C~_t的值,公式如下:

由以上计算可以得到t时刻下的细胞状态(Cell) 的更新值Ct,公式如下:

在计算得到细胞状态(Cell) 更新值后,最后就可以计算输出门(Output Gate)的值,其计算公式如下:

则通过上述计算,LSTM就可以确定最终的输出值。

3.GRU模型介绍

GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的(2014)。相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。

图2-1-3 GRU的输入输出结构

(两个输入: ①X_t为当前状态下数据的输入,②h_t-1表示为上一个节点的输入;

两个输出: ③y_t为当前节点状态下的输出,④h_t表示为传递到下一个节点的输出。

GRU的输入输出结构与普通的RNN是一样的)

图2-1-3-2 LSTM与GRU模型对比

GRU是新一代RNN,与LSTM非常相似。GRU不使用单元状态,而是使用隐藏状态来传输信息。它也只有两个门,一个重置门(reset gate)和一个更新门(update gate)

更新门的作用类似于LSTM的遗忘和输入门。它决定要丢弃哪些信息和要添加哪些新信息。重置门是另一个用来决定要忘记多少过去的信息的门。由于GRU的张量操作较少,因此,他们的训练速度更快。

三、 实验论证

本文数据来源于相关财经网站,选取了中国黄金期货历史价格,从1979年12月27日到2021年6月25日共42年10538个数据。

3.1 数据预处理

载入数据,解读数据:

通过上图所示的数据描述我们可以知道此份数据较为精准,因此本次实验不展现异常数据处理。

图3-1-1 数据整体内容

图3-1-2 数据样例展示

图3-1-3 数据的描述

图3-1-4 数据可视化展示

在序列进行量化分析前,对数据做日期索引转换操作。

图3-1-5 转换后的数据类型和样例展示

3.2 模型的评价指标

对于黄金期货价格这类数据规模及范围不是非常大的情况,实验模型的预测性能评价指标采用均方误差(MSE),均方根误差(RMSE),平均绝对误差(MAE)、拟合度(R^2)对实验结果进行对比。MSE,RMSE,MAE的值越小证明我们的精度越高,而R^2越接近1证明我们的模型正确性越高,其中MSE,RMSE,MAE、R^2的计算公式如下:

其中yi,Y^i: 分别代表实际值与预测值,m代表预测窗宽.

3.3 实验模型设置

经过是实验参数的选择,在不同神经元和不同神经网络层的情况下对训练集和测试集进行预测,结果显示第一层输入神经元为64,第二层输入神经元为32,输出层为一个输出神经元的情况下预测结果最佳,效率最高。

RNN模型图:

图3-3-1 RNN模型图

LSTM模型图:

图3-3-2 LSTM模型图

GRU模型图:

图3-3-3 GRU模型图

以LSTM为例,不同神经元和不同神经网络层预测情况如下:

图3-3-4 LSTM单层神经网络不同输入神经元预测情况

图3-3-5 LSTM双层神经网络不同输入神经元预测情况

可以看出单层的神经网络的预测效果均不理想,而双层的结构当一层输入神经元为64,第二层为32时,效果最佳,效率最高。

3.4 实验数据和超参数设置

在模型初步建立后,为了使模型更适合本数据,以时间序列步长单位为5,即5个数据预测下一个数据,训练集(Train Set)和测试集(Tset Set)按照8:2的比例划分,此时模型在测试集上可得到最佳预测效果。根据数据量,本次实验将数据以126为单位进行批量封装。由于数据量并不是很大,测试集作为验证集(ValidationSet),负责训练模型的召回率和准确率。

不同的时间序列步长和训练集测试集不同划分比例,批量封装的预测效果如下:

图3-4-1 双层LSTM不同的时间序列步长预测情况

可以看出本次的数据步长依赖不大,所以步长单位设为5即可;

图3-4-2 双层LSTM训练集测试集不同划分比例预测情况

训练集和测试集的比例以0.8-0.9效果为最佳,因为过少的训练集不利于数据预测;

图3-4-3 双层LSTM训练集测试集不同的批量封装预测情况

batch_size过小,花费时间多,同时梯度震荡严重,不利于收敛; batch_size过大,不.

同batch的梯度方向没有任何变化,容易陷入局部极小值。

3.5 模型性能评估和实验结果比较

本实验采用双层网络,第一层输入神经元为64,第二层神经元为32的RNN,LSTM,GRU模型来进行对比试验,通过比较MSE,RMSE,MAE、R^2的数值,LOSS可视化图像,和最终拟合情况的可视化图表,以及最终预测值来进行优劣评判。

3.5.1 LOSS图像:

图3-5-1-1 RNN_LOSS图

图3-5-1-2 LSTM_LOSS图

图3-5-1-3 GRU_LOSS图

从上图可以看出当epochs到达第20次三个模型均有了较好的收敛效果。有所不同的是LSTM模型的收敛速度更快,效果也更佳

3.5.2 三种模型MSE,RMSE,MAE、R^2值比较

从下图可以看出三种模型中,对于本次数据集来说,LSTM具有更好的预测精度。

图3-5-2 不同模型MSE,RMSE,MAE、R^2值比较

3.5.3 最终拟合情况可视化三种模型比较

从下图的可视化我们可知,LSTM模型具有更佳的预测精度。

图3-5-3-1 RNN_拟合图

图3-5-3-2 LSTM_拟合图

图3-5-3-3 GRU_拟合图

3.5.4  以LSTM为例最终预测值可视化

图3-5-4-1 LSTM预测可视化

四、实验结论

对于黄金期货市场来说,只要知道近期黄金期货的走势以及价格,就对投资者的选择带来有价值的参考。本文将深度学习方法应用在黄金期货价格预测方面,可以看出LSTM神经网络既承继了RNN在处理序列问题上的优点,又进一步提升了时间序列数据的高精度的预测结果。通过对黄金期货价格数据进行归一化等预处理操作后实现对中国黄金期货价格序列的分析预测,通过观察双层RNN模型、单层LSTM模型、双层LSTM模型、双层GRU模型表现,可以发现双层LSTM模型在黄金期货价格预测方面有较好的使用前景。


一些不太重要的个人碎碎念:

首先,我的本次课设终于结束了,开心!

接着就是感觉自己终于入了深度学习的门,LSTM在我还没上大学的时候,就在某所里看过某研究生大哥搞过,终于也轮到了自己来实际操作了。

非常唏嘘的是,今年年初的时候是非常想开始尝试写一篇论文的,但是非常煎熬的是由于各种原因,俺太菜了,俺时间排不开了等等,计划告败

终于是到了期末课设老师逼的。

这几天其实一直在肝,从6.28考完试,差不多三四天,入门学习,写demo啦,和老师交流意见再改代码了,永远陪伴的咖啡牛奶。

比较好笑的一件事情就是我和我的舍友一直在熬夜,前天我两点半睡,她三点睡,昨晚我三点睡,她四点...然后第二天八点还得去图书馆占座学习。.所以我没有觉得自己太辛苦啦,因为比我辛苦比我努力的人有好多,只是觉得自己不想太差劲这样。

绕回来这次课设,我觉得我非常满意的是,这是我自己感兴趣的课题,数据集也是自己去财经网站扒拉下来的,也非常臭屁的和老师吹牛"绝对没有人像我一样数据集里有今年六月的",我的实验结果也真的非常令我满意,精度非常高。这点也得到了老师的认可hhh

我以后可以跟着自己的预测买一下看中的基金和股票了,IT技术_金融果然yyds

还有一点就是非常感谢我的指导老师小苏同志,谢谢他非常耐心的一对一指导了我的实验,谢谢他非常耐心的跟我说不用怕把问题暴露给他,谢谢他愿意告诉我怎么修正问题,完善代码。非常感动的就是昨晚有个bug改晕了,小苏老师打了个电话给我,跟他交流后果然大受启发,最终在回宿舍前解决了问题。

还有就是谢谢某群的大佬们,为我的bug提供了很多种解决思路和方法,全世界的互联网打工人都团结在一起了!

感谢一下我自己吧,活下去了。哈哈哈,只要活着就是有希望的,谁说不是呢!

接下来的日子好好加油。

深度学习+计算视觉领域应用见~

基于RNN,LSTM,GRU对黄金期货的时间序列研究相关推荐

  1. RNN LSTM GRU 代码实战 ---- 简单的文本生成任务

    RNN LSTM GRU 代码实战 ---- 简单的文本生成任务 import torch if torch.cuda.is_available():# Tell PyTorch to use the ...

  2. ​​​​​​​DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比、TF代码定义之详细攻略

    DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比.TF代码定义之详细攻略 目录 RNN.LSTM.GRU算法对比 1.RNN/LSTM/GRU对比 2.RNN/LSTM/GRU动图 ...

  3. DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略

    DL之LSTM:LSTM算法论文简介(原理.关键步骤.RNN/LSTM/GRU比较.单层和多层的LSTM).案例应用之详细攻略 目录 LSTM算法简介 1.LSTM算法论文 1.1.LSTM算法相关论 ...

  4. RNN, LSTM, GRU, SRU, Multi-Dimensional LSTM, Grid LSTM, Graph LSTM系列解读

    RNN/Stacked RNN rnn一般根据输入和输出的数目分为5种 一对一 最简单的rnn 一对多 Image Captioning(image -> sequence of words) ...

  5. RNN,LSTM,GRU计算方式及优缺点

    本文主要参考李宏毅老师的视频介绍RNN相关知识,主要包括两个部分: 分别介绍Navie RNN,LSTM,GRU的结构 对比这三者的优缺点 1.RNN,LSTM,GRU结构及计算方式 1.1 Navi ...

  6. 图解 RNN, LSTM, GRU

    参考: Illustrated Guide to Recurrent Neural Networks Illustrated Guide to LSTM's and GRU's: A step by ...

  7. RNN,LSTM,GRU基本原理的个人理解重点

    20210626 循环神经网络_霜叶的博客-CSDN博客 LSTM的理解 - 走看看 重点 深入LSTM结构 首先使用LSTM的当前输入 (x^t)和上一个状态传递下来的 (h^{t-1}) 拼接训练 ...

  8. [PyTorch] rnn,lstm,gru中输入输出维度

    本文中的RNN泛指LSTM,GRU等等 CNN中和RNN中batchSize的默认位置是不同的. CNN中:batchsize的位置是position 0. RNN中:batchsize的位置是pos ...

  9. 序列模型简介——RNN, Bidirectional RNN, LSTM, GRU

    既然我们已经有了前馈网络和CNN,为什么我们还需要序列模型呢?这些模型的问题在于,当给定一系列的数据时,它们表现的性能很差.序列数据的一个例子是音频的剪辑,其中包含一系列的人说过的话.另一个例子是英文 ...

最新文章

  1. 电力竞价(广东规则)详解与代码
  2. java加密解密与数字证书的操作
  3. 让FX1.1的NotifyIcon支持BalloonTip(2)
  4. opengl加载显示3D模型b3d类型文件
  5. oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例
  6. 求 LCA 的三种方法
  7. 玩转“网上邻居”之网络配置(一)
  8. 怎样搭建本地svn服务器环境-轻松掌握版本管理
  9. php 计算日期差几周,PHP计算两个时间之差的函数(年,月,周,日,小时,分钟,秒数)
  10. 【渝粤教育】电大中专药物分析技术基础_1作业 题库
  11. VMware Vsphere 6.0安装部署 总体部署架构
  12. 基于Java+SpringBoot+vue+elementui农产品物流系统详细设计实现
  13. pythonnumpy官网_NumPy下载-NumPy(Python开发工具)下载 v1.19.4官方版--pc6下载站
  14. 抓取手机端app日志的方法总结
  15. 阿里云弹性云桌面、传统PC和虚拟桌面VDI区别对比
  16. Spring基础详解
  17. 专访美团外卖曹振团:天下武功唯快不破
  18. 表情符号(emoji)大全,只此一文便够了
  19. C技能树:运算符优先级与求值顺序
  20. 200左右哪款蓝牙耳机值得入手?双11小白新手避雷高性能蓝牙耳机

热门文章

  1. C++ 多态(补充)
  2. vue中使用echarts折现图表(多图表与定时递归刷新图表解决方案在附录1、2中)
  3. flv 文件格式解析
  4. mysql中按照每个月分组统计数据并且查询去年的所有数据
  5. 青少年弱势群体精神虐待现象探析-吕卫华
  6. 机器人受人类虐待后奋起反击?这段视频刷爆网络
  7. TXT文件转Pascal voc数据集XML格式标注文件
  8. 1000Blocks | Space Apes smart NFTs (太空猿智能NFTS)
  9. 游戏开发中的问题-----摘自《大型多人在线游戏开发》
  10. 09.PATH变量、PS1变量、LANG语系变量、位置参数变量、预定义变量详解