RNN循环神经网络实现预测比特币价格过程详解
http://c.biancheng.net/view/1950.html
本节将介绍如何利用 RNN 预测未来的比特币价格。
核心思想是过去观察到的价格时间序列为未来价格提供了一个很好的预估器。给定时间间隔的比特币值通过https://www.coindesk.com/api/的 API 下载,以下是 API 文档的一部分:
经 MIT 授权许可,本节将使用https://github.com/guillaume-chevalier/seq2seq-signal-prediction中的代码。
具体实现过程
- 克隆下面的 GitHub 存储库。这是一个鼓励用户尝试 seq2seq 神经网络架构的项目:
- 在上述 GitHub 库基础上,考虑使用以下能够下载和标准化比特币历史值(美元或欧元)数据的函数,这些函数在 dataset.py 中定义。训练集和测试集根据 80/20 规律分开,因此,20% 的测试数据是最新的比特币值。每个示例都包含 40 个美元(USD)数据点,特征轴/维度上是欧元(EUR)数据。数据根据均值和标准差进行归一化处理,函数 generate_x_y_data_v4 生成尺寸为 batch_size 的训练数据(或测试数据)的随机样本:
- 生成训练集、验证集和测试集,并定义一些超参数,例如 batch_size、hidden_dim(RNN 中隐藏神经元的数量)和 layers_stacked_count(堆栈循环单元的数量)。另外,定义一些用于微调优化器性能的参数,例如优化器的学习率、迭代次数、优化器模拟退火的 lr_decay、优化器的动量以及避免过拟合的 L2 正则化。请注意,GitHub 存储库默认 batch_size=5和nb_iters=150,但我设置 batch_size=1000和nb_iters=100000,已经获得了更好的结果:
- 将网络定义为由基本 GRU 单元组成的编码器–解码器。网络由 layers_stacked_count=2 个 RNN 组成,使用 TensorBoard 对网络进行可视化。请注意,hidden_dim=12 是循环单元中隐藏的神经元:
- 运行 TensorBoard 并可视化由 RNN 编码器和 RNN 解码器组成的网络:
- 以下是代码的流程:
- 定义一个 L2 正则化损失函数,以避免过度拟合并具有更好的泛化能力。优化器选择 RMSprop,其中 learning_rate、decay 和 momentum 的值在第 3 步中已给出:
- 生成训练数据并在数据集的 batch_size 示例上运行优化程序,为批量训练做好准备。同样,从数据集的 batch_size 示例生成测试数据,为测试做好准备。训练运行迭代次数为 nb_iters+1,并每训练 10 次迭代来测试一次结果:
- 将 n_predictions 测试结果可视化,nb_predictions 取 5,预测值用黄色圆点实际值用蓝色×符号表示。请注意,预测从直方图中的最后一个蓝点开始,可以看出,即使是这个简单的模型也是相当准确的:
结果如下:
图 2 比特币价格预测示例(点此查看高清大图)
解读分析
比特币价格的预测是使用一个基于 GRU 基本单元的 RNN 组成的编码器–解码器。RNN 非常擅长学习序列,事实上即使是只有两层和 12 个 GRU 单元的简单模型,比特币价格预测也是相当准确的。当然,这个预测代码并不是鼓励投资比特币,而只是讨论深度学习方法。而且,为了确认是否存在数据过度拟合的情况,需要进行更多的实验。
RNN循环神经网络实现预测比特币价格过程详解的更多相关文章
- 神经网络与数字货币量化交易系列(1)——LSTM预测比特币价格
首发地址:https://www.fmz.com/digest-topic/4035 1.简单介绍 深度神经网络这些年越来越热门,在很多领域解决了过去无法解决的难题,体现了强大的能力.在时间序列的预测 ...
- Recurrent Neural Networks(RNN) 循环神经网络初探
1. 针对机器学习/深度神经网络“记忆能力”的讨论 0x1:数据规律的本质是能代表此类数据的通用模式 - 数据挖掘的本质是在进行模式提取 数据的本质是存储信息的介质,而模式(pattern)是信息的一 ...
- TensorFlow框架(6)之RNN循环神经网络详解
1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主 ...
- 关于 RNN 循环神经网络的反向传播求导
关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...
- Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例
CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...
- 4.5 RNN循环神经网络(recurrent neural network)
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1 RNN循环神经网络 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
- 利用Google趋势来预测比特币价格 - 续1
之前发布了一篇文章利用Google趋势来预测比特币价格,说到了看到一篇文章很朴素的介绍了google趋势和比特币价格的一个关系.觉得很简单直白,就根据那个模型写了个程序,部署起来了,从十一月十四号到现 ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...
随机推荐
- HashMap 源码分析 基于jdk1.8分析
HashMap 源码分析 基于jdk1.8分析 1:数据结构: transient Node<K,V>[] table; //这里维护了一个 Node的数组结构: 下面看看Node的数 ...
- kali 安装 360国产浏览器
1. 下载360安全浏览器国产版本的 amd64 deb的包 https://browser.360.cn/se/linux/index.html 下载到的文件为: browser360-cn-sta ...
- 一次kuberneets evicted的历险
一.概述 kubernetes 的eviction检测diskpresure,检测的是kubelet的root-dir.kubelet的默认root-dir是/var/lib/kubelet,可以使用 ...
- AtCoder Grand Contest 014
AtCoder Grand Contest 014 A - Cookie Exchanges 有三个人,分别有\(A,B,C\)块饼干,每次每个人都会把自己的饼干分成相等的两份然后给其他两个人.当其中 ...
- Linux之《荒岛余生》(三)内存篇
原文:https://juejin.im/post/5c00aee06fb9a049be5d3641 小公司请求量小,但喜欢滥用内存,开一堆线程,大把大把往jvm塞对象,最终问题是内存溢出. 大公司并 ...
- docker 部署mysql redis
先介绍利用的两个数据卷挂载的规则,这对于理解挂载mysql数据库存储非常有帮助. 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中. 如果挂载一个非空的数据卷到容 ...
- wc.exe个人项目
1.GitHub项目 https://github.com/Littlehui3/wc 2.用时表格 PSP2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min) Plannin ...
- 下载win10系统
有时候想重装系统但总找不到下载的地方,今天记录一下.nsdn我告诉你,这里有许多软件下载 网站URL:https://msdn.itellyou.cn/ 我想下载一个Windows10 磁力地址 ed ...
- CDH报错:ScmActive at bootup: Failed to validate the identity of Cloudera Manager.
报错原因以及解决办法在官网: https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cm_failover_db.html 1. ...
- 性能测试-MySQL性能查看(转)
mysql查看数据库性能常用命令 mysql> show global status; 可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: mysql> sh ...