सेट में सभी बिंदुओं के लिए निकटतम निकटतम पड़ोसी के लिए दूरी की गणना


9

मशीन लर्निंग एप्लिकेशन के लिए, मेरे समूह को यूक्लिडियन दूरी की गणना करने की आवश्यकता है एक सेट में निकटतम पड़ोसी एक्स प्रत्येक के लिए एक्स(एक्सY)आर (के लिये 5 और लगभग 100 के बीच, और |एक्स||Y|कुछ सौ मिलियन तक)। वर्तमान में हम ब्रूट-बल का उपयोग कर रहे हैंहे(|एक्स||एक्सY|) एक केडी-पेड़ के साथ दृष्टिकोण या स्पष्ट एक एक्स, जो जब उच्च है और |एक्स|अपेक्षाकृत कम कभी जीत नहीं होती है। (सब कुछ स्मृति में है।)

ऐसा लगता है कि जानवर-बल की तुलना में एक बेहतर तरीका होना चाहिए, हालांकि - कम से कम एक जो त्रिकोण असमानता का लाभ उठाता है, या शायद स्थानीय-संवेदनशील हैश के साथ। एक यथोचित तंग सन्निकटन भी संभवतः ठीक है।

मैंने जो शोध पाया है वह एकल निकटतम पड़ोसी (या लगभग निकटतम) को खोजने की समस्या पर ध्यान केंद्रित करता है। क्या समस्या मैं किसी अन्य नाम से जाना चाहता हूं, या क्या उस संबंधित समस्या से कोई संबंध है जिसके बारे में मैंने नहीं सोचा है?


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

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

मुझे लगता है कि मैं उम्मीद कर रहा था कि यह तथ्य कि हम जानते हैं कि हम इसका मूल्यांकन कर रहे हैं X(साथ ही अन्य बिंदु) एल्गोरिथ्म में किसी प्रकार की सहायता के लिए अनुमति देगा। मुझे यकीन नहीं है कि यह मामला है, हालांकि।
डगल

क्या है kआम तौर पर अपने अनुप्रयोगों में?
सुरेश वेंकट

1
@ सुरेश वेंकट हम आमतौर पर एक का उपयोग करते हैं kके बारे में 3, कभी कभी थोड़ा बड़ा है।
डगल

जवाबों:


10

यहाँ एक सरल चाल है जो उपयोगी हो सकती है। एक यादृच्छिक नमूने पर विचार करें जो प्रायिकता 1 / k के साथ हर बिंदु को उठाता है। यह सत्यापित करना आसान है कि अच्छी संभावना के साथ आपके निकटतम पड़ोसी में से एक नमूना में होगा। नमूने में निकटतम पड़ोसी की गणना करें। इस O (k log n) बार दोहराएं। उच्च संभावना के साथ कश्मीर निकटतम अंक मेंO(klogn)गणना किए गए बिंदु आपकी क्वेरी के निकटतम निकटतम पड़ोसी हैं। इस प्रकार, निकटतम पड़ोसी को खोजना, करने के बराबर हैO(klogn) निकटतम पड़ोसी प्रश्न।

संक्षेप में, मुझे निकटतम पड़ोसी प्रश्नों का उत्तर देने के लिए एक तेज़ डेटा-संरचना दें, और मैं आपको k-निकटतम पड़ोसी की तेज़ डेटा-संरचना देने में खुशी होगी।


अच्छी चाल। विभिन्न क्वेरी बिंदुओं के लिए नमूनों का फिर से उपयोग करना भी ठीक होना चाहिए? तो गणना करने के लिएkसेट में प्रत्येक बिंदु के लिए -nestest-पड़ोसी, मुझे केवल डेटा संरचना बनाने की आवश्यकता है O(klogn)बार।
डगल

1
नमूनों का पुन: उपयोग करना मुश्किल है, क्योंकि तब आपको आवश्यकता होती है कि किसी भी क्वेरी के लिए एक निश्चित नमूना काम करता है (मात्रा का ठहराव होता है) और इसलिए संभावनाएं बदल जाती हैं। सामान्य विचार तब बड़े आकार के नमूनों के सेट का निर्माण करना होगा (यह #queries पर निर्भर करता है) और उनका उपयोग करें, यदि यह एक समस्या है।
सुरेश वेंकट

@ सुरेश वेंकट आह, बिल्कुल। मैं बैठकर वास्तविक संभावनाओं का पता लगाऊंगा। सभी को धन्यवाद!
डगल

यदि तुम करो O(klog(1/δ)) नमूने, फिर प्रत्येक क्वेरी संभावना के साथ सफल होती है 1δ। ध्यान दें, यह चाल पहली झलक में देखने से थोड़ी बेहतर है - आपके पास हैO(klogn) नमूने, उनमें से हर एक का आकार O(n/k) (उच्च संभावना के साथ अगर kबहुत बड़ा नहीं है)। जिसका अर्थ है प्रत्येक नमूने के लिए बेहतर क्वेरी समय।
साराएल हर-पेलेड

3

एक "स्थानीय-संवेदनशील हैश" का उपयोग करके एक सस्ता अनुमानित समाधान प्रत्येक बिंदु को बिट इंटरलीव्ड फॉर्म में परिवर्तित करने के लिए होगा:

[xxx, yyy, zzz] -> xyzxyzxyz

फिर प्रीप्रोसेसिंग के लिए रेडिक्स सॉर्ट।

क्वेरी पर जाएं और जाएं k एक आकार पाने के लिए दोनों दिशाओं में अंक 2kसेट; तो ले लोkthअपनी बात के निकटतम। इस पेपर को कॉनर और कुमार भी देखें ।

साथ ही इस पत्र को कैलाहन और कोसाराजू द्वारा देखें ।

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