Apache Mahout分布式推荐程序推荐已评级的项目



我尝试过使用10M movielens数据集的基于项的分布式推荐程序作业。一切都很好。我的问题是,在查看用户推荐时,我发现在推荐项目列表中有一些项目已经被用户评分。更具体地说:

假设用户id为4的用户观看了具有以下id的电影:[123543234567324],则在推荐列表中再次出现543和234。我只是看了《行动中的Mahout》来理解算法,我找不到一个在生成TopK列表之前消除已评级项目的代码段。我是错过了什么,还是它推荐已经评分的项目是正常的?

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

p.S:在推荐产生后过滤掉推荐对我来说不是一个有效的方法,因为我想要的推荐数量是100,而在过滤掉一些用户后,这个数字会减少到30等等。

提前谢谢。

自从我第一次编写代码以来,代码发生了很大的变化,有几个RecommenderJob,但最初有一个阶段将"(user,item,NaN)"元组添加到所有现有用户-项目对的最终向量和中。这导致所有此类用户项对的总和都是NaN,并且可以从结果中排除。它可能已经不在了。

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

最好将此讨论转移到https://cwiki.apache.org/confluence/display/MAHOUT/Mailing+列表,+IRC+和+档案

在recommenderjob的源代码中:

addOption("filterFile","f","包含逗号分隔的userID、itemID对的文件。用于从中排除项"+"对该用户的建议(可选)",空);

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

最新更新