Apache Mahout分布式推荐器推荐已经评级的项目

时间:2012-12-11 15:00:32

标签: mahout recommendation-engine mahout-recommender

我尝试了基于项目的分布式推荐作业和10M movielens数据集。一切正常。我的问题是,在查看用户的建议时,我已经看到在推荐项目列表中有一些项目已经被用户评价。更具体一点:

假设用户ID为4的用户使用以下ID观看了电影:[123,543,234,567,324],然后再次在推荐列表中存在543和234。我只是看了Mahout in Action来理解算法,我找不到代码段来消除已经评级的项目,然后才生成TopK列表。我是否会遗漏某些东西,或者它推荐已经评级过的物品是否正常?

如果正常,是否可以从候选项目中删除这些项目?

P.S:在建议生成后过滤掉建议对我的情况来说效率不高,因为我想要的推荐数量是100,而对某些用户过滤后,这个数字减少到30等。

提前致谢。

3 个答案:

答案 0 :(得分:3)

自从我第一次创建代码以来,代码发生了很大变化,并且有几个RecommenderJob s,但最初有一个阶段在最终向量和中添加了“(user,item,NaN)”元组对于所有现有的用户 - 项目对。这导致所有此类用户 - 项对的总和为NaN,并且可以从结果中排除。它可能不在那里了。

答案 1 :(得分:1)

我是RecommenderJob的作者之一。我们有单元测试,明确检查用户不是他们已经知道的推荐项目。如果这真的发生了,那将是一个严重的错误。你能看到输入数据的例子吗?

最好将此讨论转移到mahout邮件列表中 https://cwiki.apache.org/confluence/display/MAHOUT/Mailing+Lists,+IRC+and+Archives

答案 2 :(得分:0)

在recommenderjob的源代码中:

addOption(“filterFile”,“f”,“包含逗号分隔的userID,itemID对的文件。用于从中排除项目”             +“该用户的推荐(可选)”,null);

我认为它可以通过将此文件提供给推荐人来解决您的问题。