我正试图找到一种方法,使用apache Mahout来推荐类似的用户而不是Items。 我有一个用户列表,每个用户都阅读了某些书籍。我想询问是否有办法根据他阅读的内容向另一个用户推荐一组用户 您可以理解,推荐的用户会阅读一些相同的书籍 感谢您的帮助和指导。
答案 0 :(得分:1)
在Mahout v1中使用spark-rowsimilarity作业。创建
文件user-ID<tab>book-ID1<space>book-ID2<space>etc...
换句话说,每一行都是用户阅读的书籍历史。第一列是用户ID,第二列是空格分隔的book-ID列表。运行“mahout spark-rowsimilarity”,您将获得以下格式的文件:
user-ID<tab>user-ID5:strength<space>user-ID6:strength<space>etc...
这是每个用户的类似用户列表。对列表进行排序,强度是用户相似程度的LLR(对数似然比)得分。
文档:http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html
答案 1 :(得分:1)
在Java中你可以这样做:
org.apache.mahout.cf.taste.model.DataModel dataModel;
...
UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.75, similarity, dataModel);
UserBasedRecommender userBasedRecommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
long[] mostSimilarUserIDs = userBasedRecommender.mostSimilarUserIDs(...);