Mahout 目前提供了一些工具,可用于通过 Taste 库建立一个推荐引擎 — 针对 CF 的快速且灵活的引擎。Taste 支持基于用户和基于项目的推荐,并且提供了许多推荐选项,以及用于自定义的界面。Taste 包含 5 个主要组件,用于操作
用户、项目 和 首选项:
DataModel:用于存储用户、项目和首选项UserSimilarity:用于定义两个用户之间的相似度的界面ItemSimilarity:用于定义两个项目之间的相似度的界面Recommender:用于提供推荐的界面UserNeighborhood:用于计算相似用户邻近度的界面,其结果随时可由Recommender使用
如下代码可以构建一个简单的基于用户间相似度的推荐系统。
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.model.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.*;
import java.io.*;
import java.util.*;
class RecommenderIntro {
public static void main(String[] args) throws Exception {
DataModel model = new FileDataModel(new File("intro.csv"));
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =
new NearestNUserNeighborhood(2, similarity, model);
Recommender recommender = new GenericUserBasedRecommender(
model, neighborhood, similarity);
List<RecommendedItem> recommendations =
recommender.recommend(1, 1);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
}
可以看出各个模块间的依赖关系:

接口的视图如下:
参考:
【1】 http://www.ibm.com/developerworks/cn/java/j-mahout/
【2】 mahout in action
本文介绍Apache Mahout项目及其推荐引擎Taste的核心组件与工作原理,通过实例展示如何利用Mahout构建基于用户相似度的简单推荐系统。
474

被折叠的 条评论
为什么被折叠?



