【问题标题】:Why is Apache Mahout's Recommender.recommend() function slow?为什么 Apache Mahout 的 Recommender.recommend() 函数很慢?
【发布时间】:2014-01-02 03:34:59
【问题描述】:
我在 400 个项目和 500 万用户的数据集上使用具有项目相似性的 Apache Mahout Item Based Recommender。我正在使用 TanimotoCoefficientSimilarity 和 GenricItemBasedRecommender。
但是当我调用函数Recommender.recommend 时,每个用户大约需要1500 毫秒来生成5 个项目的推荐。我也尝试过缓存相似性和推荐,但没有任何帮助。 apache mahout 0.8 是否存在性能问题,需要很长时间才能生成推荐?
请提出优化方法。
谢谢。
【问题讨论】:
标签:
machine-learning
mahout
recommendation-engine
mahout-recommender
【解决方案1】:
您可以尝试使用CandidateItemsStrategy 和MostSimilarItemsCandidateItemsStrategy。
例如:
CandidateItemsStrategy candidateStrategy = new SamplingCandidateItemsStrategy(...);
MostSimilarItemsCandidateItemsStrategy mostSimilarStrategy = new SamplingCandidateItemsStrategy(...);
Recommender recommender = new GenericItemRecommender(model, similarity, candidateStrategy, mostSimilarStrategy);
您可以尝试使用参数来对候选项目进行采样。这些类似于在UserBasedSimilarity 中使用相邻用户。
如果它仍然很慢,您应该考虑定期预先计算项目之间的所有相似性并在主内存中使用它们。如果您没有足够的主内存,您甚至可以尝试对预先计算的相似性进行数据库调用。