लोकल सेंसिटिव हैशिंग को कैसे समझें?


156

मैंने देखा कि एलएसएच उच्च-आयाम गुणों वाली समान वस्तुओं को खोजने का एक अच्छा तरीका है।

Http://www.slaney.org/malcolm/yahoo/Slaney2008-LSHTutorial.pdf के पेपर पढ़ने के बाद , मैं अभी भी उन फॉर्मूलों को लेकर उलझन में हूं।

क्या कोई ब्लॉग या लेख जानता है जो बताता है कि आसान तरीका है?


3
Ullman Chapter 3 - "FINDING SIMILAR
achini

जवाबों:


250

एलएसएच के लिए मैंने जो सबसे अच्छा ट्यूटोरियल देखा है वह पुस्तक में है: माइनिंग दैटसेट्स का खनन। अध्याय 3 की जाँच करें - समान आइटम ढूँढना http://infolab.stanford.edu/~ullman/mmds/ch3a.pdf

इसके अलावा, मैं नीचे की स्लाइड की सलाह देता हूं: http://www.cs.jhu.edu/%7Evandurme/papers/VanDurmeLallACL10-slides.pdf । स्लाइड में उदाहरण मुझे कॉशन समानता के लिए हैशिंग समझने में बहुत मदद करता है।

मैं बेंजामिन वान डरमे और अश्विन लल्ल, ACL2010 से दो स्लाइड्स उधार लेता हूं और कॉशन डिस्टेंस के लिए एलएसएच फैमिलीज के अंतर्ज्ञान को थोड़ा समझाने की कोशिश करता हूं। यहां छवि विवरण दर्ज करें

  • चित्र में, दो दो आयामी डेटा बिंदुओं का प्रतिनिधित्व करते हुए, दो वृत्त w / लाल और पीले रंग के होते हैं। हम एलएसएच का उपयोग करके उनके कोसाइन समानता को खोजने की कोशिश कर रहे हैं ।
  • ग्रे लाइनें कुछ समान रूप से बेतरतीब ढंग से उठाए गए विमान हैं।
  • इस पर निर्भर करते हुए कि डेटा बिंदु एक ग्रे लाइन के ऊपर या नीचे स्थित है, हम इस संबंध को 0/1 के रूप में चिह्नित करते हैं।
  • ऊपरी-बाएँ कोने पर, क्रमशः दो डेटा बिंदुओं के हस्ताक्षर का प्रतिनिधित्व करते हुए, सफेद / काले वर्गों की दो पंक्तियाँ होती हैं। प्रत्येक वर्ग थोड़ा 0 (सफेद) या 1 (काला) के अनुरूप है।
  • एक बार जब आपके पास विमानों का एक पूल होता है, तो आप विमानों से संबंधित उनके स्थान के साथ डेटा बिंदुओं को एनकोड कर सकते हैं। कल्पना कीजिए कि जब हमारे पास पूल में अधिक विमान हैं, तो हस्ताक्षर में एन्कोड किया गया कोणीय अंतर वास्तविक अंतर के करीब है। क्योंकि केवल दो बिंदुओं के बीच में रहने वाले विमान दोनों डेटा को अलग-अलग बिट मान देंगे।

यहां छवि विवरण दर्ज करें

  • अब हम दो डेटा बिंदुओं के हस्ताक्षर को देखते हैं। उदाहरण के रूप में, हम प्रत्येक डेटा का प्रतिनिधित्व करने के लिए केवल 6 बिट्स (वर्ग) का उपयोग करते हैं। हमारे पास मूल डेटा के लिए यह एलएसएच हैश है।
  • दो हैशेड मूल्य के बीच की बाधा दूरी 1 है, क्योंकि उनके हस्ताक्षर केवल 1 बिट से भिन्न होते हैं।
  • हस्ताक्षर की लंबाई को ध्यान में रखते हुए, हम उनकी कोणीय समानता की गणना कर सकते हैं जैसा कि ग्राफ में दिखाया गया है।

मेरे यहाँ अजगर में कुछ सैंपल कोड (सिर्फ 50 पंक्तियाँ) हैं जो कॉस्मिक समानता का उपयोग कर रहे हैं। https://gist.github.com/94a3d425009be0f94751


इसे स्थानीयता संवेदनशील क्यों कहा जाता है? क्योंकि प्रत्येक बिट का असाइनमेंट प्रत्येक योजना के प्रति डेटा बिंदु के इलाके पर निर्भर करता है?
नवरा

21
स्थानीयता संवेदनशील - डेटा बिंदु जो एक दूसरे के करीब स्थित होते हैं, उन्हें समान हैश (एक ही बाल्टी में उच्च संभावना वाले) के साथ मैप किया जाता है।
हरियाली

