K-Nearest Neighbors (KNN) adalah algoritma klasifikasi yang tidak punya rumus atau parameter tetap — setiap kali ada titik baru yang mau diprediksi, algoritma menghitung ulang jarak ke seluruh titik data, mengambil K tetangga terdekat, lalu membiarkan mereka “memilih” kelasnya lewat voting mayoritas. Widget ini mensimulasikan itu pada 20 nasabah KUR warung yang diklasifikasikan lancar atau macet berdasarkan dua ciri: omset bulanan dan lama usaha.
Cara Pakai
Geser slider Omset (x) dan Lama usaha (y) untuk menentukan posisi nasabah baru (ditandai silang) pada diagram pencar. Geser slider K untuk mengubah jumlah tetangga terdekat yang dihitung suaranya — lingkaran putus-putus di sekitar titik baru menunjukkan jangkauan sampai tetangga ke-K. Panel di atas grafik menampilkan prediksi akhir dan jumlah suara masing-masing kelas; garis putus-putus tipis menghubungkan titik baru ke tiap tetangga yang ikut memilih.
Rumus Kunci
Jarak Euclidean ternormalisasi antara titik baru $p$ dan titik data $q$ (tiap ciri dibagi rentangnya $r$ dulu agar sebanding):
$$d(p,q) = \sqrt{\left(\frac{p_1-q_1}{r_1}\right)^2 + \left(\frac{p_2-q_2}{r_2}\right)^2}$$Voting mayoritas — kelas prediksi adalah kelas terbanyak di antara $K$ tetangga dengan jarak terkecil:
$$\hat{y} = \text{mode}\big(y_{(1)}, y_{(2)}, \dots, y_{(K)}\big)$$Contoh Angka
5 nasabah KUR warung (omset dalam juta Rp, lama usaha dalam tahun; rentang omset $r_1=20$, rentang lama usaha $r_2=12$, sesuai skala sumbu widget):
| Nasabah | Omset | Lama usaha | Kelas |
|---|---|---|---|
| A | 15 | 8 | Lancar |
| B | 17 | 9 | Lancar |
| C | 4 | 2 | Macet |
| D | 6 | 3 | Macet |
| E | 10 | 5 | Lancar |
Nasabah baru: omset = 11, lama usaha = 6. Hitung jarak ternormalisasi ke tiap nasabah:
- $d_E = \sqrt{\left(\frac{10-11}{20}\right)^2+\left(\frac{5-6}{12}\right)^2} = \sqrt{0{,}0025+0{,}0069} = 0{,}097$
- $d_A = \sqrt{\left(\frac{15-11}{20}\right)^2+\left(\frac{8-6}{12}\right)^2} = \sqrt{0{,}0400+0{,}0278} = 0{,}260$
- $d_D = \sqrt{\left(\frac{6-11}{20}\right)^2+\left(\frac{3-6}{12}\right)^2} = \sqrt{0{,}0625+0{,}0625} = 0{,}354$
- $d_B = \sqrt{\left(\frac{17-11}{20}\right)^2+\left(\frac{9-6}{12}\right)^2} = \sqrt{0{,}0900+0{,}0625} = 0{,}391$
- $d_C = \sqrt{\left(\frac{4-11}{20}\right)^2+\left(\frac{2-6}{12}\right)^2} = \sqrt{0{,}1225+0{,}1111} = 0{,}483$
Urutan terdekat: E (0,097) < A (0,260) < D (0,354) < B (0,391) < C (0,483).
Dengan K = 3, tiga tetangga terdekat adalah E (Lancar), A (Lancar), D (Macet) — suara Lancar = 2, Macet = 1. Karena Lancar mayoritas, prediksi akhir nasabah baru ini adalah LANCAR, meski salah satu dari tiga tetangga terdekatnya (D) berkelas macet.