http://c.biancheng.net/view/1950.html

本节将介绍如何利用 RNN 预测未来的比特币价格。

核心思想是过去观察到的价格时间序列为未来价格提供了一个很好的预估器。给定时间间隔的比特币值通过https://www.coindesk.com/api/的 API 下载,以下是 API 文档的一部分:

经 MIT 授权许可,本节将使用https://github.com/guillaume-chevalier/seq2seq-signal-prediction中的代码。

具体实现过程

  1. 克隆下面的 GitHub 存储库。这是一个鼓励用户尝试 seq2seq 神经网络架构的项目:


     
  2. 在上述 GitHub 库基础上,考虑使用以下能够下载和标准化比特币历史值(美元或欧元)数据的函数,这些函数在 dataset.py 中定义。训练集和测试集根据 80/20 规律分开,因此,20% 的测试数据是最新的比特币值。每个示例都包含 40 个美元(USD)数据点,特征轴/维度上是欧元(EUR)数据。数据根据均值和标准差进行归一化处理,函数 generate_x_y_data_v4 生成尺寸为 batch_size 的训练数据(或测试数据)的随机样本:

     
  3. 生成训练集、验证集和测试集,并定义一些超参数,例如 batch_size、hidden_dim(RNN 中隐藏神经元的数量)和 layers_stacked_count(堆栈循环单元的数量)。另外,定义一些用于微调优化器性能的参数,例如优化器的学习率、迭代次数、优化器模拟退火的 lr_decay、优化器的动量以及避免过拟合的 L2 正则化。请注意,GitHub 存储库默认 batch_size=5和nb_iters=150,但我设置 batch_size=1000和nb_iters=100000,已经获得了更好的结果:

     
  4. 将网络定义为由基本 GRU 单元组成的编码器–解码器。网络由 layers_stacked_count=2 个 RNN 组成,使用 TensorBoard 对网络进行可视化。请注意,hidden_dim=12 是循环单元中隐藏的神经元:

     
  5. 运行 TensorBoard 并可视化由 RNN 编码器和 RNN 解码器组成的网络:

     
  6. 以下是代码的流程:

    图 1 TensorBoard中的比特币价格预测示例(点此查看高清大图
     
  7. 定义一个 L2 正则化损失函数,以避免过度拟合并具有更好的泛化能力。优化器选择 RMSprop,其中 learning_rate、decay 和 momentum 的值在第 3 步中已给出:

     
  8. 生成训练数据并在数据集的 batch_size 示例上运行优化程序,为批量训练做好准备。同样,从数据集的 batch_size 示例生成测试数据,为测试做好准备。训练运行迭代次数为 nb_iters+1,并每训练 10 次迭代来测试一次结果:

     
  9. 将 n_predictions 测试结果可视化,nb_predictions 取 5,预测值用黄色圆点实际值用蓝色×符号表示。请注意,预测从直方图中的最后一个蓝点开始,可以看出,即使是这个简单的模型也是相当准确的:

     

    结果如下:


    图 2 比特币价格预测示例(点此查看高清大图

解读分析

比特币价格的预测是使用一个基于 GRU 基本单元的 RNN 组成的编码器–解码器。RNN 非常擅长学习序列,事实上即使是只有两层和 12 个 GRU 单元的简单模型,比特币价格预测也是相当准确的。当然,这个预测代码并不是鼓励投资比特币,而只是讨论深度学习方法。而且,为了确认是否存在数据过度拟合的情况,需要进行更多的实验。

RNN循环神经网络实现预测比特币价格过程详解的更多相关文章

  1. 神经网络与数字货币量化交易系列(1)——LSTM预测比特币价格

    首发地址:https://www.fmz.com/digest-topic/4035 1.简单介绍 深度神经网络这些年越来越热门,在很多领域解决了过去无法解决的难题,体现了强大的能力.在时间序列的预测 ...

  2. Recurrent Neural Networks(RNN) 循环神经网络初探

    1. 针对机器学习/深度神经网络“记忆能力”的讨论 0x1:数据规律的本质是能代表此类数据的通用模式 - 数据挖掘的本质是在进行模式提取 数据的本质是存储信息的介质,而模式(pattern)是信息的一 ...

  3. TensorFlow框架(6)之RNN循环神经网络详解

    1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主 ...

  4. 关于 RNN 循环神经网络的反向传播求导

    关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...

  5. Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例

    CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...

  6. 4.5 RNN循环神经网络(recurrent neural network)

     自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  RNN循环神经网络 ...

  7. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

  8. 利用Google趋势来预测比特币价格 - 续1

    之前发布了一篇文章利用Google趋势来预测比特币价格,说到了看到一篇文章很朴素的介绍了google趋势和比特币价格的一个关系.觉得很简单直白,就根据那个模型写了个程序,部署起来了,从十一月十四号到现 ...

  9. CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM

    http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...

随机推荐

  1. Appium+python自动化(七)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 上(超详解)

    简介 “千呼万唤始出来,犹抱琵琶半遮面”,经过前边的各项准备工作,终于才把appium这位琵琶女请出来.那么下边就由宏哥给各位看官.小伙伴们和童鞋们来引荐这位美女(帅哥).这一篇主要是对前边的内容做一 ...

  2. 【学习笔记】薛定谔的喵咪Cat—球盒问题(全详解)

    [学习笔记]薛定谔的喵咪Cat-球盒问题(全详解) [题目描述] 当一个猫在盒子里时,因为放射物的状态我们不知道,所以猫的状态我们也不知道,这就所谓猫的生死纠缠态,也是所谓的薛定谔的猫. 当我们做需要 ...

  3. jQuery浮窗图片到页面中间的代码兼容移动端

    jQuery浮窗图片到页面中间的代码兼容移动端 <!doctype html> <html> <head> <meta charset="utf-8 ...

  4. .net core vue+wangEditor (双向绑定) 上传图片和视频功能

    最终效果,是这样的,现在开始记录怎么做: 开始 npm 安装 wangEditor 安装好后, 因为要用vue 双向绑定 ,所以 我就把wangwangEditor 做成了一个封装组件,先看一下目录 ...

  5. RandomAccessFile vs FileChannel.open(path);

    What kind of FileChannel object does the FileChannel.open(path) method return? Is it still random ac ...

  6. 我遇到的WPF的坑

    转自 林德熙Blog 本文:我遇到的WPF的坑 目录 单例应用在多实例用户无法使用 标记方法被使用 当鼠标滑过一个被禁用的元素时,让ToolTip 显示 获取设备屏幕数量 获取当前域用户 绑定资源文件 ...

  7. 使用Alipay代码源,构建自己的Docker镜像

    1. alipay 镜像仓库 地址 (自行换成自己的阿里镜像云DockerHub地址) https://cr.console.aliyun.com/repository/ 2.alipay 代码云 地 ...

  8. APS.NET MVC + EF (14)---项目框架搭建

    一:框架搭建     1:先创建Model. 2:创建数据访问接口层.IUserInfoDal 在该接口中定义了常见的方法CURD以及分页方法. public interface IUserInfoD ...

  9. loadrunner:Action.c(4): Error -27796: Failed to connect to server "10.8.251.101:10086": [10060] Connection timed out

    Action.c(4): Error -27796: Failed to connect to server "10.8.251.101:10086": [10060] Conne ...

  10. python 进程和线程-进程和线程的比较以及分布式进程

    进程和线程的比较 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017631469467456 我们介绍了多进程和多线程,这是实现多任 ...