我正在使用Apache Mahout基于项目的推荐器,在400项和500万用户的数据集上具有项目项相似性。我正在使用TanimotoCoefficientSimilarity
和GenricItemBasedRecommender
。
但是当我调用函数recommender.recommend时,对于每个用户,它需要大约1500毫秒来生成5个项目的推荐。我也尝试过相似性和推荐的缓存,但没有任何帮助。 apache mahout 0.8是否存在性能问题,生成推荐需要很长时间?
请建议优化方法。
感谢。
答案 0 :(得分:0)
您可以尝试使用CandidateItemsStrategy
和MostSimilarItemsCandidateItemsStrategy
。
E.g:
CandidateItemsStrategy candidateStrategy = new SamplingCandidateItemsStrategy(...);
MostSimilarItemsCandidateItemsStrategy mostSimilarStrategy = new SamplingCandidateItemsStrategy(...);
Recommender recommender = new GenericItemRecommender(model, similarity, candidateStrategy, mostSimilarStrategy);
您可以尝试使用参数来搜索候选项目。这些类似于在UserBasedSimilarity
中使用相邻用户。
如果它仍然很慢,你应该考虑定期预先计算项目之间的所有相似性,并在主存储器中使用它们。如果你没有足够的主存储器,你甚至可以尝试数据库调用以获得预先计算的相似性。