Tôi đã làm việc với Mahout trong vài ngày qua để cố gắng tạo một công cụ đề xuất. Dự án tôi đang làm việc trên có các dữ liệu sau: Các vấn đề về hiệu năng của Apache Mahout
Tôi bây giờ thử nghiệm với 1/3 tập hợp đầy đủ chúng tôi có (tức là 6 triệu trong số 18 triệu đề xuất). Tại bất kỳ cấu hình nào tôi đã thử, Mahout đã cung cấp kết quả khá đáng thất vọng. Một số đề xuất mất 1,5 giây trong khi một số khác mất hơn một phút. Tôi nghĩ rằng một thời gian hợp lý cho một đề nghị nên được khoảng 100ms khung thời gian.
Tại sao Mahout hoạt động quá chậm?
Tôi đang chạy các ứng dụng trên một Tomcat với các đối số JVM sau (mặc dù bổ sung chúng đã không làm cho nhiều sự khác biệt):
-Xms4096M -Xmx4096M -da -dsa -XX:NewRatio=9 -XX:+UseParallelGC -XX:+UseParallelOldGC
Dưới đây là đoạn mã cho các thí nghiệm của tôi:
tài tương tự 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);
tài tương tự 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);
mục tương đồng 1:
DataModel dataModel = new FileDataModel(new File(dataFile));
ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);
Thnx Sean. Tôi đã thử đề xuất của bạn với mã sau http://pastebin.com/XiuJvRha. Nhưng hiệu suất vẫn không tốt. Ngay cả với bộ 6M (1/3 của bộ thực), các đề xuất vẫn mất từ 3-15 giây. Bạn làm gì từ nó? –
Ok - Tôi đã thử nghiệm nó nhiều hơn một chút và tôi nhận thấy rằng đối với người dùng đã thực hiện 1-2 đề xuất nhanh chóng, khoảng 400 mili giây, nhưng đối với người dùng đã thực hiện 10 hoặc 20 đề xuất cần nhiều hơn nữa. Một người dùng có 28 đề xuất đã mất hơn một phút để hoàn thành. –
Bạn sẽ muốn điều chỉnh các giá trị trong SamplingCandidateItemsStrategy. Hãy thử (10,5) chẳng hạn. Điều này tất cả vẫn còn âm thanh khá chậm, mặc dù nó trông khá tốt. Có một số mức độ khởi động khi các bộ đệm lấp đầy với sự giống nhau được xác định trước; Tôi không biết nếu đó là một yếu tố? –