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

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

参与 | 王鹤

编辑| 唐娜

近年来,以比特币为代表的加密数字货币在社交媒体和搜索引擎上受到热捧。 然而,比特币的价格波动也让读者经历了过山车的经历。

随着各大权威机构本周对区块链的未来表示乐观,从1月17日到18日凌晨,比特币成功止住了前一天的大幅跌势,涨幅接近20%(18.46%)。

如果我们能够明智地制定投资策略,我们就能发现这些反复无常的波动背后隐藏着巨大的利润。

与传统金融工具相比,加密货币缺乏指标数据,导致预测非常困难。 本文以最流行的比特币为例,讨论如何利用深度学习来预测加密数字货币的价格并了解其未来的发展趋势。

免责声明:交易比特币等数字货币是一种投资。 交易有风险,买币一定要谨慎。 由此产生的得失与营长无关。 如果您想给予奖励,只需点击“转发”和“点赞”即可。

第一步

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

数据采集

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

图片[1]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

数据准备

从数据源收集的数据需要进行解析,然后才能发送到模型进行预测。 下面的代码中,PastSampler类引用了本博客上的方法,将数据划分为一列子数据集和对应的标签数据集。 模型输入数据大小 (N) 为 256,输出大小 (K) 为 16。

值得注意的是,Poloniex 收集的数据是基于 5 分钟间隔的时间序列数据。 这表明输入模型跨越 1280 分钟的数据,而输出跨越 80 分钟以上。

图片[2]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

创建 PastSampler 类后,我将使用该类来收集数据。 由于原始数据范围从0到10000多,因此需要对数据进行缩放,以使神经网络更容易理解数据。

图片[3]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

建筑模型

美国有线电视新闻网

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

图片[4]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

CNN 传奇人物

图片[5]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

上面的代码是我构建的第一个卷积神经网络模型。 以下代码将我的 GPU 编号为“1”(这是因为我有 4 个 GPU,您可以将其设置为您的任何 GPU)。 由于 Tensorflow 似乎在多个 GPU 上运行不佳,因此将其限制在一个 GPU 上是合适的。 如果您没有 GPU,请不要担心,只需忽略下面的代码即可。

图片[6]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

构建 CNN 模型的代码非常简单。 添加dropout层是为了避免过拟合问题。 损失函数定义为均方误差(MSE),优化器采用最先进的Adam自适应优化。

图片[7]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

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

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

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

图片[8]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

LSTM

长短期记忆网络 (LSTM) 是循环神经网络 (RNN) 的变体,其发明目的是为了解决普通 RNN 中梯度消失的问题。 据说 LSTM 能够记住更长的时间输入步骤。

图片[9]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

LSTM 图例(来自 >)

图片[10]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

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

图片[11]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

格鲁乌

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

图片[12]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

从)

图片[13]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

只需将 LSTM 模型中的第二行替换为

图片[14]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

用。。。来代替

图片[15]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

绘图结果

我只看CNN模型的图像,因为三个模型的计算结果的图像是相似的。 首先,我们需要重建模型并将训练权重加载到模型中。

图片[16]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

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

图片[17]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

上面显示的两个Dataframe分别构造了比特币的真实价值(实际价格)和预测价格。 为了更好的可视化,绘制的图表仅显示 2017 年 8 月之后的数据。

图片[18]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

我们使用 pyplot 来绘制图表。 由于预测价格是以16分钟为间隔的,为了方便我们查看结果,我不会将它们全部链接起来。 因此,此处预测的数据被绘制为红点,如第三行中的“ro”所示。

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

图片[19]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

图片[20]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

使用 2 层 CNN 模型预测最佳比特币价格

从上图可以看出,预测价格与比特币的实际价格非常相似。 为了获得最佳的模型性能,我决定在该集合的配置下测试神经网络,如下表所示。

图片[21]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

不同模型下的预测结果

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

图片[22]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

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

图片[23]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

以 Leaky ReLu 作为激活函数的 3 层 CNN 模型

虽然预测看起来都不错,但过度拟合仍需警惕。 当使用 LeakyReLU 训练 LSTM 时,训练损失和验证损失之间存在差距(5.97E-06 vs 3.92E-05),应使用正则化来最小化这种差异。

正则化

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

图片[24]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

实验将模型重复训练30次,每次以30个循环为标准。

图片[25]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

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

图片[26]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

使用偏差正则化的结果

图片[27]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

为了可视化比较,我们可以使用箱线图:

图片[28]-程序员如何一夜暴富?这里有一份比特币价格预测指南-首码网-网上创业赚钱首码项目发布推广平台

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

为了找到所有超参数正则化之间的最佳组合,包括激活、偏差、内核窗口、循环矩阵等,有必要一一测试所有正则化方案,但这对于我当前的硬件配置来说还不够。 现实。 因此,我将把它放在一边,稍后再说。

综上所述

从这篇文章中,您了解到:

© 版权声明
THE END
喜欢就支持一下吧
赞赏 分享