首先是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作为评级,但实际上它应该是二进制真实的),但所有用户的所有建议都是始终是相同的产品清单。
请问任何建议?
答案 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详细介绍了这一点。)