价格预测研究分析

价格预测作为一种复杂的回归问题,可以使用神经网络模拟其复杂的函数表示来解决,对黄金和外汇而言,它们在未来某一时间节点的价格与历史数据存在着紧密的联系,具备极强的时间关联性,对这种与时间关联的数据的预测任务进行研究,首先考虑选取循环神经网络作为研究方向。
对于回归问题,一般首选简单的BP网络作为研究方向,而在对序列化数据的处理中,循环神经网络(RNN)是非常高效的深度学习模型,RNN的变体,长短时记忆(LSTM)网络和门控循环单元(GRU)在这一领域中也应用广泛。因此,在循环神经网络的研究方面,RNN、LSTM和GRU网络都可以作为研究的方向。其次,由于预测使用的数据集极其庞大,在使用LSTM网络进行预测前首先使用CNN进行特征提取,可以提高模型的训练效率,故而CNN+LSTM的方案也具有研究价值[1][2]。
在真实的市场环境中,价格预测模型需要根据系统获得的数据实时更新,以确保预测的准确度,为了提高系统的用户体验度,价格预测功能需要使用训练模型速度最快、模型预测拟合效果最好的网络作为预测模型。我们首先对RNN、LSTM、GRU、BP、CNN五种神经网络的基础理论展开研究,分析它们各自的特点,讨论其优点和不足,从而为价格预测模型的选取提供参考。

价格预测理论研究

循环神经网络RNN的主要用途是处理和预测序列数据,强调时间的先后顺序,认为后续的值是由前者和一些其他参数概率决定的,这一观点与黄金外汇价格的变化是吻合的,RNN的网络结构以及将它展开后的网络结构如图1所示。由于RNN自身存在梯度爆炸和梯度消失的问题,将RNN应用到黄金外汇价格预测中的时候,网络的复杂程度会影响其预测的效果,为了满足价格预测的准确性和高效性,我们需要通过实验对其性能进行验证[3]。

长短期记忆网络LSTM是一种时间循环神经网络,是为了解决一般的RNN存在的长期依赖问题而专门设计出来的[4][5]。LSTM 与RNN结构相似,都具有重复的结构模块,但是这两种网络重复的模块拥有不同的结构。LSTM的基本结构如图2所示。LSTM继承了大部分RNN模型的特性,并在RNN的基础上对循环结构进行了改进,这种改进解决了梯度反传过程由于逐步缩减而产生的梯度消失问题,在解决黄金外汇价格预测的问题上,梯度消失问题的解决能够减少训练损失,在预测精度上LSTM或许会比RNN精准一些,但LSTM的预测效果究竟如何,还需要通过实验验证才能得出结论。

GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络。GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题,GRU变体的结构如图3所示。GRU 去除掉了LSTM中的细胞状态,使用隐藏状态来进行信息的传递。它只包含重置门和更新门两个门。GRU的两个门控机制的特殊之处在于,它们能够保存长期序列中的信息,且不会随时间而清除或因为与预测不相关而移除。与 LSTM 相比,GRU 参数更少因此更容易收敛,但是数据集较大的情况下,LSTM表达性能更好。在黄金外汇价格预测问题中,数据集较为庞大,使用GRU的效果可能不如LSTM,但数据集的大小是相对的,无法精确到具体的值,所以GRU真正的性能如何还需要通过实验验证才能得出结论。

时间可以被看作一个空间维度,对于时间序列的处理问题,这种一维卷积神经网络的效果有时可以媲美循环神经网络,而且计算代价通常要小很多。但一维卷积神经网络分别处理每个输入序列段,所以它对时间步的顺序不敏感这一点与循环神经网络不同。在时序问题上,单独使用CNN并不能达到最优的处理效果,但由于一维卷积神经网络的计算代价很小,所以在LSTM之前使用一维卷积神经网络作为预处理步骤是一个好主意,这样可使序列变短,并提取出有用的表示交给LSTM来处理。
BP网络又称反向传播神经网络,是一种简单而且有效的神经网络结构,它通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的神经网络模型,多用于函数逼近、模型识别分类、数据压缩和时间序列预测等。在黄金外汇价格预测问题上,轻量级的BP网络也许能够提高模型训练的速度,但由于其网络结构的复杂度不高,在价格预测这种相对复杂的函数表示方面,BP网络能否出色地完成任务也需要通过实验来验证。

价格预测模型选取

