区块链网站|NFTS BTC教学指南 如何一夜暴富?以下是比特币价格预测指南

如何一夜暴富?以下是比特币价格预测指南

广告位

如何一夜暴富?这里有一份比特币价格预测指南

图片:黑客新闻

翻译| AI技术大本营(rgznai100)

参与|王鹤

编辑|唐娜

近年来,以比特币为代表的加密数字货币一直是社交媒体和搜索引擎的热门话题。然而,比特币价格的波动也让读者经历了过山车般的体验。

本周,由于各大权威机构纷纷表示看好区块链的未来,1月17日至18日凌晨,比特币成功止住了前一日的暴跌,涨幅接近20%(18.46%)。

如果能制定一个智能的投资策略,就能发现隐藏在这些反复无常的波动背后的巨大利润。

与传统金融工具相比,由于缺乏指标数据,加密货币的预测变得非常困难。以现在最火的比特币为例,讨论如何利用深度学习来预测加密数字货币的价格,了解它们未来的发展趋势。

声明:比特币等数字货币交易属于投资行为。交易有风险,买币要谨慎。由此产生的得失与营长无关。要打赏,就戳“转发”和“赞”。

第一步

要运行本文中的代码,请确保已经安装了以下环境和代码库:

Python 2.7

张量流=1.2.0

Keras=2.1.1

熊猫=0.20.3

Numpy=1.13.3

h5py=2.7.0

sklearn=0.19.1

数据采集

用于分析和预测的数据可以从Kaggle或Poloniex收集。为了确保不同数据集之间代码应用的一致性,从Poloniex收集的数据的列名将更改为与Kaggle匹配的列名。

数据准备

从数据源收集的数据需要在发送到模型进行预测之前进行分析。在下面的代码中,PastSampler类引用这个博客上的方法,将数据分成一系列子数据集和相应的标签数据集。模型的输入数据大小(n)是256,输出数据大小(k)是16。

值得注意的是,从Poloniex收集的数据是时间序列数据,间隔为5分钟。这说明模型的输入数据跨度是1280分钟,而输出数据跨度超过了80分钟。

创建PastSampler类后,我将使用这个类来收集数据。由于原始数据的取值范围是从0到10000以上,所以需要对数据进行缩放,使神经网络更容易理解数据。

模型构建

美国有线新闻网;卷积神经网络

一维卷积神经网络可以通过滑动核窗口来捕捉输入数据的局部特征。如下图所示。

来自http://cs231n.github.io/convolutional-networks/的CNN传奇

上面的代码是我的第一个卷积神经网络模型。以下代码将我的GPU编号为“1”(这是因为我有4个GPU,您可以将其设置为您的任何一个GPU)。Tensorflow在多个GPU上运行似乎不尽如人意,限制在一个GPU上比较合适。没有GPU也不用担心,忽略下面的代码就好。

构建CNN模型的代码非常简单。添加脱落层是为了避免过度拟合。损失定义为均方误差(MSE ),选择最先进的Adam自适应优化作为优化器。

唯一需要担心的是各层之间输入数据和输出数据的维度。计算卷积图层的输出数据维度的公式为:

输出时间步长=(输入时间步长-内核窗口大小)/步长1

在下面代码的最后,我添加了两个回调函数,CSVLogger和ModelCheckpoint。前者可以帮我跟踪所有的训练和验证过程,后者可以存储每个周期的模型权重参数。

LSTM

长期记忆(LSTM)网络是递归神经网络(RNN)的变体,是为了解决普通RNN中梯度消失的问题而发明的。据说LSTM可以记住更长的时间序列输入步骤。

http://colah.github.io/posts/2015-08-Understanding-LSTMs/的LSTM传奇

LSTM比CNN更容易用代码实现,因为你不需要关心内核窗口的大小,步长大小,输入输出数据维数之间的关系等等。只需确保输入网络数据和输出网络数据的维度。

苏军总参谋部情报总局

门控单元(GRU)是RNN的另一种变体。它的网络结构不像LSTM那样复杂,只有一个复位门和一个遗忘门,而不是一个存储单元。据说GRU的性能与LSTM相当,但效率可以更高。(本文也是如此,因为LSTM大约需要45秒/周期,而GRU不到40秒/周期)

来自http://www.jackdermody.net/brightwire/article/gru循环神经网络)

把第二条线放到LSTM模型中

用…替换

绘图结果

由于三个模型的计算结果非常相似,所以我只检查CNN模型的图像。首先,我们需要重建模型,并将训练权重加载到模型中。

然后,我们需要反向缩放预测数据。因为之前用的是MinMaxScaler,所以此时预测的数据范围是[0,1]。

上面显示的两个数据框架分别构建了比特币的真实价值(实际价格)和预测价格。为了更好的可视化,绘制的图像只显示2017年8月以后的数据。

我们使用pyplot来绘制图形。由于预测的价格是以16分钟为间隔的,为了让我们更容易查看结果,我不会将它们都链接起来。因此,这里的预测数据被绘制为红点,如第三行中的“ro”所示。

下图中的蓝线表示真实值(实际价格数据),红点表示预测的比特币价格。

双层CNN模型预测的最佳比特币价格

从上图可以看出,预测的价格和比特币的实际价格非常相似。为了得到最好的模型效果,我决定在集中配置下测试神经网络,如下表所示。

不同模型下的预测结果

上表中的每一行都是从100个训练周期中获得的最佳验证损失的模型。从上面的结果可以看出,LeakyReLU似乎总是比通常的ReLU产生更好的损耗效果。而使用Leaky ReLU作为激活函数的4层CNN模型会得到较大的验证损失,这可能是重新验证的模型造成的。CNN模型可以训练得非常快(使用GPU时2秒/周期),性能比LSTM和GRU略差,虽然3层CNN似乎能够更好地捕捉数据的局部时间依赖性,但最好的模型似乎是以tanh和Leaky ReLU为激活函数的LSTM模型。

以Tanh和Leaky ReLu为激活函数的LSTM模型

以漏ReLu为激活函数的三层CNN模型

虽然预测看起来都还不错,但是过度拟合还是值得关注的。用LeakyReLU训练LSTM时,训练损失和验证损失有差距(5.97E-06 vs 3.92E-05)。应该使用正则化来最小化这种差异。

正规化

为了找到最佳的正则化方案,我用L1和L2的不同值进行实验。首先,我们需要定义一个新的函数来使数据适合LSTM。这里,我将使用偏差内归一化方法来正则化偏差向量。

实验通过重复训练模型30次进行,每次以30个周期为标准。

如果您使用的是Jupyter notebook,您可以直接从输出数据中查看下表。

使用偏移正则化的结果

为了直观比较,我们可以用箱线图来画:

通过比较可以看出,当L2正则化中的偏差向量系数为0.01时,可以得到最好的结果。

以便在所有超参数正则化方案中找出最佳组合,包括激活、偏置、核窗、循环矩阵等。需要逐一测试所有正则化方案,但这对于我目前的硬件配置来说并不现实。所以,我就先放一放,以后再讨论。

结论

从本文中,您已经了解到:

如何收集时间序列比特币数据?

如何为训练和预测准备数据?

如何利用深度学习技术预测比特币的价格?

如何将预测的结果可视化?

如何将正则化技术应用到模型中?

作者:黄公详Steeve黄

原文链接:https://github.com/khuangaf

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/btbjiaoxue/29306.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部