मैं एक cosine स्थानीयता संवेदनशील हैश बनाने की कोशिश कर रहा हूँ ताकि मैं हर संभव जोड़ी की तुलना किए बिना आइटम के समान जोड़े पा सकता हूं। मेरे पास यह मूल रूप से काम कर रहा है, लेकिन मेरे डेटा में अधिकांश जोड़े -0.2 से +0.2 रेंज में ब्रह्मांडीय समानता रखते हैं, इसलिए मैं इसे काफी बारीक करने और कोसाइन 0.1 और इसके बाद के संस्करण के साथ चीजों को लेने की कोशिश कर रहा हूं।
मैं माइनिंग मैसिव डेटासेट्स अध्याय 3 पढ़ रहा हूं। यह एक स्थानीयता-संवेदनशील परिवार को प्रवर्तित करके उम्मीदवार जोड़ी चयन की सटीकता को बढ़ाने के बारे में बात करता है। मुझे लगता है कि मैं केवल गणितीय स्पष्टीकरण को समझने के बारे में हूं, लेकिन मैं यह देखने के लिए संघर्ष कर रहा हूं कि मैं इसे व्यावहारिक रूप से कैसे लागू करता हूं।
मेरे पास अब तक इस प्रकार है
- मेरे पास 1M उपयोगकर्ताओं के कुछ चयन से रेटिंग के साथ 1000 फिल्में हैं। प्रत्येक फिल्म को उपयोगकर्ता स्कोर (पंक्ति संख्या = उपयोगकर्ता आईडी, मूल्य = उपयोगकर्ता के स्कोर) के विरल वेक्टर द्वारा दर्शाया जाता है
- मैं एन यादृच्छिक वैक्टर का निर्माण करता हूं। वेक्टर की लंबाई फिल्म वैक्टर (यानी उपयोगकर्ताओं की संख्या) की लंबाई से मेल खाती है। वेक्टर मान +1 या -1 हैं। मैं वास्तव में अंतरिक्ष को बचाने के लिए इन वैक्टरों को बाइनरी के रूप में एन्कोड करता हूं, +1 से 1 मैप किया गया और 0 से -1 मैप किया गया
- मैं प्रत्येक फिल्म के लिए स्केच वैक्टर्स का निर्माण करता हूं, मूवी के प्रत्येक उत्पाद और एन रैंडम वैक्टर (या यों कहें, यदि मैं एन यादृच्छिक वैक्टरों को क्षैतिज रूप से और एक दूसरे के शीर्ष पर लेटकर मैट्रिक्स R बनाता हूं तो स्केच मूवी m के लिए R * m) है, फिर परिणामी वेक्टर में प्रत्येक तत्व का संकेत ले रहा है, इसलिए मैं + 1s और -1s की प्रत्येक फिल्म के लिए एक स्केच वेक्टर के साथ समाप्त होता हूं, जिसे फिर से मैं बाइनरी के रूप में एन्कोड करता हूं। प्रत्येक वेक्टर लंबाई N बिट्स है।
- आगे मैं निम्नलिखित करके ऐसे ही रेखाचित्रों की तलाश करता हूं
- मैं आर बिट्स के बी बैंड में स्केच वेक्टर को विभाजित करता हूं
- आर बिट्स के प्रत्येक बैंड एक संख्या है। मैं उस नंबर को बैंड नंबर के साथ जोड़ देता हूं और उस नंबर के नीचे हैश बकेट में मूवी जोड़ देता हूं। प्रत्येक फिल्म को एक से अधिक बाल्टी में जोड़ा जा सकता है।
- मैं तब प्रत्येक बाल्टी में देखता हूं। जो भी फिल्में एक ही बाल्टी में होती हैं, वे उम्मीदवार जोड़ियां होती हैं।
इसकी तुलना में 3.6.3 मिमी की तुलना में, मेरा AND चरण तब होता है जब मैं r बिट्स के बैंड को देखता हूं - फिल्मों की एक जोड़ी AND चरण को पार कर लेती है यदि r बिट्स का मान समान है। मेरा या कदम बाल्टी में होता है: फिल्में उम्मीदवार जोड़े हैं यदि वे दोनों किसी भी बाल्टी में हैं।
पुस्तक से पता चलता है कि मैं और अधिक और या चरणों को जोड़कर अपने परिणामों को "बढ़ा" सकता हूं, लेकिन मुझे इस बात का नुकसान है कि यह कैसे करना है क्योंकि व्यावहारिक रूप से आगे की परतों के लिए निर्माण प्रक्रिया की व्याख्या जोड़ीदार समानता की जांच करने के बजाय है बाल्टी नंबर के साथ आ रहा है।
क्या कोई मुझे यह समझने में मदद कर सकता है कि यह कैसे करना है?