首页 理论教育 大数据机器学习研究现状-云计算技术的发展与应用

大数据机器学习研究现状-云计算技术的发展与应用

时间:2023-10-17 理论教育 版权反馈
【摘要】:近年来,政府也越来越多地关注大数据项目的研究和发展。在2012年,美国政府启动大数据研究与发展计划,投资亿美元设立了若干项目。斯坦福大学Chu等人在2006年NIPS会议发表的论文,对常用机器学习算法的“统计查询模型”形式进行分析,基于MapReduce抽象提出能适用于海量数据的机器学习算法通用计算框架。因此,如何扩充框架的有效性,发展基于大数据计算平台的海量数据挖掘技术成为了工业界和学术界共同关心的研究话题。

大数据机器学习研究现状-云计算技术的发展与应用

虽然自第一台计算机发明以来,现代的计算机发生了巨大的变化,计算能力也遵循“摩尔定律”跨越式发展。然而,在呈指数式爆炸增长的数据面前,计算能力仍然显然十分微小。近年来,数据规模从MG、GB级发展到TB、PB级甚至、EB、ZB(1ZB=230TB)级。2012年底,全球数据总量达到2.75ZB,在未来的2020年,全球数据总量可能达到35.2ZB。大数据所蕴藏的价值,不仅能够直接促进商业中生产效率以及销售额的提升,而且对整个社会来说都能对关乎国计民生的政策制定起到关键作用。近年来,政府也越来越多地关注大数据项目的研究和发展。在2012年,美国政府启动大数据研究与发展计划,投资亿美元设立了若干项目。2011年,欧盟提出“开放数据战略”,以促进经济增长,并于2013年召开了欧盟数据论坛和大数据论坛。澳大利亚在2013年发布了《大数据战略报告》,将“促进数据开放和大数据发展”列为重大领域之一。

当前,在越来越普遍的互联网应用、商业智能分析等商业具体应用,天气预测、生物基因挖掘等科学数据处理领域,如何高效地存储和组织这些海量数据将是当前首先会遇到的难题,而后如何应用机器学习、数据分析技术对这些数据进行有效地挖掘,从而产生价值,这又是工业界和学术界需要共同努力的方向,这其中不仅仅需要对传统机器学习理论、思想和算法进行创新,也对当前的计算能力发起了挑战。

在数据存储组织方面,大数据时代下的数据丰富多样,类型各异,可以是结构化记录形式,也可以是半结构化的文本,无结构化的图片和视频等等,数据量的暴增使得传统的数据库系统架构远远不能达到数据分析的需求。而传统的机器学习技术,为了求解或优化模型参数,通常需要多次访问数据来完成计算输出,这样的思路应用在大规模数据集上,即使是超级计算机也不能有效地完成。

2004年,Google公司发表了其内部设计的大数据处理平台MapReduce、GFS和BigTable的论文,奠定了大数据框架的关键技术基础。后来,Douglas Cutting等人在开源搜索引擎Nutch系统上,基于MapReduce和GFS的设计思路,创立了开源计算平台Hapdoop。Hapdoop技术作为海数据处理的并行计算模型,主要包含两个部分:分布式存储和分布式计算。它利用大规模廉价集群,首先为用户提供分布式的文件系统HDFS,能使用户方便地存储和处理大规模数据;再利用Map和Reduce两个基本抽象,来分治完成所有程序的计算,着重考虑了系统的扩展性和可用性。后来,Hadoop成为Apache的顶级项目,并逐渐成为海量数据处理的标准平台,与其外围项目与技术如Pig、Hive、HBase等,一起已经逐步构成一个完整的关于大数据的生态圈。

