我已经使用apache mahout测试了基于用户的推荐,它与提供的示例数据一起工作得很好。
然而,我有自己的数据,但我不能得到一个单一的推荐。我发现这是由于数据太稀疏的事实,但我希望专家的建议;)
它只使用购买历史,所以我给所有用户id <->产品id购买的产品打了4.0分。
下面是数据文件:http://we.tl/RcR83vcHQI
你能给我一些建议,开始有一些有用的建议吗?
提前谢谢你。
发布于 2015-02-09 23:38:05
对于刚接触Mahout的人来说,这是一个常见问题。0.9及之前的版本要求您的ID是连续的非负整数。这包括用户ID和项目ID。它们在Mahout中用作所有输入矩阵中的行号和列号。
有几种方法可以解决这个问题,比如为用户和项目ID保留HashBiMaps (Guava集合)。正如您所看到的,为第一个ID分配一个0的Mahout ID,并将关系存储在映射中。继续查找您的ID以查找下一个唯一的ID,并将其分配给Mahout ID= 1,依此类推。
然后你会从推荐者那里拿回Mahout的ID。您可以使用双向HashBiMap将它们转换为特定于应用程序的ID。
顺便说一句,Mahout (1.0-快照或更高版本)现在有了一个全新的新一代推荐器,基于使用搜索引擎来提供推荐,并使用Mahout来计算模型。它将接受您直接拥有的输入-在其中执行ID转换。与较旧的Hadoop版本相比,它具有许多优点,包括:
新的多模式推荐器如下所示:
免费电子书,其中讨论了一般概念:Practical Machine Learning
https://stackoverflow.com/questions/28407787
复制相似问题