2
क्षमा करें मुझे इस विषय में देर हो गई है लेकिन मुझे कॉशन के बारे में एक सवाल था। प्रस्तुति का कहना है कि बिट मान एक है अगर वास्तविक वेक्टर और विमान वेक्टर के बीच डॉट उत्पाद> = 0 या यह 0. है तो विमान वेक्टर की दिशा क्या है क्योंकि 90 डिग्री और 180 डिग्री के बीच के कोण भी एक दे देंगे कोसाइन जो नकारात्मक है। मुझे लगता है कि प्रत्येक विमान दो वैक्टर से बना है और हम छोटे कोण को लेते हैं जो वास्तविक वेक्टर के साथ बना होता है।
vkaul11

धन्यवाद। तो, क्या यह कहना सही है कि h कोणीय अंतर को बताता है, और "परिशुद्धता" को b करता है? इस तरह मैं समझता हूँ कि h * PI दीप्तिमान में थीटा है, और b कोण की शुद्धता है।
user305883

1
आपके द्वारा प्रदान की गई स्लाइड बहुत साफ है: cs.jhu.edu/~vandurme/papers/VanDurmeLallACL10-slides.pdf - क्या आप कृपया "पूलिंग ट्रिक" के गणितीय तर्क को भी समझा सकते हैं - या रेखीय बीजगणित की अवधारणाएं जिन्हें मुझे देखना चाहिए इसे समझने के लिए?
user305883

35

वेक्टर स्पेस में ट्वीट्स हाई डायमेंशनल डेटा का बेहतरीन उदाहरण हो सकते हैं।

इसी तरह के लोगों को खोजने के लिए ट्वीट के लिए स्थानीयता संवेदनशील को लागू करने पर मेरे ब्लॉग पोस्ट की जाँच करें।

http://micvog.com/2013/09/08/storm-first-story-detection/

और क्योंकि एक तस्वीर एक हजार शब्द नीचे की तस्वीर की जाँच करें:

यहां छवि विवरण दर्ज करें http://micvog.files.wordpress.com/2013/08/lsh1.png

आशा करता हूँ की ये काम करेगा। @mvogiatzis


21

यहां स्टैनफोर्ड की एक प्रस्तुति है जो इसे बताती है। इसने मेरे लिए बड़ा बदलाव किया। भाग दो LSH के बारे में अधिक है, लेकिन भाग एक इसे भी शामिल करता है।

अवलोकन की एक तस्वीर (स्लाइड में बहुत अधिक हैं):

यहां छवि विवरण दर्ज करें

उच्च में पास पड़ोसी खोजें आयामी डेटा - Part1: http://www.stanford.edu/class/cs345a/slides/04-highdim.pdf

उच्च में पास पड़ोसी खोजें आयामी डेटा - Part2: http://www.stanford.edu/class/cs345a/slides/05-LSH.pdf


क्यों नहीं सीधे अपने LSH समारोह के रूप में minhash का उपयोग करें?
थॉमस अहले

1
मेरा मानना ​​है कि प्रति बाल्टी गैर-डुप्लिकेट की संख्या काफी अधिक है, जबकि अगर हम ऐसे स्वतंत्र हैश कार्यों का उपयोग करते हैं, तो एक ही बाल्टी में गैर-निकट डुप्लिकेट मैपिंग की संभावना काफी कम हो जाती है।
शत्रु

7
  • LSH एक ऐसी प्रक्रिया है जो इनपुट / डॉक्यूमेंट्स / ऑब्जेक्ट्स के सेट के रूप में लेती है और एक तरह की हैश टेबल को आउटपुट करती है।
  • इस तालिका के सूचकांक में ऐसे दस्तावेज़ होते हैं जो एक ही सूचकांक पर मौजूद दस्तावेज़ों को समान माना जाता है और विभिन्न अनुक्रमितों पर " असंतुलित " होते हैं।
  • कहाँ समान मीट्रिक प्रणाली पर है और यह भी एक सीमा से समानता पर निर्भर करता है रों जो LSH के एक वैश्विक पैरामीटर तरह कार्य करता है।
  • यह परिभाषित करने के लिए क्या पर्याप्त सीमा आप पर निर्भर है एस आपकी समस्या के लिए है।

यहां छवि विवरण दर्ज करें

यह रेखांकित करना महत्वपूर्ण है कि विभिन्न समानता उपायों में एलएसएच के विभिन्न कार्यान्वयन हैं।

अपने ब्लॉग में, मैंने माइनशिंग (जेककार्ड समानता माप) और सिमहशिंग (कोसाइन दूरी माप) के मामलों के लिए एलएसएच को अच्छी तरह से समझाने की कोशिश की। मुझे आशा है कि आप इसे उपयोगी पाएंगे: https://aerodatablog.wordpress.com/2017/11/29/locality-sensitive-hashing-lsh/


2

मैं एक दृश्य व्यक्ति हूं। यहाँ वह है जो मेरे लिए एक अंतर्ज्ञान के रूप में काम करता है।

आप जिन चीजों को खोजना चाहते हैं, उनमें से प्रत्येक को एक सेब, एक घन, एक कुर्सी जैसी भौतिक वस्तुएं कहें।

