Ketika melakukan kNN, Anda perlu mengingat satu hal, yaitu bahwa itu bukan algoritma yang diturunkan secara matematis, melainkan pengelompokan / regressor sederhana berdasarkan satu intuisi - fungsi yang mendasarinya tidak banyak berubah ketika argumen tidak berubah banyak. Atau dengan kata lain fungsi yang mendasarinya adalah hampir konstan. Dengan asumsi ini, Anda dapat memperkirakan nilai fungsi yang mendasari di setiap titik tertentu, dengan rata-rata (mungkin tertimbang) dari nilai-nilai titik k terdekat.
Dengan mengingat hal ini, Anda dapat menyadari bahwa tidak ada keharusan yang jelas tentang apa yang harus dilakukan ketika tidak ada pemenang yang jelas dalam pemilihan suara mayoritas. Anda bisa selalu menggunakan k aneh, atau menggunakan bobot injeksi.
Dalam kasus tetangga 3 sampai 5 berada pada jarak yang sama dari tempat tujuan, Anda dapat menggunakan hanya dua, atau menggunakan semua 5. Sekali lagi, perlu diingat kNN bukan beberapa algoritma yang berasal dari analisis matematika yang kompleks, tetapi hanya sebuah intuisi sederhana. Terserah Anda bagaimana Anda ingin menangani kasus-kasus khusus itu.
1| | x-y| |2, atau lainnya yang relatif besar ketika jarak kecil, dan relatif kecil ketika jarak antara titik besar (jadi mungkin kebalikan dari beberapa fungsi metrik kontinu).
Ada juga makalah yang bagus oleh Samory Kpotufe dan Abdeslam Boularias tahun ini tentang NIPS yang membahas masalah menemukan bobot yang tepat. Intuisi umumnya, adalah bahwa fungsi yang mendasarinya bervariasi secara berbeda dalam arah yang berbeda (yaitu, turunan parsial yang berbeda memiliki besaran yang berbeda), oleh karena itu akan bijaksana untuk dalam beberapa hal mengubah metrik / pembobotan menurut intuisi ini. Mereka mengklaim trik ini umumnya meningkatkan kinerja kNN dan regresi kernel, dan saya pikir mereka bahkan memiliki beberapa hasil teoretis untuk mendukung klaim ini (walaupun saya tidak yakin apa yang sebenarnya diklaim oleh hasil teoritis itu, saya tidak punya waktu untuk pergi melalui seluruh kertas belum). Makalah ini dapat diunduh secara gratis dari situs mereka, atau setelah Googling "Bobot Gradien membantu Regresi Nonparametrik".
Sekarang, Anda mungkin ingin tahu bagaimana Anda bisa menemukan tindakan k, metrik, pembobotan, yang tepat untuk dilakukan ketika ada undian dan sebagainya. Yang menyedihkan adalah, bahwa pada dasarnya sulit untuk sampai pada hyperparameters yang tepat setelah beberapa pemikiran mendalam, Anda mungkin perlu menguji tandan yang berbeda dari hyperparameters dan melihat mana yang bekerja dengan baik pada beberapa set validasi. Jika Anda memiliki beberapa sumber daya komputasi, dan ingin tiba pada parameter yang tepat secara otomatis pada set hyperparameter yang baik, ada ide baru-baru ini (yang sangat saya sukai) untuk menggunakan proses Gaussian untuk optimasi bebas derivatif dalam pengaturan itu.
Biarkan saya menguraikan - menemukan set hyperparameters (yaitu, yang meminimalkan kesalahan pada data validasi), dapat dilihat sebagai masalah optimasi. Sayangnya, dalam pengaturan ini kita tidak bisa mendapatkan gradien dari fungsi yang kita coba optimalkan (yang biasanya ingin kita lakukan, untuk melakukan gradient descent atau beberapa metode yang lebih maju). Proses Gaussian dapat digunakan dalam pengaturan ini, untuk menemukan set hiperparameter, yang memiliki peluang besar, untuk berkinerja lebih baik daripada yang terbaik yang kami temukan sampai saat ini. Oleh karena itu Anda dapat menjalankan algoritma dengan iteratif dengan beberapa set hiperparameter, lalu tanyakan proses Gaussian mana yang terbaik untuk dicoba berikutnya, coba yang itu, dan seterusnya.
Untuk detailnya, lihat kertas "Optimalisasi Bayesian Praktis dari Algoritma Pembelajaran Mesin" oleh Jasper Snoek, Hugo Larochelle dan Ryan P Adams (juga dapat ditemukan di situs web mereka atau melalui Google).