कोसाइन समानता को आम तौर पर 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
वजन विकल्प का उपयोग करते हैं, तो परिणाम सही कोसाइन दूरी का उपयोग करने के समान होंगे।
स्रोत
2015-12-07 23:39:54
केएनएन वर्गीकरण कुछ अनुकूलन का उपयोग करने की संभावना है जो त्रिभुज असमानता पर भरोसा करते हैं। कोसाइन मीट्रिक इसका पालन नहीं करता है, इसलिए केएनएन के सही व्यवहार की गारंटी नहीं है। –
@ Barmaley.exe कोसाइन मीट्रिक त्रिभुज असमानता का पालन करने के लिए बनाया जा सकता है, और वही आदेश किसी भी तरह के स्पष्ट कार्यान्वयन के बिना हासिल किया जा सकता है। विवरण के लिए मेरा जवाब देखें –