搭建mahout的eclipse环境不难,新建一个maven的quick-start java项目,在pom导入一些mahout的依赖便可,具体过程参考:用Maven构建Mahout项目
想要好好理解清楚,须要好好的研究代码。例子中关键几项内容解释java
// DataModel,输入数据模型,会自动把数据格式化成mahout须要的数据,更复杂格式的数据应该须要处理。 //类里含有获取全部user id,item id等等方法 DataModel model = new FileDataModel(new File(file)); // 一个用户类似度的模型,相似二维数组,这里使用欧氏距离来计算用户的类似度。类里含有查询某两个user的类似度。 UserSimilarity user = new EuclideanDistanceSimilarity(model); // 知道用户类似度,便可以知道全部用户的最近邻居,这里求前几个最近邻居。类里含有求某个user id的最近邻居的方法 NearestNUserNeighborhood neighbor = new NearestNUserNeighborhood(NEIGHBORHOOD_NUM, user, model); // 根据最近邻居看过哪些电影,而当前user没看过,则能够推荐给当前用户某些电影。类里含有求某用户推荐几个电影等等方法。 Recommender r = new GenericUserBasedRecommender(model, neighbor, user);
在使用欧氏距离计算类似度时,有一点点不一样。
开始理解欧氏距离公式是1 / ( 1 + d ),因而我经过手动计算2个用户的欧式距离类似度,和程序里面算得2个用户的类似度不同(经过user.userSimilarity(1, 2)得到1和2的类似度),因而经过跟踪代码开始找缘由:数组