在过去的几天里,我一直在与 Mahout 合作,试图创建一个推荐引擎。我正在从事的项目有以下数据:
我现在正在试验我们拥有的全套产品的 1/3(即 18M 建议中的 6M)。在我尝试的任何配置中,Mahout 都提供了令人失望的结果。一些建议需要 1.5 秒,而另一些建议需要一分钟以上。我认为推荐的合理时间应该在 100 毫秒左右。
为什么 Mahout 工作这么慢?
我正在使用以下 JVM 参数在 Tomcat 上运行应用程序(即使添加它们并没有太大区别):
-Xms4096M -Xmx4096M -da -dsa -XX:NewRatio=9 -XX:+UseParallelGC -XX:+UseParallelOldGC
以下是我的实验的代码片段:
用户相似度1:
DataModel model = new FileDataModel(new File(dataFile));
UserSimilarity similarity = new CachingUserSimilarity(new LogLikelihoodSimilarity(model), model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, Double.NEGATIVE_INFINITY, similarity, model, 0.5);
recommender = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity);
用户相似度2:
DataModel model = new FileDataModel(new File(dataFile));
UserSimilarity similarity = new CachingUserSimilarity(new LogLikelihoodSimilarity(model), model);
UserNeighborhood neighborhood = new CachingUserNeighborhood(new NearestNUserNeighborhood(10, similarity, model), model);
recommender = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity);
物品相似度1:
DataModel dataModel = new FileDataModel(new File(dataFile));
ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);