एक एलएसएच के लिए मेरा अंतर्ज्ञान यह है कि यह इन वस्तुओं की छाया लेने के समान है। जैसे अगर आप 3 डी क्यूब की छाया लेते हैं तो आपको एक कागज के टुकड़े पर 2 डी वर्ग की तरह मिलता है, या एक 3 डी क्षेत्र आपको कागज के एक टुकड़े पर एक सर्कल की तरह छाया मिलेगा।

आखिरकार, खोज समस्या में तीन से अधिक आयाम हैं (जहां पाठ में प्रत्येक शब्द एक आयाम हो सकता है) लेकिन छाया सादृश्य अभी भी मेरे लिए बहुत उपयोगी है।

अब हम सॉफ्टवेयर में बिट्स के तारों की कुशलता से तुलना कर सकते हैं। एक निश्चित लंबाई बिट स्ट्रिंग थोड़े आयाम में एक पंक्ति की तरह थोड़े, अधिक या कम है।

इसलिए एलएसएच के साथ, मैं वस्तुओं की छाया को अंततः एक निश्चित लंबाई लाइन / बिट स्ट्रिंग पर अंक (0 या 1) के रूप में प्रस्तुत करता हूं।

पूरी चाल को छाया को ऐसे लेना है कि वे अभी भी निचले आयाम में समझ में आते हैं जैसे कि वे मूल वस्तु को एक अच्छे पर्याप्त तरीके से मिलते-जुलते हैं जिसे पहचाना जा सकता है।

परिप्रेक्ष्य में एक घन का 2 डी ड्राइंग मुझे बताता है कि यह एक घन है। लेकिन मैं 3 डी क्यूब छाया से एक 2 डी वर्ग को आसानी से अलग नहीं कर सकता: वे दोनों मेरे लिए एक वर्ग की तरह दिखते हैं।

मैं अपनी वस्तु को प्रकाश में कैसे प्रस्तुत करता हूं यह निर्धारित करेगा कि मुझे एक अच्छी पहचान योग्य छाया मिल रही है या नहीं। इसलिए मैं एक "अच्छा" एलएसएच के रूप में सोचता हूं जो मेरी वस्तुओं को एक प्रकाश के सामने बदल देगा जैसे कि उनकी छाया मेरी वस्तु का प्रतिनिधित्व करने के रूप में सबसे अच्छी तरह से पहचानने योग्य है।

इसलिए पुनरावृत्ति करने के लिए: मैं एलएसएच के साथ भौतिक वस्तुओं को क्यूब, टेबल, या कुर्सी के रूप में अनुक्रमित करने के लिए चीजों के बारे में सोचता हूं, और मैं उनकी छाया को 2 डी में और आखिरकार एक लाइन (थोड़ा स्ट्रिंग) के साथ प्रोजेक्ट करता हूं। और एक "अच्छा" एलएसएच "फ़ंक्शन" है कि कैसे मैं अपनी वस्तुओं को एक प्रकाश के सामने 2 डी फ्लैटलैंड और बाद में मेरी बिट स्ट्रिंग में लगभग अलग-अलग आकार प्राप्त करने के लिए प्रस्तुत करता हूं।

अंत में जब मैं खोजना चाहता हूं कि मेरे पास मौजूद कोई वस्तु कुछ वस्तुओं के समान है जिसे मैंने अनुक्रमित किया है, तो मैं इस "क्वेरी" ऑब्जेक्ट की छाया को उसी तरह से उपयोग कर रहा हूं, जो प्रकाश के सामने अपनी वस्तु को प्रस्तुत करने के लिए है (अंत में बिट के साथ समाप्त हो रहा है। स्ट्रिंग भी)। और अब मैं तुलना कर सकता हूं कि मेरे सभी अन्य अनुक्रमित बिट स्ट्रिंग्स के साथ वह बिट स्ट्रिंग कैसे समान है जो मेरी पूरी वस्तुओं की खोज के लिए एक प्रॉक्सी है अगर मुझे अपनी वस्तुओं को अपने प्रकाश में पेश करने का एक अच्छा और पहचानने योग्य तरीका मिला।


0

एक बहुत ही कम, के रूप में tldr जवाब:

स्थानीय संवेदनशील संवेदनशील हैशिंग का एक उदाहरण हैश को इनपुट के अपने स्थान में विमानों को बेतरतीब ढंग से (रोटेशन और ऑफसेट के साथ) सेट करने के लिए हो सकता है, और फिर अंतरिक्ष में हैश के लिए अपने बिंदुओं को छोड़ने के लिए, और प्रत्येक विमान के लिए आप बिंदु को मापते हैं इसके ऊपर या नीचे (उदाहरण: 0 या 1), और इसका उत्तर हैश है। अंतरिक्ष में समान बिंदुओं के समान हैश होगा यदि पहले या बाद में कोसाइन दूरी के साथ मापा जाता है।

आप इस उदाहरण को scikit-learn के प्रयोग से पढ़ सकते हैं: https://github.com/guillaume-chevalier/SGNN-Self-Governing-Neural-Networks-Projection-Layer

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.