实时股票预测的开源参考结构
有这样一个传说,将人工智能和机器学习算法用于服务器农场后,你就可以搬家到夏威夷,在让机器交易的同时你终日躺在沙滩上享受生活。但是,问题在于交易市场是不断变化的:经济力量,新产品,竞争,世界事件,法规,甚至推特都是因素。虽然没有免费的午餐,在开放源码机器学习算法和数据分析平台的帮助下,公司仍然可以得到一个“更好,更健康,更便宜的午餐”。在股票市场中,查看历史股票价格并尝试用不同的模型来预测未来是一种常见的做法。
虽然这篇文章不能提供股票分析的细节,但它提出了一种用于解决大规模实时数据分析问题的方法,在一个可高度扩展和延伸性的参考架构下使用开放源代码工具。下面的架构专注于金融交易,但也适用于几乎任何一个行业的实时使用需求。关于这篇文章所讨论的构架的更多信息也可在网上通过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把这些实时数据更新并将这些数据以可视化形式呈现给用户。另外还有一个叫股票信息模拟器的应用,它能够在由于没有网络连接而无法收集信息的情况下使用,或者是为了二次开发而使用。
根据上图所示,数据正在被实时收集然后生成相应的指数,比如最后收盘价,平均指数和预测平均指数。
微信名:
HadoopSummit
微信ID:
hadoopinchina
中国Hadoop技术峰会是亚太地区举办最早、规模最大、影响力最广阔的大数据盛会。
Chinahadoop.com是China Hadoop Summit的内容网站。
HadoopSummit是Chinahadoop.com的微信发布平台。