विरल वैक्टर के साथ बहुत उच्च आयामी अंतरिक्ष में करीबी जोड़े का पता लगाएं


9

मेरे पास (~ एक मिलियन) फ़ीचर वैक्टर हैं। कर रहे हैं (~ एक लाख) बाइनरी सुविधाओं, लेकिन प्रत्येक वेक्टर केवल में उनमें से (~ एक हजार) होगा , बाकी हैं । मैं उन वैक्टरों की जोड़ियों की तलाश कर रहा हूं जिनमें कम से कम (~ सौ) फ़ीचर हैं ( दोनों में )। ऐसी जोड़ियों की संख्या (~ एक मिलियन) के समान परिमाण है ।NMK10L1N

मुझे लगता है कि यह बहुत उच्च-आयामी स्थान में करीब बिंदु जोड़े की तलाश के रूप में संपर्क किया जा सकता है। डिस्टेंस फंक्शन ऐसा हो सकता है, जो इस बात पर आधारित हो कि दोनों वैक्टर में कितने फीचर्स हैं। लेकिन यह संभवतः अधिक परंपरागत दूरी वाले मीट्रिक (जैसे यूक्लिडियन) के साथ भी उपयोगी होगा।

इस समस्या से निपटने के लिए कौन से प्रसिद्ध एल्गोरिदम उपयोगी होंगे? जो कुछ भी या में द्विघात है, वह व्यावहारिक नहीं होगा।NM


इस समस्या का एक वास्तविक विश्व सूत्रीकरण लोगों को कई स्थानों के बीच घूमने पर विचार करना है । यदि दो लोग एक ही समय पर एक ही स्थान पर थे, तो हम कहते हैं कि वे एक-दूसरे से मिले थे। (वर्तमान में कम से कम 1 व्यक्ति के साथ स्थान-समय संयोजन की संख्या ।) हम दोस्तों की तलाश कर रहे हैं: वे लोग जो कम से कम से मिले थे ।NML


1
यदि वेक्टर 1, सुविधा 1 , और वेक्टर 2, सुविधा 1 भी , तो क्या उनके पास "सामान्य" सुविधा है? 00
गुंग - को पुनः स्थापित मोनिका

@ user777, मुझे लगता है कि नहीं , जिस स्थिति में आपका उत्तर सही है, लेकिन ओपी द्वारा स्पष्ट रूप से कहा जाना अच्छा होगा।
गुंग - को पुनः स्थापित मोनिका

@ आप सही मान रहे हैं। मैंने स्पष्ट करने के लिए प्रश्न संपादित किया है। धन्यवाद!
डैनियल डाराबोस

1
वैक्टर के कितने जोड़े के बारे में> सामान्य - यादृच्छिक नमूना + क्रूर बल में 100 विशेषताएं हैं? क्या आकार 1M x 1M एक वास्तविक समस्या है, या बना हुआ है? स्टैकओवरफ़्लो पर बिट-स्ट्रिंग-निकटतम-पड़ोसी-खोज में दृष्टिकोण भी देखें ।
डेनिस

1
संभवतः एक पागल सुझाव: अपने 1 Mbit लंबी सुविधा वाले वैक्टर को 1000 x 1000 पिक्सल्स की छवियों के रूप में देखें, और छवि क्लस्टरिंग के लिए तरीके देखें, जैसे stackoverflow.com/search?q= डेजीमाडेसिंग +clustering । Afaik आपको काम करने के लिए अच्छे फीचर्स (सिंगल पिक्सल नहीं) खोजने होंगे, लेकिन मैं कोई एक्सपर्ट नहीं हूं।
डेनिस

जवाबों:


6

ऐसा लगता है कि आप जिस दृष्टिकोण की तलाश कर रहे हैं वह मिनेश हस्ताक्षरों और स्थानीयता संवेदनशील हाशिंग (एलएसएच) का एक संयोजन है; , (स्वतंत्र रूप से उपलब्ध) खनन विशाल डेटासेट का पीडीएफ अध्याय 3 में कुछ तरीकों से इस दृष्टिकोण (और अन्य समानता के उपायों) का वर्णन करता है, लेकिन संक्षेप में:

