2015-12-07 13 views
7

क्या विज्ञान की सीख के केनेघर्स क्लासिफायर के साथ 1 - कोसाइन समानता जैसे कुछ उपयोग करना संभव है?विज्ञान के साथ कोसाइन दूरी का उपयोग करना सीखें KNeighborsClassifier

This जवाब नहीं कहते हैं, लेकिन KNeighborsClassifier के लिए documentation पर, यह कहते मैट्रिक्स DistanceMetrics में उल्लेख उपलब्ध हैं। दूरी मेट्रिक्स में एक स्पष्ट कोसाइन दूरी शामिल नहीं है, शायद इसलिए कि यह वास्तव में एक दूरी नहीं है, लेकिन माना जाता है कि एक समारोह को मीट्रिक में इनपुट करना संभव है। मैंने KkeighborsClassifier में scikit सीखने रैखिक कर्नेल इनपुट करने की कोशिश की लेकिन यह मुझे एक त्रुटि देता है कि फ़ंक्शन को तर्क के रूप में दो सरणी की आवश्यकता होती है। किसी और ने कोशिश की?

+0

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

+2

@ Barmaley.exe कोसाइन मीट्रिक त्रिभुज असमानता का पालन करने के लिए बनाया जा सकता है, और वही आदेश किसी भी तरह के स्पष्ट कार्यान्वयन के बिना हासिल किया जा सकता है। विवरण के लिए मेरा जवाब देखें –

उत्तर

20

कोसाइन समानता को आम तौर पर x टी वाई/(|| x || * || y ||) के रूप में परिभाषित किया जाता है, और आउटपुट 1 यदि वे समान होते हैं और यदि वे पूरी तरह अलग होते हैं तो 1 तक जाते हैं। यह परिभाषा तकनीकी रूप से एक मीट्रिक नहीं है, और इसलिए आप इसके साथ गेंद और केडी पेड़ जैसे त्वरित संरचनाओं का उपयोग नहीं कर सकते हैं। यदि आप क्रूरकिट को ब्रूट फोर्स दृष्टिकोण का उपयोग करना सीखते हैं, तो आप इसे अपनी दूरी के रूप में उपयोग करने में सक्षम होना चाहिए यदि आप इसे अपनी कस्टम दूरी मीट्रिक ऑब्जेक्ट पास करते हैं। वहाँ एक वैध दूरी मीट्रिक में कोज्या समानता बदलने के तरीके हैं अगर आप गेंद के पेड़ का उपयोग करने के

सूचना (आप में JSAT library एक पा सकते हैं) हालांकि, कि x टी y/(|| एक्स || चाहते हैं * || वाई ||) = (एक्स/|| एक्स ||) टी (वाई/|| वाई ||)। यूक्लिडियन दूरी को एसकर्ट के रूप में समकक्ष रूप से लिखा जा सकता है (x टी x + y टी वाई - 2 x टी वाई)। यदि हम KNeighborsClassifier को देने से पहले प्रत्येक डेटापॉइंट को सामान्यीकृत करते हैं, तो के लिए x^T x = 1। तो यूक्लिडियन दूरी sqrt(2 − 2x^T y) पर गिर जाएगी। पूरी तरह से एक ही इनपुट के लिए, हमें sqrt(2-2*1) = 0 मिलेगा और पूर्ण विरोध के लिए sqrt(2-2*-1)= 2 होगा। और यह स्पष्ट रूप से एक साधारण आकार है, इसलिए आप अपने डेटा को सामान्य करके और फिर यूक्लिडियन दूरी का उपयोग करके कोसाइन दूरी के समान क्रम प्राप्त कर सकते हैं। जब तक आप uniform वजन विकल्प का उपयोग करते हैं, तो परिणाम सही कोसाइन दूरी का उपयोग करने के समान होंगे।

संबंधित मुद्दे