为什么Apache Mahout的Recommender.recommend()函数速度慢?

时间:2013-12-14 10:37:31

标签: machine-learning mahout recommendation-engine mahout-recommender

我正在使用Apache Mahout基于项目的推荐器,在400项和500万用户的数据集上具有项目项相似性。我正在使用TanimotoCoefficientSimilarityGenricItemBasedRecommender

但是当我调用函数recommender.recommend时,对于每个用户,它需要大约1500毫秒来生成5个项目的推荐。我也尝试过相似性和推荐的缓存,但没有任何帮助。 apache mahout 0.8是否存在性能问题,生成推荐需要很长时间?

请建议优化方法。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用CandidateItemsStrategyMostSimilarItemsCandidateItemsStrategy。 E.g:

CandidateItemsStrategy candidateStrategy = new SamplingCandidateItemsStrategy(...);
MostSimilarItemsCandidateItemsStrategy mostSimilarStrategy = new SamplingCandidateItemsStrategy(...);

Recommender recommender = new GenericItemRecommender(model, similarity, candidateStrategy, mostSimilarStrategy);

您可以尝试使用参数来搜索候选项目。这些类似于在UserBasedSimilarity中使用相邻用户。

如果它仍然很慢,你应该考虑定期预先计算项目之间的所有相似性,并在主存储器中使用它们。如果你没有足够的主存储器,你甚至可以尝试数据库调用以获得预先计算的相似性。