大数据分析:机器学习算法实现的演化
我将会对机器学习算法的不同的实现范式进行讲解,既有来自文献中的,也有来自开源社区里的。首先,这里列出了目前可用的三代机器学习工具。
第一代机器学习工具/范式由于第一代工具拥有大量的机器学习算法,因此它们适合进行深度的分析。然而,由于可扩展性的限制,它们并不都能在大数据集上进行工作——比如TB或者PB级的数据(受限于这些工具本质上是非分布式的)。也就是说,它们可以进行垂直扩展(你可以提高工具运行的节点的处理能力),但无法进行水平扩展(它们并非都能在集群上运行)。第一代工具的供应商通过建立Hadoop连接器以及提供集群选项来解决这些局限性——这意味着它们在努力对R或者SAS这样的工具进行重新设计以便可以进行水平扩展。这些都应该归入第二代和第三代工具,下面我们将会介绍到。 第二代机器学习工具/范式第二代工具(现在我们可以把传统的机器学习工具比如SAS这些称之为第一代工具了)比如Mahout(http://mahout.apache.org),Rapidminer以及Pentaho,它们通过在开源的MapReduce产品——Hadoop之上实现相关算法,提供了扩展到大数据集上的能力。这些工具仍在快速完善并且是开源的(尤其是Mahout)。Mahout拥有一系列的聚类及分类的算法,以及一个相当不错的推荐算法(Konstan和Riedl,2012)。因此它可以进行大数据的处理,现在在生产环境上已经有大量的使用案例,主要用于推荐系统。我在一个线上系统中也使用Mahout来实现了一个金融领域的推荐算法,发现它确是可扩展的,尽管并不是一点问题没有(我还修改了相当一部分代码)。关于Mahou的一项评测发现它只实现了机器学习算法中的很小的一个子集——只有25个算法是达到了生产质量的,8到9个在Hadoop之上可用,这意味着能在大数据集上进行扩展。这些算法包括线性回归,线性支持向量机,K-means聚类算法,等等。它通过并行训练,提供了顺序逻辑回归的一个快速的实现。然而,正如别人指出的(比如Quora.com),它没有实现非线性支持向量机以及多变项逻辑回归(这也称为离散选择模型)。 毕竟来说,本书并不是要为了抨击Mahout的。不过我认为有些机器学习算法的确是很难在Hadoop上实现,比如支持向量机的核函数以及共轭梯度法(CGD,值得注意的是Mahout实现了一个随机梯度下降)。这一点别人也同样指出了 ,比方说可以看一下Srirama教授的一篇论文(Srirama等人,2012年)。这里详细地比较了Hadoop和Twister MR(Ekanayake 第二代工具还有一些是传统工具基于Hadoop上进行的扩展。这类可供选择的有Revolution Analytics的产品,它是在Hadoop上对R语言进行了扩展,以及在Hadoop上实现R语言程序的一个可扩展的运行时环境(Venkataraman等 第三代机器学习工具/范式Hadoop自身的局限性以及它不太适合某类应用程序,这促进研究人员提出了新的替代方案。第三代工具主要是尝试超越Hadoop来进行不同维度的分析。我将会根据三种维度来讨论不同的实现方案,分别是机器学习算法,实时分析以及图像处理。 迭代式机器学习算法伯克利大学的研究人员提出了一种替代方案:Spark(Zaharia HaLoop(Bu等人,2010)也扩展了Hadoop来实现机器学习算法——它不仅为迭代式应用的表示提供了一层编程抽象,同时还使用了缓存的概念来进行迭代间的数据共享,以及对定点进行校验,从而提高了效率。Twister( http://iterativemapreduce.org )是类似HaLoop的一个产品。 实时分析实时分析是超越Hadoop考虑的第二个维度。来自Twitter的Storm(感觉原文说反了)是这一领域的最有力的竞争者。Storm是一个可扩展的复杂事件处理引擎,它使得基于事件流的实时复杂运算成为了可能。一个Storm集群的组件包括:
在实践中,一个架构如果同时包含了Kafka(来自LinkedIn的一个分布式队列系统)集群来作为高速的数据提取器,以及Storm集群来进行处理或者分析,它的表现会非常不错,Kafka spout用来快速地从Kafka集群中读取数据。Kafka集群将事件存储在队列中。由于Storm集群正忙于进行机器学习,因此这么做是很有必要 的。本书的后续章节将会对这个架构进行详细的介绍,以及在Storm集群中运行机器学习算法所需的步骤。Storm也被拿来跟实时计算领域的其它竞争者进行比较,包括Yahoo的S4以及Typesafe的Akka。 ===================================================== (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |