Apache Mahout 是 ApacheSoftware Foundation (ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序,并且,在 Mahout 的最近版本中还加入了对Apache Hadoop 的支持,使这些算法可以更高效的运行在云计算环境中。
在Mahout实现的机器学习算法见下表:
算法类
|
算法名
|
中文名
|
分类算法
|
Logistic Regression
|
逻辑回归
|
Bayesian
|
贝叶斯
|
SVM
|
支持向量机
|
Perceptron
|
感知器算法
|
Neural Network
|
神经网络
|
Random Forests
|
随机森林
|
Restricted Boltzmann Machines
|
有限波尔兹曼机
|
聚类算法
|
Canopy Clustering
|
Canopy聚类
|
K-means Clustering
|
K均值算法
|
Fuzzy K-means
|
模糊K均值
|
Expectation Maximization
|
EM聚类(期望最大化聚类)
|
Mean Shift Clustering
|
均值漂移聚类
|
Hierarchical Clustering
|
层次聚类
|
Dirichlet Process Clustering
|
狄里克雷过程聚类
|
Latent Dirichlet Allocation
|
LDA聚类
|
Spectral Clustering
|
谱聚类
|
关联规则挖掘
|
Parallel FP Growth Algorithm
|
并行FP Growth算法
|
回归
|
Locally Weighted Linear Regression
|
局部加权线性回归
|
降维/维约简
|
Singular Value Decomposition
|
奇异值分解
|
Principal Components Analysis
|
主成分分析
|
Independent Component Analysis
|
独立成分分析
|
Gaussian Discriminative Analysis
|
高斯判别分析
|
进化算法
|
并行化了Watchmaker框架
|
|
推荐/协同过滤
|
Non-distributed recommenders
|
Taste(UserCF, ItemCF, SlopeOne)
|
Distributed Recommenders
|
ItemCF
|
向量相似度计算
|
RowSimilarityJob
|
计算列间相似度
|
VectorDistanceJob
|
计算向量间距离
|
非Map-Reduce算法
|
Hidden Markov Models
|
隐马尔科夫模型
|
集合方法扩展
|
Collections
|
扩展了java的Collections类
|
Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能。
Taste是Apache Mahout提供的一个个性化推荐引擎的高效实现,该引擎基于java实现,可扩展性强,同时在mahout中对一些推荐算法进行了MapReduce编程模式转化,从而可以利用hadoop的分布式架构,提高推荐算法的性能。
在Mahout0.5版本中的Taste,实现了多种推荐算法,其中有最基本的基于用户的和基于内容的推荐算法,也有比较高效的SlopeOne算法,以及处于研究阶段的基于SVD和线性插值的算法,同时Taste还提供了扩展接口,用于定制化开发基于内容或基于模型的个性化推荐算法。
Taste不仅仅适用于Java应用程序,还可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑。Taste的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。
下图展示了构成Taste的核心组件:
从上图可见,Taste由以下几个主要组件组成:
DataModel:DataModel是用户喜好信息的抽象接口,它的具体实现支持从指定类型的数据源抽取用户喜好信息。在Mahout0.5中,Taste提供JDBCDataModel和FileDataModel两种类的实现,分别支持从数据库和文件文件系统中读取用户的喜好信息。对于数据库的读取支持,在Mahout 0.5中只提供了对MySQL和PostgreSQL的支持,如果数据存储在其他数据库,或者是把数据导入到这两个数据库中,或者是自行编程实现相应的类。
UserSimilarit和ItemSimilarity:前者用于定义两个用户间的相似度,后者用于定义两个项目之间的相似度。Mahout支持大部分驻留的相似度或相关度计算方法,针对不同的数据源,需要合理选择相似度计算方法。
UserNeighborhood:在基于用户的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的“邻居用户”的方式产生的,该组件就是用来定义与目标用户相邻的“邻居用户”。所以,该组件只有在基于用户的推荐算法中才会被使用。
Recommender:Recommender是推荐引擎的抽象接口,Taste中的核心组件。利用该组件就可以为指定用户生成项目推荐列表。
mahout项目是由多个子项目组成的,各子项目分别位于源码的不同目录下,下面对mahout的组成进行介绍:
1、mahout-core:核心程序模块,位于/core目录下;
2、mahout-math:在核心程序中使用的一些数据通用计算模块,位于/math目录下;
3、mahout-utils:在核心程序中使用的一些通用的工具性模块,位于/utils目录下;
上述三个部分是程序的主题,存储所有mahout项目的源码。
另外,mahout提供了样例程序,分别在taste-web和examples目录下:
4、taste-web:利用mahout推荐算法而建立的基于WEB的个性化推荐系统demo;
5、examples:对mahout中各种机器学习算法的应用程序;
6、bin:bin目录下只有一个名为mahout的文件,是一个shell脚本文件,用于在hadoop平台的命令行下调用mahout中的程序;
在buildtools、eclipse和distribution目录下,有mahout相关的配置文件
7、buildtools目录下是用于核心程序构建的配置文件,以mahout-buildtools的模块名称在mahout的pom.xml文件中进行说明;
8、eclipse下的xml文件是对利用eclipse开发mahout的配置说明;
9、distribution目录下有两个配置文件:bin.xml和src.xml,进行mahou安装时的一些配置信息。
(在开发的时候一般很少对这个目录下的文件进行修改,所以不用太关注,知道大体什么意思就ok)
另 外,在mahout的下载地址下可以看到有个文件夹与mahout处于同一级别,它是mahout项目的分支项目—mahout- collections,用于实现了核心程序中使用的集合类操作,该模块独立于mahout进行开发,是对标准jdk中关于集合类的修改,使其可以适应数 据密集型项目的开发。
分享到:
相关推荐
基于C语言实现贪心算法背包问题源码.zip基于C语言实现贪心算法背包问题源码.zip基于C语言实现贪心算法背包问题源码.zip基于C语言实现贪心算法背包问题源码.zip基于C语言实现贪心算法背包问题源码.zip基于C语言实现...
matlab模糊聚类分析(算法源码) matlab模糊聚类分析(算法源码) matlab模糊聚类分析(算法源码) matlab模糊聚类分析(算法源码) matlab模糊聚类分析(算法源码) matlab模糊聚类分析(算法源码) matlab模糊聚类...
java算法大全源码包 java算法大全,有近100多种常见算法的源代码,是学习JAVA算法的难得资料。
基于C语言实现贪心算法背包问题动态规划源码.zip基于C语言实现贪心算法背包问题动态规划源码.zip基于C语言实现贪心算法背包问题动态规划源码.zip基于C语言实现贪心算法背包问题动态规划源码.zip基于C语言实现贪心...
VC++数据结构经典算法源码包VC++数据结构经典算法源码包VC++数据结构经典算法源码包VC++数据结构经典算法源码包VC++数据结构经典算法源码包
java算法大全源码包java算法大全源码包java算法大全源码包java算法大全源码包java算法大全源码包java算法大全源码包
MATLAB实现JPEG压缩算法程序源码MATLAB实现JPEG压缩算法程序源码MATLAB实现JPEG压缩算法程序源码MATLAB实现JPEG压缩算法程序源码MATLAB实现JPEG压缩算法程序源码MATLAB实现JPEG压缩算法程序源码MATLAB实现JPEG压缩...
java算法大全源码包.rar ,JAVA,算法 java算法大全源码包.rar ,JAVA,算法 java算法大全源码包.rar ,JAVA,算法
DSP下LOGARITHMIC DIFFERENTIAL COMPRESSION(LDC)语音压缩算法源码包
1000多种java算法大全源码包
基于C++语言实现非局部均值图像去噪算法源码。基于C++语言实现非局部均值图像去噪算法。 并进行高噪声图像降噪。基于C++语言实现非局部均值图像去噪算法源码。基于C++语言实现非局部均值图像去噪算法。 并进行高噪声...
java算法大全源码包_近100种算法打包
matlab算法源码MATLAB智能算法案例分析三十个提取方式是百度网盘分享地址
java算法大全源码包100多种 java算法大全源码包100多种
Ketama算法是一致性hash算法的一个优秀实现。增删节点后数据命中率及均分率都很高。
算法设计与分析部分背包贪心算法是源码 C语言
Java算法大全源码包开源源码
银行家算法的vue实现过程源码.zip银行家算法的vue实现过程源码.zip银行家算法的vue实现过程源码.zip银行家算法的vue实现过程源码.zip银行家算法的vue实现过程源码.zip银行家算法的vue实现过程源码.zip银行家算法的...