基于对循环神经网络、CNN、BP网络结构的理论分析,我们进行了价格预测模型选取实验以选取性能最优的网络结构。在价格预测模型选取实验的设计中,我们将RNN、LSTM、GRU、BP和CNN+LSTM这5种神经网络作为系统价格预测模型的预选方案并对其性能进行对比,根据对比结果选取性能最优的模型作为系统价格预测的最终模型。实验开始前,我们设计并实现了价格预测模型选取函数train_mode(),该函数的程序框图如图4所示。经过train_model()函数的耗时最短和损失较低的两方面选择后发现,bp网络可以作为最佳的预测模型。

价格预测模型验证

由于train_model()函数种的模型对比过程较为简单,为了验证选取的价格预测模型能够达到预期效果,我们的模型验证阶段分两步完成。在第一阶段的模型验证中,我们设计并实现了验证函数test_model()。通过向test_model()函数传入验证集来验证train_model()函数选出的预测模型的预测效果。test_model()的设计如图5所示。

随后,我们随机选取了18组真实的黄金和外汇数据作为验证集。验证集数据经过数据处理后,划分为18个验证用的训练集(x_train,y_train)和与之对应的18个验证用测试集(test_data),分别将这18个验证集得到的训练集和测试集作为参数传入test_model()函数,使用train_model()选取的bp网络对数据进行训练,最终得到18组预测值(CLOSE属性的预测值)与真实值之间的价格对比折线图,根据这些价格对比折线图可以直观地展示出bp模型的预测效果。18组验证集的预测值与真实值之间的价格对比折线图如图6所示。

由18组验证集预测值(CLOSE属性的预测值)与真实值的对比图可知,bp网络模型的预测准确度符合作为价格预测模型的准确度要求。为了进一步说明这一点,我们又分别在OPEN、HIGH、LOW三个属性上进行预测,结果如表1所示。经统计,从整体上看,bp网络模型的预测效果高拟合率约为0.82,较高拟合率约为0.18。OPEN属性的高拟合率约为0.94,较高拟合率约为0.06。HIGH属性的高拟合率约为0.72,较高拟合率约为0.28。LOW属性的高拟合率约为0.77,较高拟合率约为0.23。CLOSE属性的高拟合率约为0.83,较高拟合率约为0.17。由此可见,bp网络模型的预测准确度确实满足要求。

为了确保选取的模型在不同数据集中都能够保证其预测的高效性,也为了验证其他模型的性能无法提高到与被选取的模型相同或超越被选取的模型,我们进行了第二阶段的模型验证,在这一阶段中,我们选择了真实的黄金和外汇数据中具有代表性的两个数据集(AUDJPY和EURCHF)作为验证对象,并在详细设计的5种网络的训练和预测结果的基础上,分别搭建了它们的单层、2层、3层、4层结构作为验证,通过综合对比模型的参数、训练的时间损耗、损失、预测结果的拟合程度等因素来验证train_model()函数选择的最佳模型性能是否满足需求。在AUDJPY和EURCHF两个数据集中,不同模型的表现如图7和图8所示。经过对比实验,验证了train_model()函数选择的单层bp模型的性能最优的结论,所以,系统的价格预测模型最终选择了单层bp网络结构。

图7 AUDJPY数据集上的实验结果

图8 EURCHF数据集上的实验结果

价格预测功能的详细设计与实现

由于价格预测模块使用的数据格式和内容与其他模块有所不同,所以需要价格预测模块对数据处理模块得到的原始数据进行处理,得到价格预测模块需要的训练集和测试集。这段程序的详细设计如程序框图18所示。

完成数据处理后,价格预测模块需要对数据中的训练集进行训练从而得到预测模型,将测试集作为预测的输入,传递给预测模型进行预测,最后返回预测结果。这一阶段的详细设计如图19所示。

根据价格预测模块的详细设计,首先实现价格预测模块的数据处理功能。在实现数据处理功能的编码过程中,关键的难点问题在于txt文件存储格式的转换问题,由于txt文件内存储的数据类型不一致,增加了文件格式转换的难度。文件格式转换部分的关键源码如图20所示。

完成数据处理功能后,构建单层BP网络,对待预测数据集进行训练,生成对应的预测模型,最后基于这一预测模型,得到预测的结果。预测过程的部分源码如图21所示。

结论

[1]乔若羽.基于神经网络的股票预测模型[J].运筹与管理,2019,28(10):132-140.
[2]李珍珍,吴群.基于LSTM神经网络的股票预测算法研究[J].福建电脑,2019,35(07):41-43.
[3]李勇. 基于深度神经网络的股票智能预测系统的设计与实现[D].西北大学,2019.
[4]林升. 基于LSTM的股票预测研究[D].广州大学,2019.
[5]赵凯. 基于BP神经网络的外汇自动交易系统的设计与实现[D]. 西安电子科技大学.

