Algoritma k tetangga terdekat (bahasa Inggris: k-nearest neighbour algorithm, disingkat k-NN) adalah sebuah metode untuk melakukan klasifikasi terhadap objek berdasarkan data pemelajaran yang jaraknya paling dekat dengan objek tersebut.
Data pemelajaran digambarkan ke ruang berdimensi banyak dengan tiap-tiap dimensi mewakili tiap ciri/fitur dari data. Klasifikasi data baru dilakukan dengan mencari label k tetangga terdekat. Label terbanyak yang muncul menjadi label data baru. Bila k = 1, data baru dilabeli dengan label tetangga terdekat. Jarak yang biasa dipakai adalah jarak Euklides.
Penjelasan
Pada fase pemelajaran, algoritme ini hanya melakukan penyimpanan vektor-vektor fitur dan klasifikasi dari data pemelajaran. Pada fase klasifikasi, fitur-fitur yang sama dihitung untuk data uji (yang klasifikasinya tidak diketahui). Jarak dari vektor yang baru ini terhadap seluruh vektor data pemelajaran dihitung dan diambil sejumlah k buah yang paling dekat. Titik yang baru diberi label berdasarkan label terbanyak dari titik-titik tersebut.
Nilai k yang terbaik untuk algoritme ini tergantung pada data. Secara umum, nilai k yang tinggi akan mengurangi efek derau dalam klasifikasi, tetapi membuat batasan antarlabel menjadi lebih kabur. Nilai k yang bagus dapat dipilih dengan optimasi parameter, misalnya dengan menggunakan validasi silang.
Ketepatan algoritme ini sangat dipengaruhi oleh ada atau tidaknya fitur-fitur yang tidak relevan atau jika bobot fitur tersebut tidak setara dengan relevansinya terhadap klasifikasi. Riset terhadap algoritme ini sebagian besar membahas bagaimana memilih dan memberi bobot terhadap fitur agar performa klasifikasi menjadi lebih baik.
Algoritme ini memiliki konsistensi yang kuat. Ketika jumlah data mendekati tak hingga, algoritme ini menjamin laju galat yang tidak lebih dari dua kali laju galat Bayes (laju galat minimum untuk distribusi data tertentu).
Jenis-jenis
Terdapat beberapa jenis algoritme pencarian tetangga terdekat: