Geçtiğimiz günlerde Mahout ile bir öneri motoru oluşturmaya çalışıyorum. Apache Mahout Performans Sorunları
Şimdi elimizdeki tam set 1/3 ile deney yaşıyorum: Üzerinde çalıştığım proje aşağıdaki verilere sahip (örneğin 18M önerilerinden 6M). Denediğim herhangi bir yapılandırmada, Mahout oldukça hayal kırıklığı yaratan sonuçlar veriyordu. Bazı öneriler 1,5 saniye sürdü, diğeri ise bir dakika sürdü. Bir tavsiye için makul bir zamanın 100ms zaman diliminde olması gerektiğini düşünüyorum.
Mahout neden bu kadar yavaş çalışıyor?
ben (hatta ekleyerek olsa bir fark yapmadığını) Aşağıdaki JVM bağımsız değişken içeren bir Tomcat uygulama çalıştırıyorum:
-Xms4096M -Xmx4096M -da -dsa -XX:NewRatio=9 -XX:+UseParallelGC -XX:+UseParallelOldGC
benim deneyler için kod parçacıklarını vardır
Kullanıcı benzerlik 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);
Kullanıcı benzerlik 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);
Öğe benzerlik 1:
DataModel dataModel = new FileDataModel(new File(dataFile));
ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);
Thnx Sean. Önerilerinizi şu kodla http://pastebin.com/XiuJvRha ile denedim. Ancak performans hala iyi değil. 6M setiyle (gerçek setin 1/3'ü) bile, öneriler hala 3-15 sn. Bundan ne yapıyorsun? –
Tamam - Biraz daha test ettim ve 1-2 tavsiyede bulunan kullanıcıların hızlı, yaklaşık 400ms olduğunu, ancak 10 veya 20 tavsiyede bulunan kullanıcılar için çok daha fazla zaman aldığını fark ettim. 28 tavsiyesi olan bir kullanıcının tamamlanması bir dakikadan fazla sürdü. –
Değerleri SamplingCandidateItemsStrategy'de ayarlamak isteyeceksiniz. Örneğin (10,5) deneyin. Bu oldukça iyi görünüyor, ancak oldukça iyi görünüyor. Önbelleklerin önceden hesaplanmış benzerlikle dolması gibi bir dereceye kadar ısınma vardır; Bu bir faktör olup olmadığını bilmiyorum? –