[译] 实时股票预测的开源参考结构

关于转载授授权

大数据文摘作品,欢迎个人转发朋友圈,自媒体、媒体、机构转载务必申请授权,后台留言“机构名称+文章标题+转载”,申请过授权的不必再次申请,只要按约定转载即可,但文末需放置大数据文摘二维码。

作者:WilliamMarkito 翻译:姜咏耀, Helen 审校:Rebecca,Shawn 素材来源:https://blog.pivotal.io/big-data-pivotal/case-studies/an-open-source-reference-architecture-for-real-time-stock-prediction

有这样一个传说,将人工智能和机器学习算法用于服务器农场后,你就可以搬家到夏威夷,在让机器交易的同时你终日躺在沙滩上享受生活。但是,问题在于交易市场是不断变化的:经济力量,新产品,竞争,世界事件,法规,甚至推特都是因素。虽然没有免费的午餐,在开放源码机器学习算法和数据分析平台的帮助下,公司仍然可以得到一个“更好,更健康,更便宜的午餐”。在股票市场中,查看历史股票价格并尝试用不同的模型来预测未来是一种常见的做法。

虽然这篇文章不能提供股票分析的细节,但它提出了一种用于解决大规模实时数据分析问题的方法,在一个可高度扩展和延伸性的参考架构下使用开放源代码工具。下面的架构专注于金融交易,但也适用于几乎任何一个行业的实时使用需求。关于这篇文章所讨论的构架的更多信息也可在网上通过Linux基金会,SlideShare,YouTube,和Pivotal Open Source Hub阅读,同时这个架构的组件也可以通过这些网站下载。

架构:股票预测与机器学习

概括而言,股票预测和机器学习的架构(如下图所示)支持一个由预测模型推动的优化过程,并有三个基本组成部分。首先是输入,实时交易数据必须被捕获和存储,变为历史数据。其次,系统必须能够从数据的历史趋势中学习,并通过识别规律和概率来做出决定。第三,系统需要把新的交易数据与历史数据的规律和概率进行实时对比。然后预测出结果并决定采取何种行动。

上图是简化版,该类型的结构在系统范围增加的情况下还有几个基本因素要考虑。其中重要的是,数据量和系统集成。许多不同来源和类型的数据被用来预测结果,以及各种各样的汇数据处理。在一个20个数据源和20个处理汇的环境里,实时功能仍需要非常低延迟的操作。这体现了扩展问题的两个面。首先,数据处理应用程序要解决横向扩展就需要增加更多的节点,并保持非常快速的实时响应。其次,久而久之系统会存储更多的数据。除了历史数据集的增加,不同的分析工作也要同时运行来提高模型的预测性。

在系统架构中使用开源组件

如果把每一个高层次组件扩展到更具体的细节,开源产品可以运用到整个架构的各个功能部分。这些包括SpringXD (现在叫Spring Cloud Data Flow),Geode (孵化中),Spark MLlib, ApacheHAWQ,和Apache Hadoop™。

数据流和数据通道大致可以分为六个步骤,如上图所示,具体的讲解会在下面展示。更重要的是,每个组件都具备松散耦合和横向扩展性的特征。

SpingXD读取和处理来自雅虎金融网络服务器集群的API提供的实时数据。SpringXD极大简化了数据流的业务流程,并为系统集成提供内置连接器,SpringXD是基于Java语言的产品,可以处理各种转换。数据通过SpringXD后,被储存到一个具有快速,稳定,灵活,和线性扩展的系统内存里面,这个系统叫Apache Geode(孵化中),系统还可以提供事件的数据分发处理。

通过使用Apache Geode提供的新鲜数据,Spark MLib的应用程序建立和训练一个用于对比新数据与历史数据之间规律的模型。其它工具也同样支持这些模型,例如ApacheMADlib 或者 R。

机器学习模型得到的结果会被推送到其它应用进行处理,同时结果会在Apache Geode上更新,并进行实时预测和决策。

随着数据越来越多,旧的数据从最初的Apache Geode 被转移到Apache HAWQ, 最后被储存在Apache Hadoop中。ApacheHAWQ 支持基于拍字节的SQL查询,同时也允许数据科学家迭代并优化他们的模型。

另外一个处理程序被触发了,使用已收集的历史数据去有规律地重复训练和更新机器学习模型。在这程序里面,当历史数据发生改变或是有新的模型出现时,它会关闭数据循环,创建持续更新,并进行优化。

一个可在笔记本电脑上运行的简化架构

为了能让系统在一个普通笔记本电脑上运行,其架构需要被简化。Linux Foundation 在匈牙利的布达佩斯举行的Apache Big Data 2015 展会上展示了这一方法。简单来讲,这个方法是把长期数据存储组件从Apache HAWQ 和 Apache Hadoop 上移除。

在这个解决方案中,每个组件的功能都有一个具体定义并且会根据需求在本地扩展或者在云端拓展。为了达到方便调度,维护和支持的目的,开源组件可以与Pivotal Clould Foundry 进行连接用于处理程序运行,PivotalGemFire 取代了Apache Geode 或者PivotalBig Data Suite 里的其它组件,用于处理大型的历史数据集。

