Apa itu k-nearest neighbors (k-NN)?
K-nearest neighbors adalah metode yang membuat prediksi dari k titik training yang paling dekat dengan query. Untuk klasifikasi, metode ini mengambil suara mayoritas dari label titik-titik itu. Untuk regresi, metode ini merata-ratakan nilai targetnya. Tidak ada tahap training selain menyimpan data, jadi semua pekerjaan terjadi saat prediksi.
k-NN adalah baseline yang umum, dan pencarian tetangga terdekat yang sama muncul di sistem rekomendasi ("pengguna yang mirip denganmu"), anomaly detection, imputation nilai yang hilang, dan vector search di balik retrieval-augmented generation, tempat embedding query dicocokkan dengan embedding dokumen terdekat. Hasilnya bergantung pada nilai k, metrik jarak, dan apakah skala antar-feature sebanding.
Ide utama
- k-NN membuat prediksi dari label k titik training yang paling dekat dengan query.
- k-NN menyimpan data training dan melakukan semua komputasinya saat prediksi.
- k kecil mengikuti detail lokal dan noise, sedangkan k besar menghasilkan garis batas yang lebih halus dan lebih biased.
- Metrik jarak dan feature scaling menentukan titik mana yang dihitung sebagai tetangga.
- Distance weighting memberi tetangga yang lebih dekat suara yang lebih kuat.
- Di dimensi tinggi, jarak-jarak saling mendekat, dan k-NN biasa kehilangan daya pembedanya.
Pertanyaan umum
Apakah k-NN termasuk supervised atau unsupervised?
Klasifikasi dan regresi k-NN bersifat supervised karena memakai titik training berlabel. k-NN sering tertukar dengan k-means, metode clustering yang unsupervised. Huruf k pada k-means adalah jumlah cluster, bukan jumlah tetangga.
Kenapa feature perlu di-scale untuk k-NN?
Jarak menjumlahkan selisih di semua feature, jadi feature yang nilainya ribuan akan menenggelamkan feature yang nilainya pecahan. Standardisasi tiap feature ke mean nol dan variance satu, atau penskalaan ulang ke [0, 1], memberi setiap feature pengaruh yang sebanding dalam menentukan siapa yang dihitung sebagai tetangga.
Bagaimana k-NN menangani dataset besar?
Pencarian brute-force membandingkan query dengan setiap titik training, yang biayanya O(n·d) per prediksi. Indeks berbasis tree seperti k-d tree dan ball tree mempercepatnya di dimensi rendah. Untuk jutaan vector berdimensi tinggi, indeks approximate nearest-neighbor seperti HNSW menukar sedikit akurasi dengan peningkatan kecepatan yang besar.
Apakah k-NN bisa dipakai untuk regresi?
Bisa. Regresi k-NN memprediksi rata-rata target dari k tetangga terdekat, dan bisa juga diberi weight berdasarkan jarak. Prediksinya konstan per bagian dan tidak bisa mengekstrapolasi di luar rentang target yang terlihat saat training.
Penjelasan terkait
- Norm dan Metrik Jarak · L1, L2, cosine similarity: cara mengukur kedekatan di ruang vector
- Curse of Dimensionality · Kenapa ruang berdimensi tinggi merusak intuisi dan algoritma
- Feature Scaling · Kenapa dan bagaimana menormalkan feature agar lebih cepat konvergen
- K-Means Clustering · Pengelompokan unsupervised berdasarkan jarak ke centroid
- Decision Tree dan Split · Recursive partitioning, Gini impurity, dan pruning
- Bias-Variance Tradeoff · Kenapa model mengalami underfitting atau overfitting, lewat dekomposisi dasarnya
Referensi
- Cover & Hart (1967), "Nearest Neighbor Pattern Classification", IEEE Transactions on Information Theory
- Beyer, Goldstein, Ramakrishnan & Shaft (1999), "When Is 'Nearest Neighbor' Meaningful?"
- James, Witten, Hastie & Tibshirani, "An Introduction to Statistical Learning", sections 2.2 and 3.5
Terakhir diperbarui