मैं पिछले कुछ दिनों में महोत्सव के साथ एक सिफारिश इंजन बनाने की कोशिश कर रहा हूं। अपाचे महाउट प्रदर्शन मुद्दे
मैं अब पूरा सेट हमारे पास का 1/3 के साथ प्रयोग कर रहा हूँ: परियोजना मैं पर काम कर रहा हूँ निम्न डेटा है (यानि 18 एम सिफारिशों में से 6 एम)। मैंने कोशिश की किसी भी कॉन्फ़िगरेशन पर, महाउट काफी निराशाजनक परिणाम प्रदान कर रहा था। कुछ सिफारिशों में 1.5 सेकंड लग गए जबकि दूसरे ने एक मिनट में लिया। मुझे लगता है कि सिफारिश के लिए एक उचित समय 100 एमएमएस समय सीमा के आसपास होना चाहिए।
महाउट इतना धीमा क्यों काम करता है?
मैं (यहां तक कि उन्हें जोड़ने हालांकि बहुत अधिक अंतर नहीं था) के बाद JVM तर्क के साथ एक बिलाव पर आवेदन चल रहा हूँ:
-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);
थेंक्स शॉन। मैंने निम्नलिखित कोड http://pastebin.com/XiuJvRha के साथ आपके सुझावों का प्रयास किया। लेकिन प्रदर्शन अभी भी अच्छा नहीं है। यहां तक कि 6 एम सेट (असली सेट का 1/3) के साथ, सिफारिशें अभी भी 3-15 सेकेंड के बीच होती हैं। आप इससे क्या निकालते हैं? –
ठीक है - मैंने इसे थोड़ा और परीक्षण किया है और मैंने देखा है कि जिन उपयोगकर्ताओं ने 1-2 सिफारिशें की हैं, वे लगभग 400ms हैं, लेकिन 10 या 20 अनुशंसाओं वाले उपयोगकर्ताओं के लिए यह बहुत अधिक है। 28 सिफारिशों वाले एक उपयोगकर्ता को पूरा करने में एक मिनट लग गए। –
आप SamplingCandidateItemsStrategy में मानों को समायोजित करना चाहते हैं। उदाहरण के लिए (10,5) कोशिश करें। यह सब अभी भी काफी धीमी गति से लगता है, हालांकि यह बहुत अच्छा लग रहा है। कैश कुछ precomputed समानता के साथ भरने के रूप में गर्मियों की कुछ डिग्री है; मुझे नहीं पता कि यह एक कारक है या नहीं? –