选自GitHub
作者:DavidSheehan
机器之心编译
截至11月22日,比特币的价格再创历史新高,在惊讶于虚拟货币「不可战胜」的同时,我们或许能可以从这一波热潮中学到些什么。本文中,博士毕业于伦敦大学学院的DavidSheehan为我们介绍了使用Keras基于LSTM预测比特币价格走势的详细方法。在测试中,这个机器学习预测法似乎有着不错的准确度。
如果要列出2017年最为荒谬的三样事物,则一定是指尖陀螺、人工智能,当然,还有加密虚拟货币。以上是玩笑话,实际上我对虚拟货币的原理印象深刻,而且非常看好这种颠覆性技术的长期前景。我试图通过深度学习、机器学习或者说人工智能成功预测虚拟货币的价格。
我认为把深度学习和虚拟货币结合起来是非常独特的想法,但是在写本文时,我发现了一些类似的内容。这篇文章只关注比特币,但是我还想讨论一下以太币。
我们打算使用LSTM模型,一种非常适合时序数据的深度学习模型。如果你希望真正了解理论或概念,那么推荐阅读:
LSTM入门必读:从基础知识到工作方式详解
金色财经独家整理 贸易战对比特币走势影响如何?贸易战避险,比特币“效果不错”:
今日凌晨,中美史上最大贸易战打响,全球股市重挫,数字资产比特币走势如何再被讨论。重温早在3月2日Brian Kelly在CNBC的关于贸易战的言论:贸易战将加强美元贬值、物价上涨的预期,由于普遍担忧通胀,人们愿意投资比特币这样的“新黄金”、 “硬资产”(避险),“在贸易战中,比特币效果不错”。
Brian Kelly的观点发表于300亿美元贸易战规模预测下,而今600万“变本加厉”。中国已于今晨展开“反击”,外媒也普遍预测美国为长期输家。股市下跌将支撑黄金,金价在昨日由于加息和贸易战担忧下收于两周最高点,而比特币为何反而下跌?据CNBC称:比特币未守住9000美元关口或因日本对加密数字货币加强监管力度的政策可能。金色财经认为,由于政策目前仍为影响比特币的主要因素,在最晚今年7月份国际监管措施出台、政策逐步趋稳后,数字货币价格将逐渐与黄金涨跌保持相似的变动。[2018/3/23]
深度|LSTM和递归网络基础教程
教程|基于Keras的LSTM多变量时间序列预测
教程|如何判断LSTM模型中的过拟合与欠拟合
美国商品期货交易委员会公布关于如何定义加密货币已经交易完成的解释: 美国商品期货交易委员会(CFTC)已经公布了解释说明,关于如何定义加密货币已经从买方“交付”给了卖方。确认交付已经完成的的两个因素是:1. 客户有能力 (i)拥有和控制全部数量的商品,无论是以保证金,还是使用杠杆或其他融资购买,以及(ii)在交易之日起28内,自由地商业使用商品(在任何特定平台内外);以及2. 报价人及卖方(包括各自的关联方或与报价人或卖家合作的其他人士)不保留任何利益或控制任何以保证金,杠杆或其他融资方式购买的商品,在超过自交易日期起计28日后。据CFTC称,提议的解释不是最终的,需要经过90天的公众评议期。[2017/12/16]
深度|从任务到可视化,如何理解LSTM网络中的神经元
干货|图解LSTM神经网络架构及其11种变体
完整代码地址:https://github.com/dashee87/blogScripts/blob/master/Jupyter/2017-11-20-predicting-cryptocurrency-prices-with-deep-learning.ipynb
如何让比特币的尸体飘过:财新专栏作家王立仁今日发文,尽快让比特币的尸体飘过来的方法核心点就在于影响其交易过程和记账过程,从而破坏对比特币系统的信任。他还论述了7大攻击比特币的方法:花钱硬碰硬的算力攻击(Brute Attack)、巧取通讯环节(SmartAttack)、攻击记账系统、攻击代码、攻击法币与数字货币的通道、路由分割(RoutingSplitting)攻击和直接硬分叉。[2017/12/4]
数据
在构建模型之前,我们需要先获取一些数据。Kaggle上的数据集非常详细地记录了近几年的比特币价格。在这个时间长度中,噪声可能盖住了信号,因此我们需要选择单日价格数据。问题在于我们可能没有充足的数据。在深度学习中,没有模型可以克服数据严重缺乏的问题。我同样不想使用静态文件,因为未来使用新数据更新模型时,这种做法会复杂化更新流程。于是,我们计划从网站和API中抓取数据。
我们将在一个模型中使用多种虚拟货币,因此从同一个数据源抓取数据或许是一个不错的主意。我们将使用coinmarketcap.com。现在,我们只需要考虑比特币和以太币,但是使用这种方法添加最新火起来的山寨币就很难了。在输入数据之前,我们必须加载一些Python包,这样会容易一些。
新版国家职业分类大典增加97个数字职业,含密码工程技术人员等:金色财经报道,人力资源社会保障部在中华人民共和国职业分类大典(2022年版)网上新闻发布会上表示,新版国家职业分类大典增加97个数字职业,含密码工程技术人员等。国家职业分类大典修订工作委员会委员、专业技术人员管理司司长李金生表示,2015年版大典颁布后,专业技术人员大类也就是二大类已经发布了15个新职业,包括人工智能、物联网、大数据、云计算、智能制造、工业互联网、虚拟现实、区块链、集成电路、机器人、增材制造、数据安全工程技术人员等等。除此以外,这次修订还增设了密码工程技术人员、碳管理工程技术人员、金融科技师等29个新的职业。[2022/9/29 6:01:29]
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')
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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。