एक minhash हस्ताक्षर अपने मूल मैट्रिक्स का एक संक्षिप्त प्रतिनिधित्व है कि कुछ नंबर लगाने से निर्माण किया है है n , सुविधाओं के लिए हैश फंक्शन की जिससे अवलोकन प्रति सुविधाओं की संख्या को कम करने। यह आपके डेटा के आकार को कम कर देता है, हालाँकि आप शायद ध्यान देंगे कि यह अभी भी आपको एक समस्या के साथ छोड़ता है।O(N2)

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

पाठ के अलावा, इसी नाम के कौरसेरा पाठ्यक्रम पर भी व्याख्यान उपलब्ध हैं ।


7

मैं वैक्टर के जोड़े की तलाश कर रहा हूं जिनमें कम से कम विशेषताएं हैं।L

यह बाइनरी फीचर वैक्टर का सिर्फ एक आंतरिक उत्पाद है। जब आंतरिक उत्पाद से अधिक है , तो जोड़ी में कम से कम तत्व होंगे। यह एक अपेक्षाकृत तेज गणना होना चाहिए - कम से कम, यूक्लिडियन दूरी की तुलना में तेज, जो इस डेटा के लिए बेकार और धीमा होगा। क्योंकि आप निर्धारित है कि आप जोड़े के लिए देख रहे हैं, यह होगा स्वाभाविक मतलब है कि आप क्या करना है हर वेक्टर तुलना करने के लिए संगणना।L1L(N2)

अंक जो एक साथ पास हैं वास्तव में एक क्लस्टरिंग समस्या है। लेकिन क्लस्टरिंग एल्गोरिदम का पहला चरण जो मैं परिचित हूं, वह जोड़ीदार दूरी या समानता की गणना कर रहा है। मुझे यकीन है कि किसी ने अधिक कुशल विकल्प विकसित किए हैं। शब्दावली के बारे में एक बिंदु: कम से कम आम पड़ोसियों को एक समानता के रूप में दर्शाया जाता है , दूरी नहीं! आंतरिक उत्पाद हैं, इस मामले में, असमान कॉशन समानताएं हैं।L

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

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

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

कुछ अतिरिक्त विचार के बाद, मेरे पास एक मजबूत कूबड़ है कि आप जिस डेटा के साथ काम कर रहे हैं वह किसी प्रकार का ग्राफ । यह बहुत प्रशंसनीय है कि कई जुड़े घटकों से बना है, जिस स्थिति में आप डेटा के आयाम को कम करने के सुखद दुष्प्रभाव के साथ को रेखांकन के एक सेट में विघटित कर सकते हैं । भले ही ग्राफ लगभग एक ही आकार के दो जुड़े घटक हैं, इसका मतलब है कि आपके जोड़ीदार तुलनाओं में कुल लागत लगभग है!GGGO(N2)14

यदि ग्राफ़ सममित है, तो निम्नलिखित अवलोकन सहायक हो सकते हैं:

  1. अपने ग्राफ़ के लाप्लासियन को रूप में परिभाषित करें , जहां डिग्री का एक विकर्ण मैट्रिक्स है (प्रत्येक फीचर वेक्टर का योग) और आसन्न मैट्रिक्स (मैट्रिक्स में फीचर वैक्टर का ढेर) है।P=DADA
  2. एक प्रतिरूप के रूप में की संख्या दिखाई देती है के जुड़े घटकों की संख्या है । ग्राफ को उसके जुड़े हुए घटकों में बदलना और पूरी तरह से उन घटकों के साथ काम करना आपके डेटा के आयाम को कम करने का दुष्प्रभाव होगा; आपकी मात्रा की गणना करना आसान हो जाएगा। लेकिन eigendecomposition कंप्यूटिंग एक लाख कोने के लिए महंगा हो जाएगा ...0PG
  3. (एक पूर्ण क्रमपरिवर्तन के बाद) , के जुड़े हुए घटकों के लाप्लाशियनों का एक ब्लॉक विकर्ण मैट्रिक्स है ।PG
  4. P सकारात्मक धनात्मक है। यह किसी न किसी तरह लगभग निश्चित रूप से उपयोगी है।
  5. का बीजगणितीय संयोजकता के दूसरे सबसे छोटे प्रतिजन का मान है । यह आपको बताता है कि कितनी अच्छी तरह से जुड़ा हुआ है। शायद यह उन सवालों में से कुछ का जवाब देगा जो आप फिर से रुचि रखते हैं: वैक्टर जिसमें आम विशेषताएं हैं। स्पेक्ट्रल ग्राफ सिद्धांत इस विचार को कुछ और विस्तार से विकसित करता है।GPG

"क्या यह एसएनए समस्या है?" मुझे यकीन नहीं है। एक आवेदन में सुविधाओं के व्यवहार का वर्णन है और हम समान व्यवहार वाले लोगों को जोड़ने के लिए देख रहे हैं। क्या यह एक SNA समस्या है?

यदि आपके पास एक द्विदलीय ग्राफ है जो लोगों को व्यवहार से जोड़ता है, तो आप इसे संबद्ध नेटवर्क रूप में सोच सकते हैं , जिसमें लोग पंक्तियों और स्तंभों के रूप में व्यवहार करते हैं। यदि आप लोगों को उन व्यवहारों के माध्यम से लोगों से जोड़ना चाहते हैं जो उनके पास सामान्य हैं, तो आप गणना कर सकते हैं । उन व्यवहारों की संख्या है जो लोगों के पास समान हैं। जाहिर है, कोने का सेट जहां आपके प्रश्न का उत्तर देता है।BBBT=AAijAijL


उत्कृष्ट उत्तर के लिए धन्यवाद! यह बहुत सी चीजें हैं जिनकी मुझे आगे जांच करनी होगी। मैं आश्वस्त नहीं हूं कि जोड़ीदार तुलना अपरिहार्य है, हालांकि। क्या यह एक भयावह समस्या नहीं है जहाँ मैं आकार> 1 के समूहों की तलाश में हूँ? मैं उम्मीद कर रहा था कि कुछ स्थानिक विभाजन दृष्टिकोण जोड़ीदार तुलना की संख्या पर भारी कटौती कर सकता है।
डैनियल दाराबोस

क्षमा करें, मुझे डेटा विज्ञान के बारे में अधिक जानकारी नहीं है। लेकिन क्या यह एक भयावह समस्या नहीं है जब हम एक साथ समूह की ओर देख रहे हैं जो एक-दूसरे के करीब हैं? मेरे पास अधिकतम दूरी (एल) है और एक दूसरे से उस दूरी पर स्थित बिंदुओं के समूह (जोड़े) को खोजना चाहते हैं। क्या यह क्लस्टरिंग की परिभाषा को बहुत ज्यादा बढ़ा रहा है?
डैनियल दरबोस

1
यह वास्तव में एक ग्राफ समस्या के रूप में प्रकाशित किया जा सकता है। उस मामले में हमारे पास एन पॉइंट्स और एम फीचर्स का द्विदलीय ग्राफ है और कम से कम एल आम पड़ोसियों वाले अंकों के जोड़े ढूंढना चाहते हैं। मैं विशेष रूप से फीचर वेक्टर-आधारित फंतासिंग को देख रहा हूं, उम्मीद करता हूं कि एक क्लस्टरिंग विधि है जो मेरे लिए उपयोग की जा सकती है। K-SVD को इसी तरह की समस्या का सुझाव दिया गया था , जो आँकड़े .stackexchange.com / questions / 93366 / … में हैं , इसलिए मैं उस समय इसे पढ़ रहा हूं। धन्यवाद!
डैनियल डारबोस

"क्या यह एसएनए समस्या है?" मुझे यकीन नहीं है। एक आवेदन में सुविधाओं के व्यवहार का वर्णन है और हम समान व्यवहार वाले लोगों को जोड़ने के लिए देख रहे हैं। क्या यह एक SNA समस्या है? मुझे शब्दावली से परिचित कराने के लिए धन्यवाद, यह मेरी खोज का मार्गदर्शन करने में बहुत सहायक है।
डैनियल दाराबोस

मैंने अपना उत्तर संशोधित कर लिया है। क्या आपका अंतिम लक्ष्य सिर्फ लोगों को कई व्यवहारों से रूबरू कराना है, या यह कुछ और है?
साइकोरैक्स का कहना है कि मोनिका

2

