2010-11-20 2 views
17

कृपया मेरे लेखन के साथ धैर्य रखें, क्योंकि मेरी अंग्रेजी कुशल नहीं है।मैं एक सिफारिश इंजन कैसे कार्यान्वित कर सकता हूं?

एक प्रोग्रामर के रूप में, मैं एल्गोरिदम, या मशीन लर्निंग इंटेलिजेंस के बारे में जानना चाहता हूं, जो सिफारिश प्रणाली या संबंधित-आधारित सिस्टम के नीचे लागू होते हैं। उदाहरण के लिए, सबसे स्पष्ट उदाहरण अमेज़ॅन से होगा। उनके पास वास्तव में अच्छी सिफारिश प्रणाली है। वे जानते हैं: इस और कि एक साथ की तरह कितने प्रतिशत लोग: अगर आप इस चाहते हैं, आप भी कि, वरना तरह कुछ पसंद कर सकते हैं।

बेशक मुझे पता है कि अमेज़ॅन एक बड़ी वेबसाइट है और उन्होंने इन प्रणालियों में बहुत सारे मस्तिष्क और धन का निवेश किया है। लेकिन, बहुत ही बुनियादी कोर पर, हम अपने डेटाबेस में ऐसा कुछ कैसे कार्यान्वित कर सकते हैं? हम कैसे पहचान सकते हैं कि एक वस्तु दूसरे से कैसे संबंधित है? हम इस तरह की चीज को संभालने वाली एक सांख्यिकीय इकाई कैसे बना सकते हैं?

अगर कोई कुछ एल्गोरिदम इंगित कर सकता है तो मैं सराहना करता हूं। या, मूल रूप से, कुछ अच्छे प्रत्यक्ष संदर्भ/पुस्तकें बताएं जिन्हें हम सभी सीख सकते हैं। आप सभी को धन्यवाद!

+0

अमेज़ॅन का [पेटेंट] (http://www.google.com/patents/US7113917) गहराई से उनके दृष्टिकोण का वर्णन करता है। – arao6

उत्तर

18

2 विभिन्न प्रकार के अनुशंसा इंजन हैं।

सबसे सरल आइटम-आधारित यानी "ग्राहक जिन्होंने उत्पाद ए खरीदा है, उत्पाद बी भी खरीदा है"। इसे लागू करना आसान है। एक स्पैम सममित मैट्रिक्स एनएक्सएन स्टोर करें (जहां एन वस्तुओं की संख्या है)। प्रत्येक तत्व (एम [ए] [बी]) किसी भी वस्तु ने आइटम 'ए' के ​​साथ आइटम 'बी' खरीदा है।

दूसरा उपयोगकर्ता आधारित है। यही है "आपके जैसे लोग अक्सर इस तरह की चीजें पसंद करते हैं"। इस समस्या का एक संभावित समाधान के-साधन क्लस्टरिंग है। यानी क्लस्टर का एक सेट तैयार करें जहां समान स्वाद के उपयोगकर्ता एक ही क्लस्टर में रखे जाते हैं और उसी क्लस्टर में उपयोगकर्ताओं के आधार पर सुझाव देते हैं।

एक बेहतर समाधान, लेकिन एक और अधिक जटिल एक प्रतिबंधित तकनीक बोल्टज़मान मशीन नामक एक तकनीक है। उनके लिए एक परिचय है here

+4

@ एचटीए: "ग्राहक समानता" और "उत्पाद समानता" के बीच भेद जो @dan_waterworth ड्रॉ अनुशंसा इंजन रणनीतियों के बीच सबसे मौलिक विभाजन रेखा है। हालांकि "प्रतिबंधित बोल्टज़मान मशीन" और "के-मतलब क्लस्टरिंग" को "जो भी मशीन सीखने की तकनीक आप उपयोग करना चाहते हैं" के लिए स्टैंड-इन के रूप में देखा जाना चाहिए। या तो ग्राहक-समानता या उत्पाद-समानता को मैट्रिक्स के साथ किया जा सकता है और या तो एआई के साथ किया जा सकता है।/आंकड़े/एमएल आप या तो विकिपीडिया पर पढ़ सकते हैं। – isomorphismes

0

मुझे लगता है, आप knowledge base systems के बारे में बात करते हैं। मुझे प्रोग्रामिंग भाषा (शायद LISP) याद नहीं है, लेकिन कार्यान्वयन है। इसके अलावा, OWL देखें।

3

एक पहला प्रयास ऐसा दिखाई दे सकता:

//First Calculate how often any product pair was bought together 
//The time/memory should be about Sum over all Customers of Customer.BoughtProducts^2 
Dictionary<Pair<ProductID,ProductID>> boughtTogether=new Dictionary<Pair<ProductID,ProductID>>(); 
foreach(Customer in Customers) 
{ 
    foreach(product1 in Customer.BoughtProducts) 
     foreach(product2 in Customer.BoughtProducts) 
      { 
       int counter=boughtTogether[Pair(product1,product2)] or 0 if missing; 
       counter++; 
       boughtTogether[Pair(product1,product2)]=counter; 
      } 
} 

boughtTogether.GroupBy(entry.Key.First).Select(group.OrderByDescending(entry=>entry.Value).Take(10).Select(new{key.Second as ProductID,Value as Count})); 

सबसे पहले मैं गणना कितनी बार उत्पादों की प्रत्येक जोड़ी एक साथ खरीदा गया था, और फिर मैं उन्हें उत्पाद द्वारा समूह और चुनें शीर्ष 20 अन्य उत्पादों इसके साथ खरीदा । नतीजा उत्पाद आईडी द्वारा की जाने वाली किसी भी प्रकार की शब्दकोश में डाला जाना चाहिए।

यह बड़े डेटाबेस के लिए बहुत धीमी या लागत बहुत अधिक हो सकती है।

0

prediction.io भी है यदि आप ओपन सोर्स सॉल्यूशन या सास समाधान जैसे mag3llan.com की तलाश में हैं।