开源的机器学习框架:Apache Mahout Framework

分类:博客, 资源 标签:

过去十年里,从大量原始数据中解析出相关信息的需求急剧增长,以致于聚类(clustering)、协同过滤(collaborative filtering)和分类(categorization)等机器学习技术的需求也是呈稳定增长势态。基于此,Grant IngersollTed Dunning开发了机器学习的开源框架Apache Mahout,Apache Mahout项目采用的开发语言是Java,目前已经推出了它的0.3版本,它的源代码可以通过Subversion获取:
svn checkout http://svn.apache.org/repos/asf/lucene/mahout/trunk lucene/mahout/trunk

目前它的API文档可以在此(http://lucene.apache.org/mahout/javadoc/core/index.html)浏览。

Grant Ingersoll这样介绍Mahout项目

将已知方法语境中的文档聚类(Clustering)有助于把注意力集中到某些特定的聚类和内容上,从而避免在无关的内容上浪费精力。
推荐算法(协同过滤推荐算法-Collaborative Filtering)常常用来向用户推荐书籍、音乐、电影等内容,也可以用于多用户协作的应用中精简所需关注的数据。
模式匹配(朴素贝叶斯分类器-Naive Bayes Classifier等分类算法)可用于归类之前没有见过的文档。归类新文档时,算法在模式中查找文档中涉及的词汇, 计算该文档属于各个模式的概率,最后文档将归于概率最大的模式,输入的结果往往都以数值来表示算法本身对这个结果的正确与否有多大的把握。
Mahout项目通过Apache Hadoop的支持来获得伸缩性。

Mahout另一个重点是,它提供一系列工具把文本数据表示成矩阵形式。这也是采用Mahout机器学习算法来处理数据的首要任务。

Mahout项目是由Apache Lucene(开源搜索项目)社区几个热衷于聚类、分类等机器学习算法的技术人员所发起。社区最初的开发“追随”于Ng et al.发表的论文“支持多核之上的机器学习的Map-Reduce框架(Map-Reduce for Machine Learning on Multicore)”,自项目启动以来,社区也致力于各种机器学习算法、模式的开发。

最新Apache Mahout版本的亮点有:

新添功能:基于高性能的Colt library的math、collections模块

采用FP-bonsai pruning而实现更快的频繁模式增长(Frequent Pattern Growtt)算法

并行计算Dirichlet聚类算法(基于模型的聚类算法)

并行计算基于共现算法的推荐引擎

结合基于LLR的ngram生成算法并行处理文本文档到向量的转换

并行Lanczos SVD(奇异 值分解)计算

提供运行算法、工具以及范例的脚本程序

Ingersoll这样介绍这个版本中最激动人心的特性

新添加的分布式奇异值分解(Singular Value Decomposition)计算非常令人期待,此外,还有那些方便用户把内容导入到Mahout的诸多工具。其中,最激动人心的其实并不是有形的,而是Mahout社区的成长。社区目前已吸引到数量众多的贡献者和用户。任何开源项目的发展过程当中,最初阶段往往都很惨淡,工作常常只有一两个人去做,一旦当中有人离开甚至只是减缓开发速度,整个项目都有可能中途夭折。但我相信Mahout已经通过了这样的考验,现在已经有非常多非常活跃的社区成员正努力把它变成一个真正令人激动的项目。

Mahout项目的未来计划包括:

今年发布1.0版本,从1.0版本开始发布稳定的API

实现诸如随机梯度下降 (Stochastic Gradient Descent - SGD)算法的在线学习功能

提供支持向量机(Support Vector Machine - SVM)算法实现

SGD和SVM的实现将适宜于文档挖掘以及其它一些与文本或重复归类数据相关的应用。

尤其令人期待的是SGD系统将引入在线创建可交互变量的能力。

这里有一篇比较详细的介绍可供参考
Apache Mahout 简介



分类:博客, 资源 标签:

发表评论

You must be logged in to post a comment.