मुझे लगता है कि आप स्पार्क एमएलबीब के एएलएस मॉडल का उपयोग कर रहे हैं जो मैट्रिक्स कारककरण कर रहा है। मॉडल का परिणाम दो मैट्रिक्स उपयोगकर्ता-फीचर्स मैट्रिक्स और आइटम-फीचर्स मैट्रिक्स हैं।
मान लें कि हमें अंतर्निहित मामले के लिए रेटिंग या लेन-देन के साथ डेटा की एक स्ट्रीम प्राप्त करने जा रही है, इस मॉडल के वास्तविक (100%) ऑनलाइन अपडेट को प्रत्येक नई रेटिंग जानकारी के लिए मैट्रिक्स अपडेट करना होगा पूरे डेटा पर फिर से नई रेटिंग पर एएलएस मॉडल का पूर्ण प्रतिरक्षा। इस परिदृश्य में एक तथ्य इस तथ्य से सीमित है कि संपूर्ण एएलएस मॉडल चलाना कम्प्यूटेशनल रूप से महंगा है और डेटा की आने वाली धारा लगातार हो सकती है, इसलिए यह अक्सर एक पूर्ण प्रतिरक्षा को ट्रिगर करेगा।
तो, यह जानकर हम विकल्पों की तलाश कर सकते हैं, एक रेटिंग को मैट्रिक्स को और अधिक नहीं बदलना चाहिए, इसके अलावा हमारे पास ऑप्टिमाइज़ेशन दृष्टिकोण हैं जो वृद्धिशील हैं, उदाहरण के लिए एसजीडी। एक दिलचस्प (अभी भी प्रायोगिक) स्पष्ट रेटिंग के मामले जो एक DStream के प्रत्येक बैच के लिए वृद्धिशील अद्यतन करता है के लिए लिखा पुस्तकालय है:
https://github.com/brkyvz/streaming-matrix-factorization
ऐसे SGD के रूप में एक वृद्धिशील दृष्टिकोण का उपयोग करने के विचार के विचार इस प्रकार है जहां तक एक ढाल की ओर बढ़ता है (न्यूनतमकरण समस्या) एक गारंटी देता है जो कम से कम त्रुटि फ़ंक्शन की ओर बढ़ रहा है। इसलिए यदि हम एक ही नई रेटिंग के लिए अद्यतन करते हैं, तो केवल इस विशिष्ट उपयोगकर्ता के लिए उपयोगकर्ता सुविधा मैट्रिक्स के लिए, और केवल इस विशिष्ट आइटम के लिए आइटम-फीचर मैट्रिक्स रेट किया गया है, और अद्यतन ढाल की ओर है, हम गारंटी देते हैं कि हम आगे बढ़ें कम से कम, निश्चित रूप से एक अनुमान के रूप में, लेकिन अभी भी न्यूनतम की ओर।
दूसरी समस्या स्पार्क से ही आती है, और वितरित प्रणाली, आदर्श रूप से अपडेट प्रत्येक नई आने वाली रेटिंग के लिए अनुक्रमिक रूप से किया जाना चाहिए, लेकिन स्पार्क आने वाली धारा को बैच के रूप में मानता है, जिसे आरडीडी के रूप में वितरित किया जाता है, इसलिए अपडेट करने के लिए किए गए संचालन पूरे बैच के लिए अनुक्रमिकता की गारंटी के साथ किए जाएंगे।
उदाहरण के लिए यदि आप भविष्यवाणी.आईओ का उपयोग कर रहे हैं तो अधिक जानकारी में, आप एक ऑफ लाइन प्रशिक्षण कर सकते हैं जो नियमित ट्रेन का उपयोग करता है और निर्मित कार्यों को तैनात करता है, लेकिन यदि आप ऑनलाइन अपडेट करना चाहते हैं तो आपको दोनों को एक्सेस करना होगा स्ट्रीम के प्रत्येक बैच के लिए मैट्रिस, और एसजीडी का उपयोग करके अपडेट चलाएं, फिर नए मॉडल को तैनात करने के लिए कहें, निश्चित रूप से यह कार्यक्षमता भविष्यवाणी में नहीं है। आपको इसे स्वयं बनाना होगा।
SGD अद्यतन के लिए रुचिकर बातें:
http://stanford.edu/~rezab/classes/cme323/S15/notes/lec14.pdf
करता पीआईओ समर्थन स्पार्क स्ट्रीमिंग और StreamRDD से मौजूदा पूर्वानुमान परिणाम बढ़ाने? – javadba
मैंने अभी जांच की है, [स्ट्रीमेड रैखिक प्रतिगमन] के लिए ऑनलाइन/वृद्धिशील प्रशिक्षण लागू किया गया है (http://spark.apache.org/docs/latest/mllib-linear-methods.html#streaming-linear-regression) और [स्ट्रीम किया गया क्लस्टरिंग] (http://spark.apache.org/docs/latest/mllib-clustering.html#streaming-clustering)। दुर्भाग्यवश कोई स्ट्रीमिंग सहयोगी फ़िल्टरिंग (एएलएस) और न ही अन्य स्ट्रीम किए गए वर्गीकरण/प्रतिगमन विधियों को स्ट्रीम किया गया है। – mucaho
[स्ट्रीमिंग के-साधन] (http://spark.apache.org/docs/latest/mllib-clustering.html#streaming-k-means) –