选自GitHub
作者:DavidSheehan
机器之心编译
截至11月22日,比特币的价格再创历史新高,在惊讶于虚拟货币「不可战胜」的同时,我们或许能可以从这一波热潮中学到些什么。本文中,博士毕业于伦敦大学学院的DavidSheehan为我们介绍了使用Keras基于LSTM预测比特币价格走势的详细方法。在测试中,这个机器学习预测法似乎有着不错的准确度。
如果要列出2017年最为荒谬的三样事物,则一定是指尖陀螺、人工智能,当然,还有加密虚拟货币。以上是玩笑话,实际上我对虚拟货币的原理印象深刻,而且非常看好这种颠覆性技术的长期前景。我试图通过深度学习、机器学习或者说人工智能成功预测虚拟货币的价格。
我认为把深度学习和虚拟货币结合起来是非常独特的想法,但是在写本文时,我发现了一些类似的内容。这篇文章只关注比特币,但是我还想讨论一下以太币。
我们打算使用LSTM模型,一种非常适合时序数据的深度学习模型。如果你希望真正了解理论或概念,那么推荐阅读:
LSTM入门必读:从基础知识到工作方式详解
Spencer Schiff:人工智能的发展导致比特币未来几年可能跌至接近零:金色财经报道,黄金支持者彼得·希夫(Peter Schiff)的儿子Spencer Schiff表示,比特币不会对世界产生重大影响,未来几年其价格可能会跌至接近零。Spencer Schiff多年来一直认为比特币是一种出色的长期投资和通胀对冲工具,而他的父亲是比特币的批评者。
Schiff解释称:我观点的转变与熊市无关。去年年底比特币触底那天,我仍然非常看好比特币。我甚至说服母亲抄底,我不再关心比特币的唯一原因是人工智能。如果没有人工智能,我仍然认为比特币的价格将达到每枚数千万美元”。[2023/7/20 11:05:41]
深度|LSTM和递归网络基础教程
教程|基于Keras的LSTM多变量时间序列预测
教程|如何判断LSTM模型中的过拟合与欠拟合
深度|从任务到可视化,如何理解LSTM网络中的神经元
干货|图解LSTM神经网络架构及其11种变体
完整代码地址:https://github.com/dashee87/blogScripts/blob/master/Jupyter/2017-11-20-predicting-cryptocurrency-prices-with-deep-learning.ipynb
比特币网络难度上调0.32%至24.27T:据欧科云链链上大师数据显示,比特币于今日17时4分在区块高度715680迎来难度调整,全网难度上调0.32%至24.27T;过去一周平均出块间隔为9.63分钟。[2021/12/25 8:03:48]
数据
在构建模型之前,我们需要先获取一些数据。Kaggle上的数据集非常详细地记录了近几年的比特币价格。在这个时间长度中,噪声可能盖住了信号,因此我们需要选择单日价格数据。问题在于我们可能没有充足的数据。在深度学习中,没有模型可以克服数据严重缺乏的问题。我同样不想使用静态文件,因为未来使用新数据更新模型时,这种做法会复杂化更新流程。于是,我们计划从网站和API中抓取数据。
我们将在一个模型中使用多种虚拟货币,因此从同一个数据源抓取数据或许是一个不错的主意。我们将使用coinmarketcap.com。现在,我们只需要考虑比特币和以太币,但是使用这种方法添加最新火起来的山寨币就很难了。在输入数据之前,我们必须加载一些Python包,这样会容易一些。
importpandasaspd
importtime
BIS创新中心负责人:比特币未能通过成为货币的测试:金色财经报道,国际清算银行(BIS)创新中心负责人Benoit Coeure在接受彭博社的采访时表示,比特币不断波动的价值使其无法被视为一种货币。Coeure称,比特币可以成为一种“投资工具”,但是其没有通过成为货币的测试,也没有通过作为支付工具的测试,仅仅是因为其价值变化很大。Coeure称,中央银行专注于提供流动性和安全性的工具,这就是为什么我们要研究央行数字货币。加密货币在阳光下占有一席之地,但有所不同,它不是一种支付工具。[2021/3/26 19:18:39]
importseabornassns
importmatplotlib.pyplotasplt
importdatetime
importnumpyasnp
Billions项目组convertthedatestringtothecorrectdateformat
bitcoin_market_info=bitcoin_market_info.assign(Date=pd.to_datetime(bitcoin_market_info))
报告:比特币第三次减半后行情走势更为看涨:加密货币分析公司CoinGecko在最近的2020年第二季度报告中,描绘了2016年和2020年比特币减半前后的价格变化。2016年7月,比特币交易价格在400美元到950美元之间。而在之前的50天里,它上升了11%,在减半后的50天里,价格下降了9%。这种差异非常重要,因为在整个2016年里,比特币的价格上涨了近150%。尽管超过50%的涨幅出现在2016年6月之前,但该年的首次下跌发生在涨幅减半之后。直到2016年10月,币价才开始上涨,以四位数的估值结束了2016年。而2020年在减半之前的50天里,比特币价格上涨了50%,在之后的50天里上涨了5%。要特别指出,在比特币减半一半的两个月前,也就是大约60天的时间里,比特币单日跌幅超过了50%。60天的价差将接近15%。鉴于2016年比特币减半后走势、随后四年比特币市值的大幅增长以及2020年的经济形势,目前的比特币价格比预期“更加看涨”。该报告得出以下结论:“尽管2020年比特币市值是2016年的15倍,但在第三次减半事件中,比特币的价格走势更为看涨。”(AMBCrypto)[2020/7/5]
Billions项目组converttoint
易纲当选为新一任央行行长 曾公开表态称比特币“很有特点”,具有“启发性”,个人会保持长期关注:3月19日上午,易纲当选为新一任央行行长,据公开资料显示,早在2013年,易纲就公开表态称,比特币“很有特点”,具有“启发性”,个人会保持长期关注,但从央行角度不会承认其合法性。而对于区块链技术,根据2016年的一篇G20峰会报道,易纲表示G20将推数字普惠金融新原则,努力打通全球金融服务“最后一公里”。金色财经注意到,在易纲所描述的数字普惠金融新原则中,“探索利用分布式记账(区块链)技术升级金融基础设施的运行效率与安全性”是重要内容之一。[2018/3/19]
bitcoin_market_info=bitcoin_market_info.astype('int64')
Billions项目组importtherelevantKerasmodules
fromkeras.modelsimportSequential
fromkeras.layersimportActivation,Dense
fromkeras.layersimportLSTM
fromkeras.layersimportDropout
defbuild_model(inputs,output_size,neurons,activ_func="linear",
dropout=0.25,loss="mae",optimizer="adam"):
model=Sequential()
model.add(LSTM(neurons,input_shape=(inputs.shape,inputs.shape)))
model.add(Dropout(dropout))
model.add(Dense(units=output_size))
model.add(Activation(activ_func))
model.compile(loss=loss,optimizer=optimizer)
returnmodel
那么,build_model函数构建了一个模型,名为model,该模型添加了一个LSTM层和全连接层。该层的形态已经调整以适合输入。该函数还包括更通用的神经网络特征,如dropout和激活函数。现在,我们只需指定LSTM层中神经元的数量和训练数据。
Billions项目组initialisemodelarchitecture
eth_model=build_model(LSTM_training_inputs,output_size=1,neurons=20)
Billions项目组trainmodelondata
Billions项目组eth_preds=np.loadtxt('eth_preds.txt')
--------------------------------------------------------------------------
Epoch50/50
6s-loss:0.0625
我们刚才构建了一个LSTM模型来预测明天的以太币收盘价。现在我们来看一下效果如何。首先检查训练集性能。代码下面的数字代表50次训练迭代后该模型在训练集上的平均绝对误差。我们可以看到模型输出就是每日收盘价。
我们不应对它的准确率感到惊讶。该模型可以检测误差来源并进行调整。事实上,获取趋近于零的训练误差并不难。我们只需要数百个神经元和数千个训练epoch。我们应该对它在测试集上的性能更感兴趣,因为测试集中是模型未见过的全新数据。
注意单点预测具备误导性,而我们的LSTM模型似乎可以在未见过的测试集上实现良好的性能。最显著的缺点是单点预测无法检测出当以太币突然上涨时必然会下跌。事实上,它一直都是失败的,只不过在这些波动点更加明显而已。预测价格一般更接近一天后的实际价格。我们还可以构建一个适用于比特币的类似的LSTM模型,测试集预测结果见下图。
如前所述,单点预测具有一定误导性。我们现在构建一个LSTM模型来预测接下来5天的虚拟货币价格。
从视觉效果上来看,预测结果没有其单点预测更加鲜明。但是,我很高兴,该模型返回了一些细微的行为;它不仅仅预测价格在一个方向的移动轨迹。因此,该模型还有很多优化空间。
现在回到单点预测,我们的深度机器人工神经模型看起来还不错,但是随机游走模型看起来也还行。与随机游走模型类似,LSTM模型对随机种子的选择很敏感。那么,如果我们想对比这两种模型,就需要把每个模型运行多次来评估模型误差。误差可以作为测试集中真实和预测收盘价的绝对差。
或许AI完全值得这些炒作!这些图显示了在进行25次不同的初始化之后,每个模型在测试集上的误差。LSTM模型对比特币和以太币价格的预测误差分别是0.04和0.05,完胜相应的随机游走模型。
只是为了打败随机游走模型的话也太low了。对比LSTM模型和更合适的时序模型岂不是更加有趣!另外,我确定很难再提升我们的LSTM模型了。可能虚拟货币价格变化没有规律吧,可能没有一个模型可以把信号和噪声分离开。以后的文章中可能会讨论这些话题。
幸运的是,你已经察觉到我对使用深度学习预测虚拟货币价格变化的怀疑态度。原因在于我们忽略了最优的框架:人类智能。很明显,预测虚拟货币价格的完美模型是:
我确定他们最终最终会找到深度学习的使用案例的。同时,你可以下载完整的Python代码构建自己的模型。
原文链接:https://dashee87.github.io/deep%20learning/python/predicting-cryptocurrency-prices-with-deep-learning/
本文为机器之心编译,转载请联系本公众号获得授权。
------------------------------------------------
加入机器之心:hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告&商务合作:bd@jiqizhixin.com
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。