当前位置:
文档之家› 云计算与大数据 第五章 大数据应用与云平台实战
云计算与大数据 第五章 大数据应用与云平台实战
图5-1 基于机器学习的股票分析(预测)
有鉴于此,我们采用了如下开源组件来构建这套系统。 实时数据采集:Spring XD。 实时数据分析(IMDG):Apache Geode。 历史数据存储+分析(NoSQL):Apache HAWQ + Apache Hadoop。 机器学习、建模、优化:MADLib + R + Spark。
பைடு நூலகம்
图5-3 单机版开源股票分析系统
5.1.2 IMDG应用场景
内存数据网格(In-Memory Data Grid)技术的出现是为了应对日益增长的 数据实时处理性的需求。其中最具代表性的IMDG解决方案当属Pivotal Gemfire (其开源版本为Apache Geode)。在了解Gemfire/Geode的主要适用场景前,我 们先了解一下Gemfire/Geode的系统拓扑架构设计。
通常我们认为在一个充分共享信息的股票市场内,股票价格的短期走向是 不可预测的,因此无论是技术分析(Technical Analysis)还是基本面分析 (Fundamental Analysis)都不可能让一只股票在短周期(小时、天、1周或 10天)内获得好于市场表现的成绩—以上分析是基于著名经济学家Eugene Fama在1970年提出的EMH(Efficient Market Hypothesis,有效市场假说)。 以美国证券市场为例,它属于半强型有效市场(Semi-Strong Efficient Market),也就是说美国证券市场价格能够充分地反映投资者可以获得的信息, 无论投资人选择何种证券,都只能获得与投资风险相当的正常收益率(除非是 基于保密信息的内部交易,而在美国市场,内部交易是被法律严格禁止的)。
图5-1展示了这样的系统的基本数据流程逻辑图。在设计系统时,我们 需要充分考虑系统的并发性与可扩展性。以单只股票为例,可供分析的数据 特征有几十种之多(例如PE ratio、EBITDA、EPS等),而分析的频率与周 期可以以天为单位,也可能到秒级甚至毫秒级,如果要对多只股票并发分析, 则对系统的吞吐率要求更高。
5.1 大数据应用实践
5.1.1 基于开源架构的股票行情分析与预测
股票市场行情分析与预测一直是数据分析领域里面的重头戏,确切地说 IT行业的每一次重大发展的幕后推动者以及新产品(特别是高端产品)的最 先尝试者都包含金融行业,特别是证券交易市场,它符合大数据的四大特征: 交易量大、频率高、数据种类多、价值高。在本小节,我们为大家介绍一种 完全基于开源软件构建的大数据驱动的股票行情分析与预测系统的实现。
在本章中我们为大家介绍6个业界大数据、云计算实践案例。 大数据:基于开源、机器学习的实时股票预测。 大数据:IMDG实时内存分析应用场景。 大数据:数据湖泊之海量视频分析。 云计算:第二平台到第三平台的应用迁移。 云计算:混合云云存储管理平台CoprHD。 云计算:软件定义存储Ceph vs. ScaleIO。
在机器学习分类层面,通常我们有三种方式:
监督学习(Supervised Learning);
非监督学习(Unsupervised Learning);
增强学习(Reinforcement Learning)。
三者当中,通常监督学习最适合用于股票行情预测。监督学习算法有 很多,简单地列举几个: 逻辑回归(LR,Logistic Regression); 高斯判别分析(GDA,Gaussian Discriminant Analysis); 二次判别分析(QDA,Quadratic Discriminant Analysis); 支持向量机(SVM,Supporting Vector Machine)。
为了能让大数据工作者更好地进行相关实验与实践,笔者的Pivotal同 事们还把本股票实时预测分析系统移植到了笔记本电脑之上,如图5-3所示。 与图5-2的唯一区别在于把Apache Hadoop与HAWQ组件去掉,也就是说数据 处理完全实时化(实时导入、近实时机器学习模型训练、实时数据比对、实 时操作建议推送)。
如图5-2所示,整体架构的数据流程及工具链如下。
图5-2 基于开源软件构建的股票分析(预测)系统流程
(1)实时数据导入MPP或IMDG集群:Spring XD。 (2)基于机器学习模型的实时数据+历史数据比对分析:Spark MLlib+R(Spark 作为基于内存的分布式计算引擎来处理通过R语言机器学习建模的数据)。 (3)分析结果实时推送至股票交易处理应用端。 (4)实时数据存入历史数据库并进行线下分析(非实时): Apache Hadoop和 Apache HAWQ(用于交互式、PB规模高效SQL查询)。 (5)线下分析结果用于更新、调整机器学习模型。
关于机器学习部分,无论是Spark MLlib、Apache MADlib还是R语言,尽管 它们支持的底层分布式基础架构大不相同(MLlib跑在Spark之上;MADlib可以支 持主流的数据库系统,如PostgreSQL、Pivotal Greenplum以及HAWQ;R语言则 是提供了专注于统计计算与制图的工具包),它们都支持基本的学习算法与工具链, 例如分类(Classification)、回归(Regression)、聚类(Clustering)、 降维(Dimensionality Reduction)、协同过滤(Collaborative Filtering) 等。
有鉴于EMH假说,目前市场绝大多数的交易分析与预测软件都集中精力在 以下两个领域寻求突破: 高频交易(HFT,High Frequency Trading)或实时行情预测; 长期趋势预测(>10天)。
因此,我们在本节中设计的股票行情预测系统主要关注实时预测与长期 预测。在这样的系统内,至少有如下三个功能是必须实现的。 采集:实时股票交易数据导入与存储。 训练:基于历史数据集的训练、建模。 预测:结合实时数据与历史数据的决策生成。