选自GitHub
作者:DavidSheehan
机器之心编译
截至11月22日,比特币的价格再创历史新高,在惊讶于虚拟货币「不可战胜」的同时,我们或许能可以从这一波热潮中学到些什么。本文中,博士毕业于伦敦大学学院的DavidSheehan为我们介绍了使用Keras基于LSTM预测比特币价格走势的详细方法。在测试中,这个机器学习预测法似乎有着不错的准确度。
如果要列出2017年最为荒谬的三样事物,则一定是指尖陀螺、人工智能,当然,还有加密虚拟货币。以上是玩笑话,实际上我对虚拟货币的原理印象深刻,而且非常看好这种颠覆性技术的长期前景。我试图通过深度学习、机器学习或者说人工智能成功预测虚拟货币的价格。
我认为把深度学习和虚拟货币结合起来是非常独特的想法,但是在写本文时,我发现了一些类似的内容。这篇文章只关注比特币,但是我还想讨论一下以太币。
我们打算使用LSTM模型,一种非常适合时序数据的深度学习模型。如果你希望真正了解理论或概念,那么推荐阅读:
LSTM入门必读:从基础知识到工作方式详解
美德州监管机构要求破产法院拒绝Celsius将其产出比特币变现的请求:8月8日消息,美国德州监管机构要求破产法院拒绝Celsius将其产出的比特币变现的请求,理由是担心收益将被如何使用。
上周五,在Law360分享的一份正式反对意见中,德克萨斯州证券委员会(SSB)表示,Celsius过去确实涉及“有问题的资产部署决策,包括使用产出的比特币偿还公司间贷款,潜在的管理不善,以及持续未能遵守州监管要求。
Celsius董事会成员补充说,该公司未能概述如何计划用出售所得收益惠及债权人。(Blockworks)[2022/8/8 12:10:23]
深度|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
美国第二大公用事业公司Duke Energy旗下分析师正在研究比特币挖矿:7月3日消息,加密分析师Dennis Porter发推称,美国第二大公用事业公司Duke Energy旗下Lead Rates & Regulatory Strategy分析师Justin Orkney目前正在研究比特币挖矿,他同时也是比特币投资者。[2022/7/3 1:47:39]
数据
在构建模型之前,我们需要先获取一些数据。Kaggle上的数据集非常详细地记录了近几年的比特币价格。在这个时间长度中,噪声可能盖住了信号,因此我们需要选择单日价格数据。问题在于我们可能没有充足的数据。在深度学习中,没有模型可以克服数据严重缺乏的问题。我同样不想使用静态文件,因为未来使用新数据更新模型时,这种做法会复杂化更新流程。于是,我们计划从网站和API中抓取数据。
我们将在一个模型中使用多种虚拟货币,因此从同一个数据源抓取数据或许是一个不错的主意。我们将使用coinmarketcap.com。现在,我们只需要考虑比特币和以太币,但是使用这种方法添加最新火起来的山寨币就很难了。在输入数据之前,我们必须加载一些Python包,这样会容易一些。
数据:昨日BTC暴跌后20952枚比特币从币安转出:Glassnode数据显示,昨日BTC暴跌后的10分钟内,20952枚比特币从币安交易所转出。[2021/4/19 20:36:39]
importpandasaspd
importtime
importseabornassns
importmatplotlib.pyplotasplt
importdatetime
importnumpyasnp
Billions项目组convertthedatestringtothecorrectdateformat
bitcoin_market_info=bitcoin_market_info.assign(Date=pd.to_datetime(bitcoin_market_info))
Billions项目组converttoint
bitcoin_market_info=bitcoin_market_info.astype('int64')
比特币兑法币交易美元占比降至69.83%:Coinhills数据显示,当前比特币兑法币交易占比中美元占比降至69.83%,仍排名第一;排名第二为日元,占比为21.51%;欧元排名第三,占比为3.52%;排名四五位的分别为韩元(1.63%)、土耳其里拉(1.37%)。[2020/10/25]
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()
Github用户被盗的1400枚比特币已被拆分转账至5个不同的钱包地址:据欧科云链OKLink系统监测,此前GitHub用户“1400BitcoinStolen”声称被盗的1400枚比特币自今日凌晨2时开始,已逐步被拆分到数个不同地址中。
截至今日14时,该笔资金目前已发生4次交易,被拆分到了5个不同的地址中,最少的钱包余额为85 BTC,最高的为bc1qf8a68开头的地址,余额为500 BTC。[2020/8/31]
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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。