: अंतरिक्ष समय ब्लॉक में बैठक के लोगों को खोज पर
में विभाजित अंतरिक्ष ब्लॉक (शहर ब्लॉक, वर्ग किमी, जो कुछ भी), और में समय ब्लॉक। एक अच्छा मौका है कि अगर लोग मिलते हैं, तो वे एक ही ब्लॉक में मिलेंगे। इसलिए प्रत्येक ब्लॉक के भीतर एनएन चलाएं। रुंटाइम और त्रुटि दर निश्चित रूप से ब्लॉक आकार और आकार (यह भी कि आप क्या कर सकते हैं / MapReduce को समानांतर कर सकते हैं) पर निर्भर करते हैं, लेकिन आपके पास खेलने के लिए पैरामीटर हैं - इंजीनियरिंग, वाइड- ।NspaceNtime
O(N2)

इसे भी देखें: datascience.stackexchange पर
निकटतम पड़ोसी-खोज-के लिए बहुत उच्च-आयामी डेटा

pairwise.py :

TF-IDF और कोसाइन दूरी का उपयोग करते हुए एक बड़ी संख्या में दस्तावेजों के बीच बड़े पैमाने पर तेजी से और स्केलेबल जोड़ीदार तुलना करने के लिए मानक पुस्तकालय से पायथन जेनसिम पुस्तकालय और हीपैक का उपयोग करता है।


1

उलटे रंगदारी! एक बिंदु को रूप में प्रतिनिधित्व करते हैं , गैर शून्य मानों के अनुरूप कुंजी (यानी सही धारण करने वाली विशेषताएं)। किसी तत्व के भंडारण का औसत आकार होगा । दरअसल, मुझे फीचर्स को स्टोर करने के लिए केवल स्ट्रिंग्स की जरूरत है और मानों को होल्ड करने के लिए तैरता है।xfeat1:value1,feat101:value101KKK

प्रत्येक सुविधा के लिए, इस सुविधा को साझा करने वाले अनुक्रमित एक शब्दकोश का निर्माण करें। उम्मीद है, यह संख्या बहुत बड़ी नहीं होगी (यदि आपके पास एक विशेषता है जो सभी अनुक्रमितों द्वारा साझा की जाती है, तो यह दृष्टिकोण बर्बाद हो जाता है, आप यहां पढ़ना बंद कर सकते हैं)।

यह डिक्शनरी इस तरह दिखती है: । यदि मैं गति प्राप्त करना और अंतरिक्ष को बचाना चाहता हूं, तो मैं उन विशेषताओं को भी छोड़ सकता हूं जो केवल एक तत्व (यहां: ) के साथ पाए जाते हैं क्योंकि वे करीबी जोड़े का उत्पादन नहीं करेंगे। यह शब्दकोश संचालन में बनाया गया है ।feat1:{1,101,202},feat2:{7,202},feat3:{202}...featM:{3,45,6}feat3O(NK)

अब, जब आप दूसरों के लिए एक तत्व की दूरी का मूल्यांकन करना चाहते हैं, तो (शब्दकोश के साथ) सूचकांक की सूची को साथ कम से कम एक विशेषता साझा करना । आप जानते हैं कि अन्य सभी तत्व से बहुत दूर हैं (वे एक विशेषता भी साझा नहीं करते हैं!)। यदि "तत्वों प्रति सुविधा" की औसत संख्या कम है (इसे कहते हैं ), तो आपको किसी भी अधिक होने की आवश्यकता नहीं है ।xxxPO(N2)

अब एक और बड़ा सुधार है अगर और को शब्दकोशों के रूप में अच्छी तरह से दर्शाया जाता है, क्योंकि या को संचालन में और की कुंजियों पर पुनरावृत्ति का मूल्यांकन किया जा सकता है ।xyd(x,y)<x,y>xyO(K)

आपका अंतिम जटिलता भोले प्रारंभिक दृष्टिकोण के बजाय ।O(NPK)O(MN2)

मैंने बड़े पाठ सेट (ट्रेन: 2 000 000 लाइनों, 35 000 लाइनों का परीक्षण, सुविधाओं की संख्या: 10 000, प्रति तत्व सुविधाओं की औसत संख्या: 20) पर एक KNN को लागू करने के लिए इस पद्धति को लागू किया, जो लगभग एक घंटे में चला। ।


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

