एक बड़ी बाइनरी डेटासेट को कुछ श्रेणियों में क्लस्टर करने के लिए मुझे किस एल्गोरिथ्म का उपयोग करना चाहिए?


11

मेरे पास एक बड़ी (650K पंक्तियाँ * 62 कॉलम) बाइनरी डेटा का मैट्रिक्स (केवल 0-1 प्रविष्टियाँ) हैं। मैट्रिक्स ज्यादातर विरल है: लगभग 8% भरा हुआ है।

मैं इसे 5 समूहों में बांटना चाहूंगा - 1 से 5 तक नामांकित कहो। मैंने श्रेणीबद्ध क्लस्टरिंग की कोशिश की है और यह आकार को संभालने में सक्षम नहीं था। मैंने 62 किमी की लंबाई वाले 650K वैक्टरों पर विचार करते हुए, दूरी आधारित k- साधन क्लस्टरिंग एल्गोरिदम का भी उपयोग किया है। मुझे इनमें से किसी के साथ भी उचित परिणाम नहीं मिला।

कृपया मदद कीजिए।


मैं अपने 1 प्रतिनिधि के b / c पर टिप्पणी नहीं कर सकता, इसलिए मुझे उत्तर के रूप में यह लिखना पड़ा। आप जैकार्ड समानता में देख सकते हैं। मुझे लगता है कि अजगर डरपोक इसके कार्यान्वयन हैं।
जैककार्ड

क्या डेटा को स्वाभाविक रूप से पांच समूहों में गिरने का कोई कारण है, कम से कम कुछ हद तक? क्या आप वास्तव में पंक्ति क्लस्टरिंग में रुचि रखते हैं, या क्या आप बिट वैक्टर में एन्कोड किए गए 62 लक्षणों के बीच संबंधों में भी रुचि रखते हैं? यदि उत्तरार्द्ध, तो अन्य तकनीक अधिक उपयुक्त हैं।
11:11 बजे माइक

जवाबों:


4

आप गलत सवाल पूछ रहे हैं।

"क्या एल्गोरिथ्म" पूछने के बजाय, आपको " आपके आवेदन में एक सार्थक श्रेणी / क्लस्टर " होना चाहिए ।

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

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

लेकिन सबसे पहले, क्या आपने अपने डेटा को सरल बनाने के लिए डुप्लिकेट हटा दिए हैं , और उदाहरण के लिए अद्वितीय / खाली कॉलम हटा दिए हैं?

शायद APRIORI या इसी तरह के दृष्टिकोण भी आपकी समस्या के लिए अधिक सार्थक हैं।

किसी भी तरह से, पहले पता लगाएँ कि आपको क्या चाहिए, फिर कौन सा एल्गोरिथ्म इस चुनौती को हल कर सकता है। काम डेटा-संचालित , यादृच्छिक एल्गोरिदम की कोशिश करके नहीं।


क्या आप कृपया बता सकते हैं कि "हैमिंग दूरी के साथ उपयोग क्यों न करें"? यह समझ में आ सकता है, सब के बाद यह Matlab में उपलब्ध है। मैं एक नया सवाल खोलने का मन नहीं है, अगर यह समझ में आता है।
दार अतरैया

माध्य के कारण। अंकगणित का मतलब हैमिंग दूरी या बाइनरी डेटा के साथ अर्थहीन है। का प्रयोग करें मोड या medoid बजाय।
है क्विट - Anony-Mousse

बस यह सुनिश्चित करने के लिए कि मैं इसे सही कर रहा हूं: matlab हैम मेट्रिक के साथ k- साधनों का उपयोग करते समय सेंट्रोइड्स को अपडेट करते समय अंकगणितीय माध्य का उपयोग करता है। क्या वह सही है? मतलाब में इस मीट्रिक का उपयोग करने का सही तरीका क्या है?
Drar Atariah

k- साधन को k- साधन कहा जाता है क्योंकि यह माध्य का उपयोग करता है। अन्यथा, इसे के-मेडोइड्स, के-मोड्स आदि कहा जाता है। इसका मतलब एल 2 के लिए अच्छा है - चुकता विचलन का योग।
है क्विट - Anony-Mousse

तो, matlab k- का उपयोग करता है अर्थ है हैमिंग मेट्रिक के साथ मिलकर; यह बहुत मतलब नहीं है।
दार अतरैया

3

हो सकता है कि मुझे जवाब देने में थोड़ी देर हो, लेकिन शायद यह भविष्य में कुछ शरीर के लिए उपयोगी होगा।

बाइनरी वर्गीकरण समस्याओं के लिए अनुकूली अनुनाद सिद्धांत एक अच्छा एल्गोरिथ्म है। ART 1 के बारे में जाँचें। अधिक जानकारी आप नि: शुल्क न्यूरल नेटवर्क डिज़ाइन बुक में अध्याय 19 में देख सकते हैं ।

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


2

बाइनरी डेटा क्लस्टरिंग के लिए एक क्लासिक एल्गोरिथ्म बर्नौली मिक्सचर मॉडल है। मॉडल को बायेसियन विधियों का उपयोग करके फिट किया जा सकता है और ईएम (एक्सपेक्टेशन मैक्सिमाइजेशन) का उपयोग करके भी फिट किया जा सकता है। आप GitHub भर में नमूना अजगर कोड पा सकते हैं, जबकि पूर्व अधिक शक्तिशाली है, लेकिन अधिक कठिन भी है। मेरे पास GitHub पर मॉडल का C # कार्यान्वयन है (Infer.NET का उपयोग करता है जिसमें प्रतिबंधात्मक लाइसेंस है!)।

मॉडल काफी सरल है। पहले उस क्लस्टर को सैंपल दें जिसमें डेटा पॉइंट होता है। फिर स्वतंत्र रूप से कई बर्नौली से नमूना लें जैसा कि आपके डेटासेट में आयाम हैं। ध्यान दें कि यह क्लस्टर दिए गए द्विआधारी मूल्यों की सशर्त स्वतंत्रता का अर्थ है!

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

Bayesian सेटिंग में BMM मॉडल की कई शांत विशेषताएं हैं:

  1. ऑनलाइन क्लस्टरिंग (डेटा स्ट्रीम के रूप में आ सकता है)

  2. लापता आयामों का पता लगाने के लिए मॉडल का उपयोग किया जा सकता है

पहला काम बहुत आसान है जब डेटासेट बहुत बड़ा होता है और मशीन के रैम में फिट नहीं होगा। दूसरे का उपयोग सभी प्रकार के गुम डेटा इंप्यूटेशन कार्यों में किया जा सकता है। बाइनरी MNIST छवि के लापता आधे को लागू करना।

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