K-nearest neighbors atau knn adalah algoritma yang berfungsi
untuk melakukan klasifikasi suatu data berdasarkan data pembelajaran
(train data set), yang diambil dari k tetangga terdekatnya
(nearest neighbors). Dengan k merupakan banyaknya
tetangga terdekat.
Termasuk dalam supervised learning, dimana hasil query instance yang baru diklasifikasikan berdasarkan mayoritas kedekatan jarak dari kategori yang ada dalam KNN. Adapun tahapan langkah algoritma KNN sebagai berikut :
Menentukan parameter k (jumlah tetangga paling dekat).
Menghitung kuadrat jarak eucliden objek terhadap data training yang diberikan.
Mengurutkan hasil no 2 secara ascending (berurutan dari nilai tinggi ke rendah)
Mengumpulkan kategori Y (Klasifikasi nearest neighbor berdasarkan nilai k)
Dengan menggunakan kategori nearest neighbor yang paling mayoritas maka dapat dipredisikan kategori objek.
Berikut digunakan dataset yang terdapat dalam R untuk mengklasifikasikan serta mencari cross validasinya menggunakan KNN. Data yang digunakan adalah data Weight Versus Age of Chicks on Different Diets.
##
## 1 2 3 4
## 220 120 120 118
Dari data variabel Diet, diperoleh 4 klasifikasi yaitu 1
ada 220, 2 ada 120, 3 ada 120, dan 4 ada 118.
## [1] 2 2 2 2 4 4 1 3 1 1 3 1 3 1 4 1 3 1 3 2 4 1 3 4 4 2 4 4 1 4 2 4 2 1 3 1 1
## [38] 1 4 1 1 3 4 1 2 1 4 3 4 2 1 4 4 4 1 3 2 2 1 3 3 3 3 3 4 4 2 2 1 1 2 3 1 1
## [75] 2 4 2 3 1 2 2 2 1 2 1 1 1 4 3 1 3 2 4 1 1 3 1 1 2 1 1 1 4 1 4 1 1 4 4 3 3
## [112] 4 3 2 4
## Levels: 1 2 3 4
Untuk melihat cross validasinya, maka dapat di tampilkan dalam bentuk tabel hasil klasifikasi seperti berikut.
##
## ChickWeight.KNN 1 2 3 4
## 1 39 1 0 0
## 2 4 15 5 0
## 3 0 2 21 0
## 4 0 0 3 25
Berdasarkan output crosstab validation diatas diketahui
bahwa hasil diet level 1 benar sebesar 41 dan mengalami
kesalahan sebesar 2, diet level 2 benar sebesar 22 dan
mengalami kesalahan sebesar 5, diet level 3 benar sebesar
13 dan mengalami kesalahan sebesar 6, dan diet level 4
benar sebesar 22 dan mengalami kesalahan sebesar 4.
Berikut visualisasi dari KNN seperti pada output crosstab validation :
Berdasarkan output diatas dapat dilihat bahwa terdapat
cerminan scatterplot pada garis diagonal. Selain itu juga
terdapat korelasi linier pada variabel weight dan
time karena plot nya membentuk seperti garis dan data tidak
menyebar. Sedangkan pada variabel weight dengan
chick, dan time dengan chick
tidak terdapat korelasi linier karena terlihat penyebaran data (level
diet).