Cross Validation of KNN using R

Ainun Salsabila
4 min readMay 31, 2019

--

Setelah kemarin kita belajar menentukan kelas untuk data baru dengan metode KNN, sekarang kita akan membuat cross validation untuk prediksi suatu kelas dengan metode KNN.

Cross validation atau yang biasa disebut estimasi rotasi adalah sebuah teknik validasi model untuk menilai bagaimana hasil statistik analisis akan menggeneralisasi kumpulan data independent. Teknik ini utamanya digunakan untuk melakukan prediksi model dan memperkirakan seberapa akurat sebuah model prediktif ketika dijalankan dalam praktiknya. Singkatnya, validas silang menggabungkan rata-rata ukuran kecocokan dengan melihat nilai rata-rata pada setiap putaran untuk mendapatkan model prediksi yang lebih akurat. Validasi silang ini membagi data menjadi dua, yaitu training dan testing.

Untuk cross validation penulis menggunakan data Chick Weight. Data tersebut adalah data hasil eksperimen diet terhadap pertumbuhan anak ayam. Datanya adalah sebagai berikut:

Data Chickweight

Terdapat empat variabel yaitu weight, time, chick, dan diet dengan klasifikasi 1 dan 2, yang jumlah datanya ada 250.

Berikut adalah langkah-langkah untuk cross validation:

  1. Menentukan replikasi klasifikasi diet
Script Replikasi Klasifikasi

“table(Chickweight$Diet)” untuk melihat data variabel Diet. Berdasrkan tabel data Diet, diperoleh empat klasifikasi yaitu 1 ada 220, 2 ada 120, 3 ada 120, dan 4 ada 118.

2. Membagi data testing dan training

Script Menentukan Data Training

Rumus di atas digunakan untuk menentukan jumlah data training. Hasilnya adalah sebagai berikut:

DataTraining

Jadi hasil tersebut adalah data training yang berjumlah 125.

3. Menentukan nilai data testing

Script Menentukan Data Testing

head untuk melihat nilai dari masing-masing variabel dan dim untuk melihat dimensi data testing. Hasilnya adalah sebagai berikut:

Data Testing

Untuk data testing adalah data yang ganjil dengan nilai setiap variabel seperti di atas, sedangkan jumlah barisnya ada 125 dan kolomnya 4.

4. Menentukan nilai data training

Script Menentukan Nilai Data Training

Untuk data training menggunakan data -tt (data selain data testing). Hasilnya adalah sebagai berikut:

Data Training

Untuk data training adalah data yang genap dengan nilai setiap variabel seperti di atas, sedangkan jumlah barisnya ada 453 dan kolomnya 4.

5. Menentukan Prediksi Kelas dengan KNN

Script Menentukan Prediksi Kelas

knn untuk menentukan urutan kelas, table untuk hasil prediksi klasifikasi. Di sini penulis menggunakan titik persekitarannya yaitu 4. Hasilnya adalah sebagai berikut:

Hasil Prediksi Kelas

Yang diberi kotak warna merah adalah hasil prediksi klasifikasi. Yang diprediksikan masuk kelas 1 dan benar ada 101, yang diprediksikan masuk kelas 1 tetapi salah ada 2, yang dipreiksikan masuk kelas 2 tetapi salah ada 9, dan yang diprediksi masuk kelas 2 dan benar ada 13.S

Untuk melihat hasilnya berdasarkan grafik digunakan perintah berikut:

Script Prediksi dengan Grafik

Hasilnya adalah seperti berikut:

Hasil Prediksi Kelas dengan Grafik

6. Cross Validation of KNN

Setelah diperoleh prediksi dengan KNN, maka penulis melakukan validasi untuk memastikan keakuratan prediksi jumlah masing-masing kelas. Perintah yang digunkana adalah sebagai berikut:

Script Cross Validation

Untuk cross validation dengan R dapat digunakan perintah knn.cv. Hasilnya adalah sebagai berikut:

Cross Validation Prediksi

Jadi setelah divalidasi diperoleh hasil prediksi kelas diet yang lebih akurat yaitu yang diprediksi masuk kelas 1 dan benar ada 212, yang diprediksikan masuk kelas 1 dan ternyata masuk kelas 2 ada 8, yang diprediksikan masuk kelas 2 dan ternyata masuk kelas 1 ada 3, yang diprediksikan masuk kelas 2 dan benar ada 106, yang diprediksikan masuk kelas 2 dan ternyata masuk kelas 3 ada 11, yang diprediksikan masuk kelas 3 dan ternyata masuk kelas 2 ada 10, yang diprediksikan masuk kelas 3 dan benar ada 92, yang diprediksikan masuk kelas 3 dan ternyata masuk kelas 4 ada 18, yang diprediksikan masuk kelas 4 dan ternyata masuk kelas 3 ada 5, dan yang diprediksikanmasuk kelas 4 dan benar ada 113.

--

--

Ainun Salsabila

Alumni Statistika Universitas Islam Indonesia Yogyakarta