GitHub支持这一架构,另外一个例子是JavaFX。雅虎金融的新数据被SpringXD采集后推送到Apache Geode的服务器上,然后Apache Geode把这些数据推送到JavaFX,JavaFX把这些实时数据更新并将这些数据以可视化形式呈现给用户。另外还有一个叫股票信息模拟器的应用,它能够在由于没有网络连接而无法收集信息的情况下使用,或者是为了二次开发而使用。

根据上图所示,数据正在被实时收集然后生成相应的指数,比如最后收盘价,平均指数和预测平均指数。

更多相关学习

这个系统的源码和安装教程可以在Pivotal Open Source Hub上找到。下载的文件中也包括一个Vagrant box的虚拟环境,当中包含了所有需要的组件。

从Linux Foundation, Slideshare, or YouTube获得更多的信息

访问与Apache Geode website, Pivotal GemFire website相关话题的文章

查看Apache Geode website, Pivotal GemFire website网站

阅读Apache MADlib详情

Editor’s Note: ©2015 Pivotal Software, Inc. All rights reserved.Pivotal, Pivotal Greenplum, Pivotal GemFire and Pivotal Cloud Foundry aretrademarks and/or registered trademarks of Pivotal Software, Inc. in the UnitedStates and/or other countries. Apache, Apache Hadoop, Hadoop, Apache Geode,Apache MADlib, Apache HAWQ, and ApacheSpark are either registered trademarks or trademarks of the Apache SoftwareFoundation in the United States and/or other countries.

编者注记:相关版权©2015 Pivotal Software, Inc. All rights reserved.Pivotal, Pivotal Greenplum, Pivotal GemFire and Pivotal Cloud Foundry aretrademarks and/or registered trademarks of Pivotal Software, Inc. in the UnitedStates and/or other countries. Apache, Apache Hadoop, Hadoop, Apache Geode,Apache MADlib, Apache HAWQ, and ApacheSpark are either registered trademarks or trademarks of the Apache SoftwareFoundation in the United States and/or other countries.

本文分享自微信公众号 - 大数据文摘(BigDataDigest)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-01-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏美团技术团队

智能投放系统之场景分析最佳实践

背景 美团点评作为最大的生活服务互联网平台,需要针对数亿用户进行各种运营活动,而其线上存在超过千万的POI,覆盖超过2000城市、2.5万个后台商圈。在海量数据...

424120
来自专栏阮一峰的网络日志

1TB字节有多大?

我们都知道,硬盘的储存容量是用字节(Byte)来表示的。1个字节是最小的储存单位。 1KB(kilobyte)表示1024个字节,1MB表示1024个KB,1G...

423130
来自专栏木东居士的专栏

如何优雅地设计数据分层

本文主要讲解数据仓库的一个重要环节:如何设计数据分层! 其它关于数据仓库的内容可参考之前的文章。

1.7K60
来自专栏机器学习AI算法工程

使用Python爬取社交网络数据分析

数据抓取 一、直接抓取数据 二、模拟浏览器抓取数据 三、基于API接口抓取数据 数据预处理 可视化 数据分析 扩散深度 扩散速度 空间分布 节点属性 网络属性...

1K70
来自专栏腾讯移动品质中心TMQ的专栏

浅谈ACC建模测试

1、黔驴技穷 随着测试新鲜血液的引入,如何在测试领域站稳脚跟,成为一名老司机是很多测试人头疼的问题,之前听过一门课程讲过测试人员发展的心路历程(图...

43070
来自专栏程序人生 阅读快乐

python高手之路

这不是一本常规意义上Python的入门书。这本书中没有Python关键字和for循环的使用,也没有细致入微的标准库介绍,而是完全从实战的角度出发,对构建一个完整...

11210
来自专栏磐创AI技术团队的专栏

DrQA基于维基百科数据的开放域问答机器人实战教程

【磐创AI导读】:本文主要向大家推荐一个开放域问答机器人的实战项目。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。

9610
来自专栏Crossin的编程教室

想用 Python 做数据分析?先玩玩这个再说

数据分析是 Python 的一大应用领域。据我所知,本教室的读者中有不少学习 Python 就是为了在工作中能用它分析数据。这其中,又有相当一部分人是涉及金融相...

63070
来自专栏目标检测和深度学习

终于!大家心心念念的PyTorch Windows官方支持来了

这一次更新从 0.3.1 到 0.4.0 有着非常多的改进,最重要的就是官方支持 Windows 系统。在没有官方支持前,Windows 上安装 PyTorch...

14830
来自专栏SDNLAB

Overture在其Ensemble中使用OpenDaylight控制器

近日,Overture公司宣布对其Overture Ensemble架构进行升级,此次升级包括添加一个基于OpenDaylight(ODL)项目的软件定义网络(...

280110

扫码关注云+社区

领取腾讯云代金券