Mahout 是 Apache Software Foundation旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
主要特性
Apache Mahout 运行环境包括
针对分布式的优化
支持Scala API
支持线性代数操作
支持Scalak扩展
支持IScala REPL的交互式shell
集成MLLib库
可以运行在 Spark、H2O和Flink上
支持稀疏矩阵和向量的加速计算
和Apache Zeppelin整合转换矩阵tsv
Apache Mahout Samsara 算法包括
随机矩阵的奇异值分解算法ssvd、dssvd
随机主成分分析算法(spca、dspca)
分布式Cholesky QR(thinQR)
分布式正则化交替最小二乘法(dals)
协同过滤算法::Item和Row的相似性
朴素贝叶斯分类算法
核心分布算法
我们可以使用Maven很方便地使用它:
从官网下载Maven,解压到本地,并配置环境变量,过程省略。
2. 在eclipse中配置maven
3. 新建一个Maven Project
4.修改项目的pom.xml,默认已经有junit依赖了,我们只需要添加:
XHTML
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.12</version>
</dependency>
保存后,选择Run As->Maven Clean,大约7s后,相关包下载完成。
5.新建一个UserCF类测试基于用户的协同过滤算法:
Java
public class UserCF {
final static int NEIGHBORHOOD_NUM = 2;
final static int RECOMMENDER_NUM = 3;
public static void main(String[] args) throws IOException, TasteException {
String path = UserCF.class.getClassLoader().getResource("").getPath();
String file = "/data/item.csv";
DataModel model = new FileDataModel(new File(path+file));
UserSimilarity user = new EuclideanDistanceSimilarity(model);
NearestNUserNeighborhood neighbor = new NearestNUserNeighborhood(NEIGHBORHOOD_NUM, user, model);
Recommender r = new GenericUserBasedRecommender(model, neighbor, user);
LongPrimitiveIterator iter = model.getUserIDs();
while (iter.hasNext()) {
long uid = iter.nextLong();
List<RecommendedItem> list = r.recommend(uid, RECOMMENDER_NUM);
System.out.printf("uid:%s", uid);
for (RecommendedItem ritem : list) {
System.out.printf("(%s,%f)", ritem.getItemID(), ritem.getValue());
}
System.out.println();
}
}
}
数据为: item.csv
1,101,5.0
1,102,3.0
1,103,2.5
2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0
3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0
4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0
5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0
6.运行输出为:
总结:maven在研究开源项目的时候的确很方便,同时要研究推荐算法,还必须对mahout源码进一步研究。
参考文档:http://mahout.apache.org/developers/developer-resources.html
网友评论