K-Nearest Neighbors (KNN): Studi Kasus dan Penyelesaian nya
Studi Kasus:
Deskripsi Masalah: Sebuah toko online ingin memprediksi apakah seorang pelanggan akan membeli atau tidak membeli produk berdasarkan 2 fitur:
Usia: Umur pelanggan (tahun)
Penghasilan: Penghasilan bulanan (juta rupiah)
Tujuan: Diberikan data pelanggan baru dengan Usia = 33 dan Penghasilan = 7 juta, prediksi apakah pelanggan tersebut akan Beli atau Tidak Beli menggunakan algoritma KNN dengan K = 3
Penyelesaian:
Langkah 1: Siapkan Data Training
Berikut adalah data 10 pelanggan yang sudah diketahui label kelasnya:
No | Usia | Penghasilan (juta) | Label (Kelas) |
|---|---|---|---|
1 | 25 | 4 | Tidak Beli |
2 | 30 | 8 | Beli |
3 | 35 | 6 | Beli |
4 | 20 | 3 | Tidak Beli |
5 | 40 | 9 | Beli |
6 | 22 | 5 | Tidak Beli |
7 | 45 | 7 | Beli |
8 | 28 | 3 | Tidak Beli |
9 | 38 | 10 | Beli |
10 | 24 | 6 | Tidak Beli |
Data Baru yang Ingin Diklasifikasikan:
Usia | Penghasilan (juta) | Label? |
|---|---|---|
33 | 7 | ? (ingin diprediksi) |
Maka dari data diatas dapat di visualisasikan sebagai berikut:
Langkah 2: Hitung Jarak Euclidean
Hitung jarak dari data baru (33, 7) ke setiap data training menggunakan rumus:
Perhitungan Manual
Data 1 (25, 4):
Data 2 (30, 8):
Data 3 (35, 6):
Data 4 (20, 3):
Data 5 (40, 9):
Data 6 (22, 5):
Data 7 (45, 7):
Data 8 (28, 3):
Data 9 (38, 10):
Data 10 (24, 6):
Maka didapatkan jarak kesemua data latih terhadap data uji dapat divisualisasikan seperti berikut:
Langkah 3: Urutkan dari Terkecil ke Terbesar
Urutan | No Data | Jarak | Kelas |
|---|---|---|---|
1 | Data 3 | 2.236 | Beli ✅ |
2 | Data 2 | 3.162 | Beli ✅ |
3 | Data 9 | 5.831 | Beli ✅ |
4 | Data 8 | 6.403 | Tidak Beli |
5 | Data 5 | 7.280 | Beli |
6 | Data 1 | 8.544 | Tidak Beli |
7 | Data 10 | 9.055 | Tidak Beli |
8 | Data 6 | 11.180 | Tidak Beli |
9 | Data 7 | 12.000 | Beli |
10 | Data 4 | 13.601 | Tidak Beli |
Langkah 4: Ambil K=3 Tetangga Terdekat
Tetangga | No Data | Jarak | Kelas |
|---|---|---|---|
Tetangga 1 | Data 3 (35, 6) | 2.236 | Beli |
Tetangga 2 | Data 2 (30, 8) | 3.162 | Beli |
Tetangga 3 | Data 9 (38, 10) | 5.831 | Beli |
dari langkah 3 & 4 dapat divisualisasikan sebagai berikut:
Langkah 5: Lihat Kelas dari K=3 Tetangga
Tetangga | Kelas |
|---|---|
Tetangga 1 (Data 3) | Beli |
Tetangga 2 (Data 2) | Beli |
Tetangga 3 (Data 9) | Beli |
Langkah 6: Majority Voting
Kelas | Jumlah Suara |
|---|---|
Beli | 3 suara ✅ |
Tidak Beli | 0 suara |
Mayoritas = Beli (3 dari 3)
Kesimpulan
Pelanggan dengan Usia = 33 dan Penghasilan = 7 juta diprediksi akan MEMBELI produk.