内容 | Rafael Schultze-Kraft

编译 | Aholiab

深谙币圈的你,对于那些出现在币价预测文章里的走势图想必不陌生。这些图往往旨在对未来n天的币价做预测,并声称是结果基于大数据或深度学习算法。一副特别科学又靠谱的样子。


但你不知道的是,即使这些图真的是用先进的深度学习模型和算法来实现,结果也非常的不可信。


本篇文章,WATTx数据科学家,机器学习工程师Rafael Schultze-Kraft亲自上阵,为我们揭秘那些「高大上」的币价预测图的背后,都有那些不为人知的技术秘密。

炒币的人想必都对下面这张图不陌生,就是加密货币行情的走势图。这张图是我用深度神经网络做的一个比特币币价的预测,你看这曲线、这走势,还是那么回事吧?

这张图的数据确是来源于以往的走势数据,并且只能用以往的数据来训练模型。你可能会说,那有了这个走势预测的模型,不就相当于有了印钞机器了吗?

想要?拿去啊。

比特币价预测图实现代码地址:

https://github.com/neocortex/lstm-bitcoin-prediction

不过慢着,B先装到这儿,听我一句,上面说的一切都别当真!重复一遍:上面说的一切都别当真!因为用深度神经网络的手段预测的走势图是完全不可靠的!谁当真谁傻。

没耐心版,请直接刷至文章的最后一部分。

当一件事美好的不像是真的,那它可能就不是真的

这几周,我看过很多文章里都出现了加密货币行情的预测图,与上面我做的那张图类似,这些图个个都「数据精准」、煞有介事。唯一的问题就是,它们都看上去「太美好了」,以至于不像是真的。

当一件事物太过美好而不像是真的,那它很可能就不是真的」


——Emmy Rossum

当然,我不是说那些文章不好,只是从技术上说,文章里的数据都太过「精确」。所以这篇文章中,我希望能够从技术的角度分析,为什么这些预测图在真实的币圈交易中,都不具备参考性。

来认识一下预测图背后的原理——LSTMs

让我们先来看看什么是LSTMs。LSTMs(Long short-term memory),也叫「长短期记忆网络」。是一种特殊的RNN,能够学习长期的依赖关系,可以自发对信息产生长期的「记忆」行为,而不是去刻意学习。比如,你在读这段话的时候,不需要对每个字词进行理解,可以根据上文的内容进行理解

LSTMs的核心所在是其基本组成元素「cell」的状态(cell state),也就是下图这条向右直线。cell的状态就像传送带,会沿着整条链条传送,而只有少数地方有一些线性交互。信息以这样的方式传送可以保持不变。

LSTMs通过一个叫「门」(gate)的结构控制cell的状态,并向其中删减或增加信息。你可以把门理解为一种控制信息通过的方式。门由一个Sigmoid网络层与一个按位乘操作构成。Sigmoid 层的输出值在0~1之间,表示每个部分所通过的信息。0表示「对所有信息关上大门」;1表示「我家大门常打开」。

LSTMs中「长短期」这个表达的意思是,LSTMs是一个可以记录短期记忆很长时间的模型,用来解决RNN中的梯度处理问题

说了这么多,其实你只要知道LSTMs可以很好的实现对于重要事件的区分、处理、预测就ok了

在我的比特币预测模型中,使用的是Python和Keras框架。你也可以在上文给出的Github地址中看到完整的实现代码。

抓取数据

首先,我们要先抓取出比特币市值的历史数据,这一操作也同样适用于其他加密货币。你可以通过cryptocompare API来实现,这个方法甚至可以抓取出从2012年10月10日到2018年4月的全部比特币价格数据。

实现代码如下:

抓取结果如下:

数据分类与训练

我把所抓取到的数据分为两组,一组用来训练模型、一组放到测试集中用作测试,比例为9:1。也就是说,2017年9月14日之前的数据,都会被用来训练;之后的数据则会被用来对受过训练的模型进行测试

下面代码实现了每日结束时的比特币币价。

走势如下所示:

最后一步——建模

LSTM的训练方法是这样的:我们先把数据以每7天一组进行划分(几天一组都可以),我们为了方便,先以7天为单位。然后对每组数据进行zero base,这样做的目的是,每组第一条数据进入后的值为0,其他数据则会根据第一条数据显示出变化后的值。这样一来,「预测」的目的就达到了,因为数据是变化的,而非绝对的。

实现代码如下:

我的LSTM的训练模型很简单,只有一层、20个神经元,我把dropout参数设为0.25,在dense层设置一个线性激活函数。此外,我用MAE(Mean Absolute Error)作为损失函数,优化器使用的是Adam。

整个神经网络的训练,为50 epoch(一个epoch是指把所有训练数据完整的过一遍)、batch size设置为4(在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个 batch)。

不过在确定神经网络的结构和参数时往往是随机的,我也并没有对它们进行任何优化,优化也不是本文的重点。

完成!高大上的预测走势图

通过以上的方法,我们就得到了文章一开始的走势图。

你可能会想:

这图看起来没毛病啊,到底有什么问题?

为啥不能供我们在实际的交易中参考呢?

让我们仔细看看最后30天的数据和显示。

看出来了吗?这张图的问题就是,当它预测某一天的数据时,显示的值其实是前一天的。整个走势图无异于相当于把前一天的数据移到了后一天。我们这样操作一下,就更能看出这一点。

看到了吗?平移一天之后,预测曲线和前一天真实币价的曲线几乎完全重合!重合!而这样的走势图,也是在那些预测币价走势的文章中最常见的。

下面是另一张真实数据和预测数据的对比图,平移一天之后,也是几乎重合。

下图是币价走势的真实数据和预测数据之间的关系。同样,如果把预测数据平移之前一天的真实数据上,两个数据几乎一致。

加引号的预测图

说了这么多,结论就是:我们看到的那些预测比特币、以太币、莱特币……的走势预测图,实际上只是把之前n天的数据挪到了未来n天,并不是真的预测!这一结论也同样适用于股市!所以不要再听信那些所谓的「专家」的预测了。

其实几乎所有号称使用深度学习技术来预测未来走势的方法都大同小异,都是通过LSTMs基于以往的数据来预测,但结果往往并不可靠。

当然,我们也可以用更复杂的技术手段,更多数据,并且对神经网络进行更多的优化。但基于历史的数据,也很难说对未来的走势具有指导性意义,这是金融界早就形成的常识。

怎么样?看了这篇文章后,你还相信那些所谓的专家预测吗?今后买币还是靠自己去分析吧。毕竟我大币圈只有赢家和输家,没有所谓的「专家」,更没有人能预测。

热门文章

  • 他俩靠区块链养猫赚了10万美金,还将投机方式毫无保留地公布了出来

  • 会撸猫了不起啊?有本事自己写一个撸猫撸鱼撸飞机才是牛逼

营长招人啦

CSDN区块链大本营招采编2名:

1. 对区块链技术有一定的理解,对大公司动态有极强敏感性,且有深度剖析的楞劲儿。

2. 出稿速度快,具有每天报题和出稿的能力。

3. 有能力采访行业高端人物,能将其观点进行深刻呈现。

4. 相关媒体经验2年以上。

5. 英语6级以上,能快速编译。

6. 本科以上

待遇:

绝不低于行业水平,只要有才,我们愿意给你一切资源。

邮件发送:puge@csdn.net

邮件注明:姓名+区块链+采编应聘

亏的裤子都没了!才知道那些币价预测图,居然是这么搞出来的!相关推荐

  1. BAT 才不关心币价,19年的5大重点在这里!

    BAT 才不关心币价,19年的5大重点在这里! 区块链币圈的热度消退之后,人们开始重新审视区块链的价值,这将是2019年区块链行业需要面对的"底色",很难说不是一件好事. 当热钱和 ...

  2. [转] 81条经典话语~~~当裤子失去皮带,才懂得什麽叫做依赖

    [转] 81条经典话语~~~当裤子失去皮带,才懂得什麽叫做依赖 转载自 瑞克    转载于2009年08月01日 23:07 阅读(8) 评论(1) 分类: 个人日记 1.无理取闹,必有所图! 2.幸 ...

  3. 【夜读】输与赢,在成长的面前都没那么重要

    [夜读]输与赢,在成长的面前都没那么重要 2017-07-26 人民日报 1 子山是一位茶商,喜欢藏茶.品茶.以茶会友.作为一位近乎痴迷的爱茶之人,更多的是跑到各个茶园甚至深山之中去收取一些绝品好茶. ...

  4. 今天/没什么事/这些天/都没什么事

    久违了,可爱的小企鹅,阔别两年多,今天终于又看到你熟悉的身影.这次安装费时颇多,下了 两个FC5都没顺利读出来,索性回到RedHat 9吧,瞧着都面熟.本子的空间太局促,所以连GNOME 也没装,只好 ...

  5. 为啥之前做外贸的人都没单了,你还有单?

    过去验货的时候,厂长说:今年的外贸订单比往年少了很多,之前有几个同行朋友一年也有两三个订单的,他们几个今年一个单都没下.就只剩下你还有外贸的单子,还挺厉害的! 我原本以为他这是恭维我的话,就笑着说我不 ...

  6. 欧拉、欧几里得、笛卡尔都没能解决的数学问题,他探索了新的方案

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 欧拉.欧几里得.笛卡尔.尼科马修斯都没能解决的千年数学问题,还有破解的可能吗? 还真有可能. 最近,一位名为佩斯·尼尔森 (Pace Nie ...

  7. 马斯克蝉联美国CEO薪酬榜No.1,年入41亿,库克皮猜纳德拉加起来都没他高

    郭一璞 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 硅谷钢铁侠.星链缔造者.特斯拉血汗工厂资本家.新造车势力的噩梦.中国人民的好朋友.煎饼果子爱好者,一龙·马斯克,现在又有了一个新的t ...

  8. 互掐了半辈子的两个数学巨头,到最后连单身问题都没解决

    我居然跑不赢 一只龟 看文章前,我们先来讨论一个问题:"假设有一笔钱,先花它一半,再花它剩下的一半,这么花下去,是不是永远花不完?". 看起来这个问题无懈可击,找不到bug,但是实 ...

  9. 马斯克自曝:至暗时刻求苹果收购,库克连瞧都没瞧一眼

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 金磊 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 苹果要搞车,今日被 ...

最新文章

  1. 从零玩转HTML5前端+跨平台开发上
  2. 关于CALayer的contentsGravity属性
  3. Linux 最常用的脚本,值得学习收藏!
  4. hello1源码解析
  5. 【渝粤教育】电大中专幼儿园组织与管理 (10)作业 题库
  6. 我的家庭私有云计划-2
  7. java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享
  8. ZK tree使用mold
  9. 从Dataframe训练数据,构造可迭代训练的batch数据
  10. atitit 项目管理 package 模块管理 包管理 依赖管理 maven attilax总结.docx
  11. 省钱兄同城外卖源码O2O同城服务源码校园外卖源码uniapp前端模版
  12. 6款良心本地视频播放器,功能强大还完全免费
  13. 大学计算机专业课教师听课评语,教师听课评语
  14. jqwidgets技术分享
  15. 《数论概论》读书笔记 第三章勾股数组与单位圆
  16. linux交互式进程初始化失败怎么办,电脑进入安全方式仍然显示交互式登录进程初始化失败...
  17. matlab回归分析sst_线性回归(2)—— 模型评估
  18. 微信链接防拦截跳转系统 微信域名防屏蔽技术
  19. Python爬虫之定时抢购淘宝商品
  20. Linux哪个命令显示文件内容,显示文件内容的Linux命令有哪些?Linux培训

热门文章

  1. Mysql使用 show processlist 排查问题
  2. 使用低代码实现app自动化
  3. java内存管理白皮书_Java 内存管理白皮书
  4. verilog实现冒泡法排序
  5. 什么是程序的耦合性?
  6. JS输出、语句和注释方法
  7. 计算机怎么加网关命令,默认网关怎么设置,教您默认网关怎么设置
  8. Visio绘制长方体
  9. 股票接口L2值得用吗?
  10. WDL - 添加管道