0

我在 400 个项目和 500 万用户的数据集上使用具有项目相似性的 Apache Mahout Item Based Recommender。我正在使用TanimotoCoefficientSimilarityGenricItemBasedRecommender.

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

请提出优化方法。

谢谢。

4

1 回答 1

0

您可以尝试使用CandidateItemsStrategy, 和MostSimilarItemsCandidateItemsStrategy. 例如:

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

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

您可以尝试使用参数来对候选项目进行采样。这些类似于在 中使用相邻用户UserBasedSimilarity

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

于 2013-12-14T21:31:46.677 回答