1) "यह संख्या बहुत बड़ी नहीं होगी": औसत कॉलम योग = औसत पंक्ति योग = 1000. 2) फ़्लोट्स? ओपी की विशेषताएं बाइनरी 3 हैं) 3 रन एन, 2 एन, 4 एन के लिए रनटाइम्स दिलचस्प होंगे, यह दिखाएगा कि क्या वे लगभग । O(N2)
डेनिस

1

मुझे एक संदर्भ मिला है जो आपको उपयोगी लग सकता है, और मेरा मानना ​​है कि यह अब तक प्रस्तुत किए गए हर दूसरे समाधान की तुलना में अधिक कुशल है। अगर मैं सही ढंग से समझ, आप एक निर्माण कर सकते हैं पड़ोसी -nearest (KNN) ग्राफ में समय।kO(LNlog(N))

एल। इरॉटज़, एम। स्टाइनबैक और वी। कुमार। "एक नया साझा किया गया निकटतम पड़ोसी क्लस्टरिंग एल्गोरिथम और उसके अनुप्रयोग।" क्लस्टरिंग हाई डायमेंशनल डेटा और उसके अनुप्रयोग, 2002 पर पहली कार्यशाला की कार्यवाही।


धन्यवाद, यह एक दिलचस्प पढ़ा है। आपको O (LN log (N)) समय कैसे मिला? सुनने मे उत्तम है। लेकिन एल्गोरिथ्म विवरण "समानता मैट्रिक्स का निर्माण" से शुरू होता है और जहां तक ​​मैं समझता हूं, यह एक एनएक्सएन मैट्रिक्स होगा।
डैनियल दाराबोस

@DanielDarabos जटिलता को आर के साथ प्रैक्टिकल ग्राफ़ माइनिंग
साइकोरैक्स का कहना है कि मोनिका

1

एक पागल, लेकिन कार्य करने की संभावना आवृत्ति डोमेन पर जाने के लिए हो सकती है। एक पागल / बीमार तेज़ फ़ाट है जिसे " स्पार्स एफएफटी " कहा जाता है, जहाँ आप उन तरीकों की संख्या निर्दिष्ट करते हैं जिनकी आप परवाह करते हैं (आपकी 100 विशेषताओं की गिनती) और फिर आप संकल्पों में काम करते हैं, और थ्रेशोल्ड की तुलना में पंक्ति-अधिकतम की तलाश करते हैं (देखें) आपकी संख्या के ऊपरी रजिस्टरों में बिट्स)। यह जहां ।O(klogn)k<<n

यह देखते हुए कि आपका k 100 है और आपका n 1e6 है, इससे आपको क्लासिक FFT की तुलना में ~ 1e4x स्पीड मिलनी चाहिए।

यदि आपको गति में एक और 20x की आवश्यकता है, और आप एक जोखिम लेने वाले हैं, तो डोमेन के खिलाफ सभी पंक्तियों को स्पष्ट करने और चोटी की तलाश करने के बजाय, आप पंक्तियों के सबसेट को बूटस्ट्रैप कर सकते हैं।

आप उन स्तंभों को हटाकर स्तंभों को भी रोक सकते हैं जिनकी रकम 50 से नीचे है, या कुछ अन्य सीमाएं हैं, जो आपके द्वारा मेल खाने वाली पंक्तियों की संख्या के आधे हिस्से के क्रम पर है। बहुत कम से कम आपको सभी शून्य और सभी गैर-सूचनात्मक के रूप में कॉलम को हटाना चाहिए। पंक्तियों के साथ जो पूरी तरह से खाली या पर्याप्त खाली हैं, या पंक्तियाँ इतनी भरी हुई हैं कि वे अप्रासंगिक हैं।

To-do: मुझे सिंथेटिक डेटा का उपयोग करके यहां एक उदाहरण देना चाहिए, और कुछ तरीकों की तुलना करनी चाहिए।


0

मैं बस एक पेपर भर आया जो सीधे प्रासंगिक है।

यादृच्छिक एल्गोरिदम और एनएलपी: उच्च गति संज्ञा क्लस्टरिंग के लिए स्थानीयता संवेदनशील हैश फ़ंक्शन का उपयोग करना (रविचंद्रन एट अल, 2005)

यह वास्तव में https://github.com/soundcloud/cosine-lsh-join-spark में लागू किया गया है, जहां मैंने इसे पाया है।

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

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