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):

NasabahOmsetLama usahaKelas
A158Lancar
B179Lancar
C42Macet
D63Macet
E105Lancar

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.