如何构建数据以便在mahout中使用项目偏好推荐

时间:2011-09-21 12:29:28

标签: mahout

首先是mahout,apache,maven等的新手 - 如果有一些是明显的,那么道歉。

我有一个典型的市场篮子数据集,即

user1,item1

user1,item2

user2,item1

user2,item3

user3,item2

我的查询 - 对user3有什么建议? (是的,我知道答案是第1项!)。

如何在Mahout中使用它?我查看了页面 - https://cwiki.apache.org/MAHOUT/recommender-documentation.html - 这非常有用 - 但是当我想要有趣的位 - 即如何构建相关数据时 - 它说:

// Construct the list of pre-computed correlations
Collection<GenericItemSimilarity.ItemItemSimilarity> correlations =
          ...;
ItemSimilarity itemSimilarity =
          new GenericItemSimilarity(correlations);

我要计算的位是缺失的...... !!!

虽然这完全是错误的做法,但我按摩我的数据集看起来与movielens结构相同(给出5作为评级,但实际上它应该是二进制真实的),但所有用户的所有建议都是始终是相同的产品清单。

请问任何建议?

1 个答案:

答案 0 :(得分:2)

(这个数据太少了,我不知道推荐人实际上会推荐第1项。)

如果您已经预先计算了项目项目的相似性,那么您引用的代码片段就是您所使用的代码段。你没有这里;你有用户项关联。当然,您的意思是从这些数据中计算出这些相似之处,并将其用于推荐?

虽然您可以通过编程方式执行此操作,但我建议您使用数据制作简单的文本文件会更快...

1,1
1,2
2,1
2,3
3,2

然后使基于项目的推荐者具有对数似然相似性:

DataModel model = new FileDataModel(new File("yourdata.txt"));
ItemSimilarity similarity = new LogLikelihoodSimilarity(model);
Recommender recommender = 
    new GenericBooleanPrefItemBasedRecommender(similarity, model);

并为用户3推荐1项:

recommender.recommend(3, 1);

Mahout in Action详细介绍了这一点。)