斯坦福大学Chu等人在2006年NIPS会议发表的论文,对常用机器学习算法的“统计查询模型”(Statistical Query Model)形式进行分析,基于MapReduce抽象提出能适用于海量数据的机器学习算法通用计算框架。在论文中,作者通过对经典的机器学习算法进行分析发现,任何符合“统计查询模型”的算法都能转化成某种求和形式,这并不会改变原来的算法或求取近似解,而是原来算法的精确解,这种实现能够随着处理器或分布式节点的增加具有线性增长能力。在该框架的设计思想下,论文作者实现了一系列的经典数据挖掘算法,在实验结果中这些算法均展现了很好的线性可扩展能力。受这篇论文的思想启发,开源社区开发了机器学习算法库Mahout,致力于海量数据环境下的数据挖掘与机器学习并行化任务,其中很多算法都基于Hadoop计算平台。目前,Mahout最新发布版本号为0.9,围绕分类、聚类和推荐三个领域实现了很多算法和模型,如贝叶斯分类器、随机森林决策树分类器、隐马尔科夫模型、LDA主题模型、K-Means聚类、谱聚类、协同过滤、并行频繁模式挖掘等算法,极大地方便了大规模数据分析领域中的数据挖掘任务。

MapReduce模型的计算抽象,要求计算逻辑简单快速,以key/value作为输入和输出,比较适用于结构一致的数据。然而对于很多的数据分析应用,往往需要涉及到反复推演、空间搜索等复杂的算法,其中每一步的计算本身也可以相当复杂。因此,如何扩充框架的有效性,发展基于大数据计算平台的海量数据挖掘技术成为了工业界和学术界共同关心的研究话题。当前,也有很多典型研究和应用进展,下面进行介绍。

近年来,学术界加大了对海量数据挖掘技术研究的关注,例如SIGMOD、VLDB、SIGKDD、SIGIR等国际学术会议都有论文说明如何增强和扩展MapReduce在数据分析中的应用。可以从四个层次构建基于网络或P2P网络的分布式数据挖掘服务:第一层为组成数据挖掘算法的基本元素,如预处理、数据过滤和可视化等,用于对通用任务的处理小模块;第二层为具体的单个数据挖掘任务(例如分类、聚类、关联规则发现等算法),实现为单个具体算法模块;第三层为分布式的数据挖掘过程(如并行分类、协作式机器学习及元学习模型等),作为流程训练及学习的整体框架;第四层为前面三层元素组合而成的应用。在这些服务的基础上,他们还设计了基于云计算的数据挖掘开放服务框架。在该框架中,基本的服务设计为简单的操作,复杂的服务及复杂的组合设计为操作库,最终采用面向服务的编程语言来组合它们。(www.xing528.com)

云计算在工业界发展迅猛,Hadoop已经成为当前海量数据处理的标准平台。目前,各大云计算公司都推出商用计算平台,如Amazon公司的EC2和S3(AWS)、Google公司的Google Apps Engine(GAE)、Microsoft公司的Windows Azure、Salesforce公司的Sales Force、Cloudera的商用平台等。这些平台不仅提供了数据的分布式存储和基本计算功能外,有的还提供了方便易用的数据挖掘工具箱,便于对数据进一步分析。为了向企业提供大规模数据挖掘服务,商务智能领域的各大公司,如Oracle、IBM等也都拥有基的数据挖掘服务平台;Google、Facebook、Yahoo!等使用成千上万个Hadoop节点组成的集群进行海量网页索引与搜索日志分析。国内互联网公司也注意到了大数据技术的无穷魅力,认识到大数据所能带来的巨大价值。例如,百度拥有Hadoop服务器达到2万多台,数量上已经超过了Yahoo和Facebook,计划用于构建智能数据分析平台和查询处理平台,服务于百度的各个业务部门,同时还支撑对外的云计算平台服务。阿里巴巴通过自主改造,构建了国内最大的Hadoop集群云梯,对整个阿里巴巴海量电子商务交易数据进行存储和深度数据挖掘。腾讯于2013年开始正式涉及云计算领域,专注于海量社交网络服务数据挖掘和大规模图的实践分析,目前腾讯分布式数据仓库(TDW,Tecent Distributed Data Warehouse),基于Hadoop平台,利用云计算开展海量数据分析,覆盖腾讯绝大部分业务产品。

