Contoh, dipunyai data yang didapat dari hasil sebuah kuesioner dan pengujian secara obyektif tentang kekuatan tarik sebuah benang.
X1 = (banyak serat)
X2 = (banyak uliran)
O = (opini)
X1 X2 O
7 6 Bagus
7 4 Bagus
3 4 Jelek
2 4 Jelek
3 6 ?
Kemudian pabrik benang memproduksi benang baru dengan banyak serat (X1) = 3 dan banyaknya uliran (X2) = 6. Tanpa melakukan survei lagi untuk mencari opini, bagaimana kita dapat menentukan klas dari benang tersebut (Bagus/Jelek) ?
Dengan algoritma K nearest neighbor bisa membantu menyelesaikan permasalahan tersebut.
K nearest neighbor bekerja sangat sederhana, algoritma ini bekerja dengan berdasarkan jarak minimum antara data baru yang ditanyakan dengan seluruh data pelatihan.
Kemudian dengan menentukan banyaknya K persekitaran data baru tersebut, dipilih klas terbanyak yang muncul dari persekitaran dan digunakan sebagai dasar untuk menetapkan kelas dari data baru tersebut.
Tipe data untuk K nearest neighbor dapat berupa sebarang skala pengukuran dari nominal, ordinal maupun skala kuantitatif (interval atau rasio).
Berikut adalah algoritma K nearest neighbor
Tentukan parameter K = jumlah dari persekitaran (nearest neighbors)
Hitung jarak antara data baru yang ditanyakan dengan seluruh sampel data
pelatihan
Urutkan seluruh jarak berdasarkan jarak minimum dan tetapkan persekitaran sesuai dengan nilai K.
Sesuaikan klasifikasi dari kategori Y dengan persekitaran yang telah ditetapkan
Gunakan klas dengan jumlah terbanyak sebagai dasar menentukan klas dari data baru yang ditanyakan.
Akan digunakan contoh sebelumnya dengan langkah-langkah diatas untuk mengklasifikasikan apakah produk benang baru mempunyai nilai opini yang bagus atau jelek.
Hitung semua jarak antara Benang baru dengan seluruh sampel pelatihan.
(X1, X2) Jarak Kuadrat dari (3, 6) Opini
(7, 6) (7 - 3)^2 + (6 - 6)^2 = 16 Bagus
(7, 4) (7 - 3)^2 + (4 - 6)^2 = 20 Bagus
(3, 4) (3 - 3)^2 + (4 - 6)^2 = 4 Jelek
(2, 4) (2 - 3)^2 + (4 - 6)^2 = 5 Jelek
Urutkan jarak yang didapat dan tentukan persekitaran berdasarkan K=3 (misal 3 persekitaran)
(X1, X2) Jarak Kuadrat dari (3, 6) Masuk?
(7, 6) (7 - 3)^2 + (6 - 6)^2 = 16 Ya
(7, 4) (7 - 3)^2 + (4 - 6)^2 = 20 Tidak
(3, 4) (3 - 3)^2 + (4 - 6)^2 = 4 Ya
(2, 4) (2 - 3)^2 + (4 - 6)^2 = 5 Ya
Gunakan jumlah terbanyak dari nilai Y untuk memprediksikan data baru. Untuk 3 persekitaran dari X1 = 3 dan X2 = 6 didapatkan nilai Bagus = 1 dan nilai Jelek = 2. Sehingga ditetapkan bahwa untuk X1 = 3 dan X2 = 6 maka benang tersebut termasuk Jelek.
library(class)
x1<-c(7,7,3,2)
x2<-c(6,4,4,4)
benang<-cbind(x1,x2)
benang
## x1 x2
## [1,] 7 6
## [2,] 7 4
## [3,] 3 4
## [4,] 2 4
opini<-factor(c("bagus","bagus","jelek","jelek"))
opini
## [1] bagus bagus jelek jelek
## Levels: bagus jelek
kemudian dimasukkan data untuk benang baru,
bbaru<-cbind(3,6)
hasil<-knn(benang,bbaru,opini,k=3)
hasil
## [1] jelek
## Levels: bagus jelek
Dari hasil diatas diperoleh bahwa untuk benang baru dengan x1 = 3 dan x2 = 6 menggunakan algoritma k nearest neighbor dengan k = 3 adalah “jelek”.
Salam
RB Fajriya Hakim
Department of Statistics UII
Universias Islam Indonesia
email : hakimf@uii.ac.id