近年来,机器学习技术的应用已经迅速成为大型互联网企业、及网站业务创新的“秘密武器”。以前,谷歌组建了由计算机科学家与数学家组成的科研团队,专门建设机器学习系统。随着机器学习技术及其他统计分析技术的日益普及,“数据科学家”的需求从2010年以来暴增了许多,均要求其具备有软件开发者和分析师的技能,能够将统计分析技术应用到大型数据集。
因此,技能的稀缺和市场的不成熟,导致人力成本急剧增长,从而也增加了机器学习系统应用的成本,这就很难能够为中上型企业产生推动力量。对于数据科学家来说,当前的市场对于个人是机会,但是,对于众多关于服务的提供商来说,这也意味着是巨大的市场。
(一)SkyTree
SkyTree服务器是一组软件产品,旨在使用户能够非常迅速地部署精确而且非常快的机器学习系统。系统的设想是打破原有利用R或Matlab作为工具对机器学习系统建模的过程,而是采用或部署系统。SkyTree服务器本身设计为一个后端服务系统,由多个前端客户端通过API(可支持Python、Java和R)调用,数据通常以CSV文件格式传递至服务器。SkyTree的优势在于,用户可以直接地控制机器学习算法的应用,在服务器内部还实现了最流行的算法,如支持向量机、K近邻、K-Means等算法。
(二)BigML
BigML成立于2011年,创造的愿景“大众的机器学习平台”(ML for the rest of us),基于这一点,目前已经建立了一个定位于商务用户基于云的产品,大大降低了进行机器学习分析时的使用障碍。用户在使用服务时,首先上传一个文本格式的数据集,然后系统提供一个向导来格式化和清理数据,这中间通过一些复杂的模式匹配来支持,目标是确保系统可以容忍混乱数据,最后指定数据中的一个或多个列作为预测目标,用来训练预测模型。一旦模型被生成,附加数据也可以输入到系统中,模型可以对其做出预测。目前,BigML只支持决策树模型进行机器学习,基于该类模型提供了各种直观的可视化效果,极大地方便了用户的分析和诊断。
(三)Wise.io
Wise.io是由天体物理学教技组建的一家机器学习服务平台,易于使用是该平台最大的亮点。创始人最初是为了从太空望远镜中识别太空现象,采用非传统技术来构建机器学习模型,后为开放成为公共服务,使得其他公司也可以在自己的数据集上构建模型。从Hadoop、MongoDB或其他输入源读取数据后,Wise.io可以从上亿的数据进行多维分析,构建多维分析模型用于预测结果。产品目前定位于工业安全市场,在这个领域内以往需要花费六个月或更多的时候来产生报告,假设这期间可以分析所有炼油石、核电站的数据,则Wise.io只需要20分钟就可以报告结果,这将能极大地减少人力成本花费和降低生产风险。
与Google、Amazon等互联网巨头仅为自身建设(或少数开放)机器学习系统相比,以上三个产品均是基于云的方式向中小型企业提供机器学习服务,使得“Machine Learning as a Service”成为现实,能更好地发挥大数据的价值。服务平台化的趋势也正是努力发展,以满足当前的这一需求。这些平台凭借自身在大数据基础设施建设方面的工作,旨在向其他企业和公司提供数据分析与机器学习系统建设的服务。
除了在线提供的机器学习和数据挖掘服务平台,当前还流行着许多大数据处理的计算平台和开放框架,如Mahout、GraphLab等,以及方便易用的数据挖掘工具,如Weka、Scikit-Learn等。
(四)Mahout
Mathout是设计用于处理大规模数据的机器学习类库,它具有良好的可扩展能力,在内部实现了许多机器学习领域的经典算法,用来帮助开发者更加方便快捷地创建机器学习系统,将算法应用于实际用途。在Mathout中,大部分算法通过与Hadoop分布式框架相结合,利用MapReduce的线性扩展能力,可以有效地使用分布式系统来实现高性能计算。
目前,Mathout的最新版本为,主要提供种使用场景的算法:
推荐引擎:通过分析用户的历史记录来预测用户最可能喜欢的商品和服务等。在实现时,可以通过方便地完成基于用户项目的协同过滤、矩阵分解等推荐功能。
聚类:通过分析一系列相关的物品,采用K-Means、谱聚类等功能将它们依照相似性划分为相似的类。
分类:通过一组已经分类的物品进行训练,调用朴素贝叶斯、随机森林等算法,将其他未分类的其他物品归入相应的分类。
降维:基于等算法,将高维空间中的数据转换成至低维后,可用特征选择等任务。
以上Mahout算法所处理的场景,是在海量数据挖掘中常常会遇到的情况。通过将Mahout算法基于MapReduce框架实现,将数据的输入、输出和中间结果均保存在之HDFS上,使得Mahout具有局吞吐、局并发、局可靠性的特点,最终,使业务系统可以高效快速地得到分析结果。目前,Mahout有比较广泛的应用场景:如针对视频的分析和检索,在数字城市中的车牌识别、套牌分析、车辆轨迹分析等应用,都可以通过的Mahout分类算法部署在服务器集群中,完成大量数据的分析处理;另外还有商品推荐引擎,将用户的历史购买记录保存,采用Mahout推荐算法生成预测模型,当用户再次访问时,可调用的推荐接口近实时地得到分析结果。
(五)GraphLab
为解决大规模数据的图计算问题,Google提出了Pregel框架,采用以顶点为中心的计算模式,遵循BSP模型中的“计算通信同步”原则,完成图算法的数据同步和迭代任务。曾称其在内部的运算是使用完成,而其它是使用实现的,但一直没有将其具体实现开源。(www.xing528.com)
2010年,CMU的Select实验室提出了面向机器学习的并行计算框架GraphLab,延续在pregel中以顶点为中心的计算抽象,并提供了许多机器学习算法的实现。在2012年GraphLab升级到2.1版本,进一步优化了其并行模型,尤其对自然图的并行性能得到显著改进。
在GraphLab计算模型中,GraphLab将数据抽象成图中的顶点结构,并行化将顶点切分,将算法的执行过程抽象成Gather(收集)、Apply(更新)和Scatter(分散)三个步骤,每个顶点每一轮迭代都需要经过这三个阶段。
Gather阶段:每个工作顶点从其邻接顶点及自身收集数据,然后完成自定义的求和运算。
Apply阶段:利用Gather阶段收集的计算结果,结合当前顶点自身保存的数据,完成顶点上数据的更新。
Scatter阶段:当顶点上的数据更新完成后,更新该顶点邻接边上的数据。
在执行计算的过程中,GraphLab通过对三个阶段的读写权限控制来达到计算并发及同步的目的。并行计算过程中的同步通过Master和Mirror组件来实现,在Mirror上完成各个顶点的Gather阶段后,会将求和结果发送至Master结点,由Master完成Apply阶段顶点数据的更新,再同步至Mirror结点,将复杂的数据通信抽象成顶点的行为。
(六)Weka
Weka是新西兰怀卡托大学开发的一组机器学习算法软件,可用于不同的数据挖掘任务,这些算法集合可以方便地直接应用于现有数据集或者自定义开发Java代码来调用相应的API访问。WEKA基于面向对象的良好设计,封装了数据预处理、分类、回归、聚类、关联规则和可视化等算法及工具,用户在此基础上也可以开发和加入新的机器学习算法。
WEKA是用Java语言实现的,可以不用修改地跨平台使用。在Weka中提供了可视化的工作界面工具和算法的使用和运行过程都可以在GUI界面中提示,可以方便地完成对数据进行分析和预测建模。
WEKA中包含了比较全面的数据预处理和多种建模技术,支持多种标准的数据挖掘任务,更具体地说,包含数据预处理,聚类,分类,回归,可视化和特征选择等。WEKA的主用户界面是Explorer,用户可以在界面上操作完成几乎所有的数据挖掘操作,但实质上同样的功能也可以通过基于组件的Knowledge Flow接口和命令行访问。同时还有Experimenter,它允许在同一数据集上使用Weka中不同的机器学习算法进行性能的比较。
(七)Scikit-Learn
Scikit-learn是由Python语言编写的开源机器学习库,提供各种分类、回归和聚类算法,包括支持向量机、logistic回归、朴素贝叶斯、随机森林、Gradient Boosting、K-Means和DBSCAN等算法,并且还可以方便与Python数值与科学计算等库(如NumPy、SciPy和matplotlib进行互操作。是在“Google编程之夏”上发起,开源后广泛地被其他开发者重写,到2012年已经相当流行。
最初的用户是Evernote,它通过利用朴素贝叶斯分类器在食谱数据库区分用户,而后由Mendeley使用SGD算法来构建推荐系统,另外流行的Python自然语言工具包(NLTK)也可以通过nltk.classify来使用scikit-learn.Scikit-Learn设计的目标是简单、高效、容易使用、重用,在设计实现时,开发人员就项目的可分解性和可重用性进行很多方面的分析和讨论。
(八)Spark
Spark则是由UC Berkeley AMPLab实验室于2009开发的开源数据分析集群计算框架,是Berkeley Data Analytics Stack(DBAS)中的核心项目,被设计用来完成交互式的数据分析任务。2013年提交到Apache软件基金会后,2014年成为Apache顶级项目,目前最新为2014年发布的0.9.0版本。Spark起源于Hadoop开源社区,基于HDFS构建系统,计算过程能兼容MapReduce,但并不局限于两个阶段式MapReduce范型。
Spark主要提供了基于内存计算的抽象对象RDD,允许用户将数据加载至内存后重复地使用,这样的设计很适合于机器学习算法。基于内存的计算特点,与MapReduce相比,Spark在某些应用上的实验性能要超过100多倍。基于RDD提供的各种函数式抽象接口,AMPLab实验室还开发了一系列的项目,如Shark(Hive on Spark)、GraphX(Graph Computing)和Spark Streaming(支持流计算)。
图4-7 Spark组件生态圈
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。