基于神经网络的黄金、外汇价格预测(RNN、LSTM、GRU、CNN+LSTM、BP)相关推荐

  1. 交通流预测python代码_Python 3 amp; Keras 实现基于神经网络的交通流预测

    交通流量预测在智能交通(ITS)系统中占有重要地位,是实现交通诱导的前提.准确实时的短时交通流预测有助于更好的分析路网交通状况,对路网交通规划和交通优化控制有非常重要的作用.随着交通数据采集技术的不断 ...

  2. 基于神经网络的天气质量指数预测

    基于神经网络的空气质量指数预测 1 项目背景 1.1背景 随着我国经济的快速发展,大量的工厂企业以及尾气排放使得大气环境污染日益严重,所以大气污染的预测防治工作应该加大力度[1].通过预测未来影响空气 ...

  3. 基于神经网络的房屋价格预测

    本课题的主要任务就是通过神经网络对房屋的价格进行预测,这里,我们采用的数据是奥克兰其中一个郊区的房屋价格的数据.在MATLAB中,使用load函数,将数据进行导入,可以看到房屋价格数据如图2.1所示. ...

  4. 深度学习与自然语言处理教程(5) - 语言模型、RNN、GRU与LSTM(NLP通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://www.showmeai.tech/article-d ...

  5. DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU、CNN算法对上海最高气温(数据归一化+构造有监督数据集)实现回归预测案例

    DL之LSTM/GRU/CNN:基于tensorflow框架分别利用LSTM/GRU.CNN算法对上海最高气温(构造有监督数据集)实现回归预测案例 目录 基于tensorflow框架分别利用LSTM/ ...

  6. VCIP2020:不同尺寸块基于神经网络的帧内预测

    本文来自VCIP2020论文<Fully Neural Network Mode Based Intra Prediction of Variable Block Size> 论文提出使用 ...

  7. RNN、GRU、LSTM

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

  8. Briefings in bioinformatics2022 | 基于神经网络的分子性质预测通用优化策略

    原文标题:A general optimization protocol for molecular property prediction using a deep learning network ...

  9. 基于深度学习的轴承寿命预测实践,开发CNN、融合LSTM/GRU/ATTENTION

    关于轴承相关的项目之前做的大都是故障识别诊断类型的,少有涉及回归预测的,周末的时候宅家发现一个轴承寿命加速实验的数据集就想着拿来做一下寿命预测. 首先看下数据集如下: 直接百度即可搜到,这里就不再赘述 ...

最新文章

  1. 【协议分析】Wireshark 过滤表达式实例
  2. 操作系统:基本分页存储管理方式
  3. go语言基础到提高(7)-数组
  4. 优秀程序员的 18 大法则【转载】
  5. [Vulhub](WooYun-2016-199433)phpmyadmin反序列化漏洞
  6. Win10电脑安装打印机驱动运转打印机的方法
  7. 405 not allowed什么意思_clock是什么意思
  8. C语言基础入门实例汇总(共65个案例)
  9. oracle 分组随机抽取,Oracle随机抽取记录的方法是什么呢?
  10. 中国工程院院士张尧学:透明计算/云计算操作系统
  11. PS制作gif动图教程
  12. 积分极限定理+勒贝格控制收敛定理+高数
  13. TiDB集群的GC不回收案例(案情二)
  14. 上海国拍服务器位置,上海国拍系统的重大漏洞
  15. 考证大全 | 证券从业资格考试
  16. 微巴士阳光出行---竞品分析
  17. 【5】SCI易中期刊推荐——计算机科学(中科院2区)
  18. 洛咕 P2465 [SDOI2008]山贼集团
  19. IT菜鸟的第2天(输入输出,数据类型,运算符的使用)
  20. 组合逻辑电路&时序逻辑电路

热门文章

  1. 被电脑病毒攻击了怎么办?带你一一识破九种病毒软件!
  2. 《设计模式》2.创建型模式
  3. 中国石油大学(北京)《软件工程》网考题
  4. 怎样在微信中清理数据存储空间?经验技巧!如何在微信中清除缓存数据信息?
  5. 部分CIA的漏洞利用工具干货请查收
  6. 基于RNN(循环神经网络)的北京雾霾天气指数的预测(keras实现RNN,LSTM神经网络算法)
  7. 数据库:高并发下的数据字段变更
  8. 机器视觉系统设计数字相机与模拟相机的优势比较
  9. PHP8.X的新特性
  10. for 、foreach 、iterator 三种遍历方式的比较