2012-11-29 39 views
12

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

मैं केएनएन विश्लेषण में स्पष्ट मूल्यों को शामिल करने के बारे में कैसे जा सकता हूं?

जहां तक ​​मुझे पता है, कोई भी प्रत्येक विशिष्ट फ़ील्ड को संख्या कुंजी (जैसे बैंक 1 = 1; बैंक 2 = 2, आदि) पर मैप नहीं कर सकता है, इसलिए मुझे विशिष्ट फ़ील्ड का उपयोग करने के लिए बेहतर दृष्टिकोण की आवश्यकता है। मैंने सुना है कि कोई बाइनरी संख्या का उपयोग कर सकता है - क्या यह एक व्यवहार्य विधि है? सलाह की सराहना की जाएगी।

+0

आप सवाल बहुत अस्पष्ट है। कृपया इसे और अधिक ठोस बनाने के लिए कुछ उदाहरण जोड़ें: आप जिस डेटा से निपट रहे हैं वह वास्तव में क्या है? आप किस तरह के क्लस्टर प्राप्त करने की उम्मीद करते हैं? किस मानदंड के आधार पर? आप किस एल्गोरिदम का उपयोग कर रहे हैं? – Shai

+0

स्पष्ट डेटा को बाइनरी मानों में परिवर्तित करने के संबंध में: सेकंड की शुरुआत http://arxiv.org/pdf/1210.7070v3.pdf देखें। 2 इस रूपांतरण का वर्णन करें। – Shai

+1

मैं के-निकटतम पड़ोसी क्लस्टरिंग का उपयोग कर रहा हूं। मैं एकाधिक पैरामीटर/आयामों (आयु, लिंग, बैंक, वेतन, खाता प्रकार) का उपयोग कर परीक्षण बिंदु के आसपास के = 20 अंकों का समूह उत्पन्न करना चाहता हूं। खाता प्रकार के लिए, उदाहरण के लिए, आपके पास चालू खाता है, खाता और बचत खाता (स्पष्ट डेटा) देखें। वेतन, हालांकि, निरंतर (संख्यात्मक) है। केएनएन क्लस्टरिंग करने के लिए मैं निरंतर क्षेत्रों के साथ स्पष्ट क्षेत्रों का उपयोग कैसे करूं? – Graham

उत्तर

11

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

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

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

केवल यूक्लिडियन दूरी से अधिक है। विभिन्न सेट सैद्धांतिक उपायों हैं जो आपके मामले में अधिक उपयुक्त हो सकते हैं। उदाहरण के लिए, तनिमोतो गुणांक, जैककार्ड समानता, पासा के गुणांक और इसी तरह। कोसाइन भी एक विकल्प हो सकता है।

पूरी समानता खोज के विषयों के लिए समर्पित सम्मेलनों रहे हैं - कोई भी दावा किया कि कुछ भी लेकिन इयूक्लिडियन वेक्टर रिक्त स्थान में मामूली बात है (और वास्तव में, वहाँ भी नहीं): http://www.sisap.org/2012

+0

उत्तर के लिए धन्यवाद। मैं अभी भी वास्तव में इसे कार्यान्वित करने के तरीके से संघर्ष कर रहा हूं। मैं एक साधारण मैटलैब फ़ंक्शन का उपयोग कर रहा हूं, "knnsearch", जो प्रत्येक बिंदु पर यूक्लिडियन दूरी की गणना करता है। अब, यकीन है, मैं नर/मादा = 0/1, या बैंक 1 = 100, बैंक 2 = 010, बैंक 3 = 001 कह सकता हूं। हालांकि, मैं इसका उपयोग कैसे करूं? मुझे बस एक दूरी समारोह को कार्यान्वित करना शुरू करने के बारे में थोड़ा सा मार्गदर्शन चाहिए, और क्या मैटलैब के फ़ंक्शन का उपयोग करना संभव है ... – Graham

+0

मै मैटलैब का उपयोग नहीं करता, इसलिए मुझे नहीं पता कि इसे कैसे किया जाए। यूक्लिडियन दूरी भौतिक 2 डी/3 डी में समझ में आता है, लेकिन यह उच्च आयामी गैर-भौतिक डेटा में अच्छा नहीं है। मैं व्यक्तिगत रूप से ऐसे मूल्यों के "बिट एन्कोडिंग" को पसंद नहीं करता हूं। ध्यान दें कि आपके उदाहरण में नर/मादा के पास बैंक गुणों का कम वजन (दूरी 0 या 1) है (यूक्लिडियन में दूरी 0 या वर्ग (2))! –

1

स्पष्ट डेटा को संख्यात्मक रूप में परिवर्तित करने का सबसे आसान तरीका संकेतक वैक्टर का उपयोग करके है। मेरे पिछले टिप्पणी पर पोस्ट किया गया संदर्भ देखें।

+0

धन्यवाद शाई - मैं आपके पेपर में तकनीकी विवरणों से थोड़ी कम वजन कम कर रहा हूं। कृपया नीचे दी गई टिप्पणियां देखें। – Graham

+1

प्रत्येक विशिष्ट चर के लिए, केवल n आयाम बनाएं जहां चर संभव एन लेता है। इनमें से प्रत्येक आयाम एक विशेष मान से मेल खाता है, और यह या तो 0 (वर्तमान नहीं है), या 1 (वर्तमान) हो सकता है। इस प्रकार आपका एन-मार्ग स्पष्ट चर अब एन बाइनरी विशेषताएं है। अब आप यूक्लिडियन दूरी, या –

+0

@BenAllison जैसे किसी भी अन्य मीट्रिक का उपयोग कर सकते हैं यदि आपके वैक्टर बाइनरी हैं (यानी, केवल शून्य और एक से युक्त) एक अच्छी दूरी माप ** हैमिंग ** दूरी हो सकती है: http: // en.wikipedia.org/wiki/Hamming_distance। यह बहुत आसानी से और कुशलता से गणना की जा सकती है। – Shai

0

हम इलाका संवेदनशील हैशिंग उपयोग कर सकते हैं (LSH) + दूरी संपादित करें और मान लें कि प्रत्येक बिन एक अलग श्रेणी का प्रतिनिधित्व करता है? मैं समझता हूं कि स्पष्ट डेटा कोई ऑर्डर नहीं दिखाता है और एलएसएच में डिब्बे को हैश फ़ंक्शन के अनुसार व्यवस्थित किया जाता है। हैश फ़ंक्शन ढूंढना जो एक मीट्रिक स्पेस सीखने की तरह मुझे एक बड़ी संख्या में डिब्बे देता है।