केएनएन करते समय आपको एक बात ध्यान में रखने की आवश्यकता है, अर्थात् यह कड़ाई से गणितीय रूप से व्युत्पन्न एल्गोरिथ्म नहीं है, बल्कि एक अंतर्ज्ञान पर आधारित एक साधारण क्लासिफायर / रेजिस्टर है - जब तर्क नहीं बदलते हैं तो अंतर्निहित फ़ंक्शन बहुत नहीं बदलता है। बहुत। या दूसरे शब्दों में अंतर्निहित फ़ंक्शन स्थानीय रूप से स्थिर है। इस धारणा के साथ, आप किसी भी बिंदु पर अंतर्निहित फ़ंक्शन के मूल्य का अनुमान लगा सकते हैं, (संभवतः भारित) निकटतम बिंदुओं के मूल्यों का मतलब है।
इस बात को ध्यान में रखते हुए, आप महसूस कर सकते हैं कि बहुसंख्यक मतदान में स्पष्ट विजेता नहीं होने पर क्या करना चाहिए, इसकी कोई स्पष्ट अनिवार्यता नहीं है। आप या तो हमेशा एक विषम कश्मीर का उपयोग कर सकते हैं, या कुछ इंजेक्शन भार का उपयोग कर सकते हैं।
पड़ोसियों के मामले में 3 से 5 ब्याज के बिंदु से समान दूरी पर होने के कारण, आप या तो केवल दो का उपयोग कर सकते हैं, या सभी का उपयोग कर सकते हैं 5. फिर, ध्यान रखें कि केएनएन जटिल गणितीय विश्लेषण से प्राप्त कुछ एल्गोरिथ्म नहीं है, लेकिन सिर्फ सरल अंतर्ज्ञान। यह आपके ऊपर है कि आप उन विशेष मामलों से कैसे निपटना चाहते हैं।
जब वज़न करने की बात आती है, तो आप अपने एल्गोरिथ्म को उस अंतर्ज्ञान पर आधारित करते हैं, जब फ़ंक्शन बहुत अधिक नहीं बदलता है जब तर्क बहुत अधिक नहीं बदलते हैं। इसलिए आप ऐसे पॉइंट्स को बड़ा वेट देना चाहते हैं जो पॉइंट ऑफ इंटरेस्ट के करीब हों। एक अच्छी वेटिंग उदाहरण के लिए होगी , या कोई अन्य जो अपेक्षाकृत बड़ा है जब दूरी छोटी होती है, और अपेक्षाकृत छोटा तब होता है जब अंकों के बीच की दूरी बड़ी होती है (इसलिए शायद कुछ का विलोम। सतत मीट्रिक समारोह)।1||x−y||2
सही वजन खोजने के मुद्दे पर एनआईपीएस को छूने पर इस साल समोरी कोट्टोफे और अब्देसलाम बुलारियास द्वारा एक अच्छा पेपर भी दिया गया है। उनका सामान्य अंतर्ज्ञान, यह है कि अंतर्निहित फ़ंक्शन अलग-अलग दिशाओं में भिन्न होता है (यानी, इसका अलग-अलग आंशिक डेरिवेटिव अलग-अलग परिमाण का होता है), इसलिए यह समझ में आता है कि इस अंतर्ज्ञान के अनुसार मेट्रिक्स / वेटिंग को कुछ बदलाव करें। वे दावा करते हैं कि यह चाल आम तौर पर kNN और कर्नेल रिग्रेशन के प्रदर्शन को बेहतर बनाती है, और मुझे लगता है कि उनके पास इस दावे का समर्थन करने के लिए कुछ सैद्धांतिक परिणाम भी हैं (हालांकि मुझे यकीन नहीं है कि वे सैद्धांतिक परिणाम वास्तव में क्या दावा करते हैं, मेरे पास जाने का समय नहीं था अभी तक पूरे कागज के माध्यम से)। कागज को अपनी साइटों से मुफ्त में डाउनलोड किया जा सकता है, या गोग्लिंग के बाद "ग्रैडिएंट वेट्स नॉनपेरमेट्रिक रिग्रेसर्स की मदद करते हैं"।
अब, आप शायद यह जानना चाहेंगे कि आप ड्रॉ वगैरह होने पर प्रदर्शन करने के लिए सही k, मीट्रिक, भार, कार्रवाई कैसे कर सकते हैं। दुःख की बात यह है, कि मूल रूप से कुछ गहरी सोच के बाद सही हाइपरपैरेटर्स पर पहुंचना कठिन है, आपको शायद हाइपरपैरमीटर के अलग-अलग गुच्छा का परीक्षण करना होगा और देखना होगा कि कुछ सत्यापन सेट पर कौन से लोग अच्छी तरह से काम करते हैं। यदि आपके पास कुछ कम्प्यूटेशनल संसाधन हैं, और हाइपरपरमेटर्स के एक अच्छे सेट पर स्वचालित रूप से सही मापदंडों पर पहुंचना चाहते हैं, तो उस सेटिंग में व्युत्पन्न-मुक्त अनुकूलन के लिए गौसियन प्रक्रियाओं का उपयोग करने के लिए एक हालिया विचार (जो मुझे बहुत पसंद है) है।
मुझे विस्तार से बताएं - हाइपरपरमेटर्स के सेट को खोजना (यानी, सत्यापन डेटा पर त्रुटि को कम करता है), एक अनुकूलन समस्या के रूप में देखा जा सकता है। दुर्भाग्य से, इस सेटिंग में हम उस फ़ंक्शन के ग्रेडिएंट को प्राप्त नहीं कर सकते हैं जिसे हम ऑप्टिमाइज़ करने का प्रयास करते हैं (जो कि हम आमतौर पर करना चाहते हैं, ग्रेडिएंट डिसेंट या कुछ और उन्नत तरीकों को करने के लिए)। इस सेटिंग में गॉज़ियन प्रक्रियाओं का उपयोग किया जा सकता है, हाइपरपरमेटर्स के सेट को खोजने के लिए, जिनके पास बड़े मौके हैं, उन बिंदुओं पर हमने जो सबसे अच्छा पाया है, उससे बेहतर प्रदर्शन करने के लिए। इसलिए आप हाइपरपैरामीटर के कुछ सेट के साथ एल्गोरिदम को पुनरावृति से चला सकते हैं, फिर गॉसियन प्रक्रिया के लिए पूछ सकते हैं जिसके लिए लोगों को अगले प्रयास करने के लिए सबसे अच्छा होगा, उन लोगों को आज़माएं, और इसी तरह।
विवरण के लिए, जैस्पर स्नोके, ह्यूगो लॉरेल और रयान पी एडम्स (भी या तो अपनी वेबसाइटों पर या Google के माध्यम से पाया जा सकता है) द्वारा "प्रैक्टिकल बायेसियन ऑप्टिमाइज़ेशन ऑफ मशीन लर्निंग एल्गोरिथम" की तलाश करें।