当前Hadoop在大数据处理场景下的优异表现,得到了众多来自学术界和工业界的青睐。Hadoop作为一个大数据处理平台,能够同时提供分布式存储和计算的能力,其具有很好的线性可扩展优势实际上最初的设计就是为了解决Nutch的可扩展问题。面对海量数据的处理,HDFS存储通过以大块的形式组织和存储文件,专门优化以满足高吞吐要求,特别适合于超大文件(如TB、PB级),而且副本及容错机制使得其具有优越的可扩展和可用特性,同时在处理时能够利用数据局部性加快文件访问。MapReduce的简单抽象,同时并行地处理大量数据,使得Hadoop能够轻松面对海量数据的批量处理问题。对于编程开发者而言,map和reduce算子实现简单,仅需要关心业务数据逻辑应该如何编写,而不再需要关注分布式系统中的复杂问题。

但是它也存在着很多问题。在最初的Hadoop版本设计中,一直都存在单点故障问题,任务均由Master完成调度分配,直至Hadoop 2.X版本。HDFS的大块机制在处理大文件时特别有效,但是并不适合于小文件上的随机读取。除了HDFS外,MapReduce是一种批量处理架构,这也意味着它并不适合于实时或流式的数据访问,在处理联机事务处理(OLTP,Online Transaction Processing)型任务时也显得力不从心。MapReduce采用shared-nothing架构设计,在执行Job时,各个Job之间是彼此隔离的,因此在各个任务间的全局同步或者状态的共享是一个很大的挑战,只能通过HDFS等部件进行交互。而MapReduce在处理过程中,会将map中间的结果写入本地磁盘,然后再通过shuffle机制发送至reduce进行处理,因此也不适合需要大量的网络通讯任务。最后,MapReduce将计算抽象分为map和reduce算子,但不是所有的任务都能够以这样的操作形式实现,这也导致MapReduce应用的局限性。因此,基于MapReduce框架设计的平台应用也会遭遇同样的问题,往往会因为迭代轮数过多、shuffle代价太大等问题,导致平台实用性能降低。

如前面提到的,工业界和学术界都热衷于通过MapReduce来实现海量数据挖掘,但又不得不受制于MapReduce本身的诸多缺点。因此,如何能避免MapReduce所带来的问题,同时又能充分利用其优越的海量数据处理能力,成为实践中重要的问题。相比Hadoop,Spark的中间数据放到内存中,目标主要是扩展MapReduce对迭代类运算的支持,和低延迟的交互式数据挖掘任务。MapReduce和Spark的一个重要区别是前者是非循环的,这意味着数据流来自于一个源,处理完成后,写入到另外一个源。而Spark允许将一份数据缓存在内存中,在同一份数据上迭代计算,因此,Spark更适合于迭代运算较多的机器学习或数据挖掘运算。RDD可以把数据cache到内存中,下一步操作直接从内存中输入,省去了MapReduce大量的磁盘I/O操作,这对于迭代运算比较常见的机器学习算法来说,效率提升会相当大,在一般的实验中可以超越MapReduce达到倍。

另外,Spark提供了比Hadoop更为通用和灵活的操作接口。与Hadoop提供的Map和Reduce相比,Spark基于RDD抽象,提供的数据集操作类型更多。RDD对象支持常用的函数式操作算子,比如map、filter、flatMap、groupByKey、reduceByKey、union、join等多种操作类型,这些操作称为Transformations。同时还提供count、collect、reduce、lookup、save等多种actions。

面对爆炸式增长的数据信息,由人们手工去完成信息的整理和加工显然会力不从心,因此使用机器帮助人们在浩瀚的信息海洋中筛选出对用户有价值的、感兴趣的内容已经成为了必要。而对于大多数开发者来说,需要单独以研究的角度去钻研这些机器学习算法,再从工程的角度去实践,显然门槛相当高。因此,提供“开箱即用”的机器学习或数据挖掘算法工具包、组织良好的API接口、和交互式数据分析,对于数据挖掘工程实践者来说显得越来越重要。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