股票大数据挖掘实战:股票预测篇
上QQ阅读APP看书,第一时间看更新

1.5 Mahout分布式框架

1.5.1 Mahout简介

Apache Mahout是Apache软件基金会(Apache Software Foundation, ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout是机器学习和数据挖掘的分布式框架,区别于其他开源数据挖掘软件,它是基于Hadoop之上的,所以Hadoop的优势就是Mahout的优势。Mahout用Map-Reduce实现了部分数据挖掘算法,不过还有很多算法仍无法用Map-Reduce的并行方式实现。

1.5.2 Mahout算法集

Mahout包含四种典型使用场景的算法,具体如下。

(1)推荐引擎算法。通过分析用户的使用行为的历史记录来推算用户最可能喜欢的商品、服务等相关物品。实现时可以基于用户的推荐(通过查找相似的用户来推荐项目)或基于项目的推荐(计算项目之间的相似度并做出推荐)。

(2)聚类算法。通过分析将一系列相关的物品划分为相关性相近的群组。

(3)分类算法。通过分析一组已经分类的物品,将其他未分类的物品按同样的规则归入相应的分类。

(4)相关物品分析算法。相关分析算法识别出一系列经常一起出现的物品组(经常一起查询、放入购物车等)。

Mahout相关的算法集如表1-1所示。

表1-1 Mahout相关的算法集

1.5.3 Mahout系统架构

利用开放源码项目并竭力使项目的代码与自己的代码协同工作的人越多,其基础架构就越充实。对于Mahout来说,这种演进方式促成了多项的改进。最显著的一项就是经过重大改进的一致的命令行界面,它使得在本地和Apache Hadoop上提交和运行任务更加轻松。

任何机器学习库都有两个关键组件,即可靠的数学库和一个有效的集合包。数学库提供了多种功能:范围从表示向量、矩阵的数据结构、操作这些数据结构的相关操作符,直到生成随机数的工具和对数似然值等统计数据等。Mahout的集合库包含的数据结构与Java集合提供的数据结构相似(包括Map、List等),不同之处在于它们原生地支持Java原语,例如int、float和double,而非其Object对应部分Integer、Float和Double。这一点非常重要,因为在处理拥有数百万项特征的数据集时,需要精打细算地考虑每一位。

Mahout还引入了一种新的集成模块,其中包含的代码旨在补充或扩展Mahout的核心功能。例如,推荐机制(协同过滤)代码现在支持将其模型存储在数据库MongoDB或Apache Cassandra中。集成模块还包含多种将数据转为Mahout格式的机制,以及评估所得到的结果的机制。

最后,Mahout提供了大量的新示例,包括通过Netflix数据集计算推荐内容、聚类Last.fm音乐以及其他许多示例等。通过将Mahout算法构建于Map-Reduce框架之上,将算法的输入、输出和中间结果构建于HDFS分布式文件系统之上,使得Mahout具有高吞吐、高并发、高可靠性的特点。最终使得业务系统可以高效快速地得到分析结果。

1.5.4 Mahout的优缺点

Mahout的优缺点如表1-2所示。Mahout从设计开始就旨在建立可扩展的机器学习软件包,用于处理大数据机器学习的问题,当正在研究的数据量大到不能在一台机器上运行时,就可以选择使用Mahout,让数据在Hadoop集群上进行分析。Mahout某些部分的实现直接创建在Hadoop之上,这就使得其具有进行大数据处理的能力,这也是Mahout最大的优势所在。相比其他图形化的机器学习软件,Mahout只提供机器学习的程序包,不提供用户图形界面,并且Mahout并不包含所有机器学习算法的实现,这一点可以算得上是它的一个劣势。但Mahout并不是“又一个机器学习软件”,而是要成为一个“可扩展的用于处理大数据的机器学习软件”,相信会有越来越多的机器学习算法将在Mahout上面实现。

表1-2 Mahout的优缺点