1. Pengertian KNN

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 :

  1. Menentukan parameter k (jumlah tetangga paling dekat).

  2. Menghitung kuadrat jarak eucliden objek terhadap data training yang diberikan.

  3. Mengurutkan hasil no 2 secara ascending (berurutan dari nilai tinggi ke rendah)

  4. Mengumpulkan kategori Y (Klasifikasi nearest neighbor berdasarkan nilai k)

  5. Dengan menggunakan kategori nearest neighbor yang paling mayoritas maka dapat dipredisikan kategori objek.

2. Dataset

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.

library(class)
ChickWeight <-ChickWeight
ChickWeight

2.1 Replikasi Klasifikasi Diet

table(ChickWeight$Diet)
## 
##   1   2   3   4 
## 220 120 120 118
ChickWeight.Kelas<-c(rep("1",220),rep("2",120), rep("3", 120), rep("4", 118))

Dari data variabel Diet, diperoleh 4 klasifikasi yaitu 1 ada 220, 2 ada 120, 3 ada 120, dan 4 ada 118.


2.2 Membagi Data Testing dan Training

Dataset dibagi menjadi 20% data testing dan 80% data training.

indexes = sample(1:nrow(ChickWeight), size = 0.2*nrow(ChickWeight))
#Test
test = ChickWeight[indexes,]
test
#Train
train = ChickWeight[-indexes,]
train

3. Penerapan KNN

3.1 Prediksi Kelas

ChickWeight.KNN<-knn(train[,-4],test[,-4],train[,4],k=4)
ChickWeight.KNN
##   [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

3.2 Cross Validation

Untuk melihat cross validasinya, maka dapat di tampilkan dalam bentuk tabel hasil klasifikasi seperti berikut.

(table(ChickWeight.KNN,test[,4]))
##                
## 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.


3.3 Visualisasi KNN

Berikut visualisasi dari KNN seperti pada output crosstab validation :

pairs(test[,1:3],pch=as.character(test[,4]),col=c(1,4)[(test$Diet!=ChickWeight.KNN)+1])

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