一:简介
基于用户的协同推荐算法随着使用者数量的增多,计算的时间就会变长,所以在2001年Sarwar提出了基于项目的协同过滤推荐算法(Item-based Collaborative Filtering Algorithms)。基于用户的协同推荐mahout没有实现分布式算法,Mahout基于Item的分布式推荐算法的主要内容见org.apache.mahout.cf.taste.hadoop.item.
二:准备输入文件
采用分布式算法,输入文件首先需存放在hdfs上,文件格式(userid,itemid,preference)
三:程序代码
1 public static void main(String[] arg) throws Exception { 2 // TODO Auto-generated method stub 3 Configuration conf = new Configuration(); 4 String[] args = { "-i", "/mahout/mahout_input.txt", "-o", 5 "/mahout/mahout_output", "-n", "3", "-b", "false", 6 "-s", "SIMILARITY_EUCLIDEAN_DISTANCE", "--maxPrefsPerUser", 7 "7", "--minPrefsPerUser", "2", "--maxPrefsInItemSimilarity", 8 "7", "--outputPathForSimilarityMatrix", 9 "/mahout/similarity", "--tempDir", 10 "/mahout/tmpdir" }; 11 ToolRunner.run(conf, new RecommenderJob(), args); 12 }
参数详解:
1 --output 输出路径 2 3 --input 输入路劲 4 5 -n 为每个用户推荐的产品数 6 7 -u 待推荐的用户列表 8 9 -i 待推荐的 item 列表 10 11 -f 过滤指定用户不需要推荐的 item 。格式为 userID, itemID 对 12 13 -b 输入的样本不带产品评分 14 15 -mp 设置每个用户喜好的最大数量 默认 10 16 17 -m 设置每个用户喜好的最小数量 默认 1 18 19 -mo 样本抽样 20 21 -s 相似度量方法