Top Banner

of 59

Penerapan Algoritma Modified K-nearest Neighbor (Mknn)

Mar 01, 2016

Download

Documents

penerapan algorita midified k nearser neighbourhood
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Penerapan Algoritma Modified K nearest Neighbor Mknn Untuk Mengklasifikasikan Letak Protein Pa2

PENERAPAN ALGORITMA MODIFIED K-NEAREST NEIGHBOR (MKNN) UNTUK MENGKLASIFIKASIKAN LETAK PROTEIN PADA BAKTERI E.COLIKelompok :Rosangelina / 7410040004Prasetia Adi P / 7410040022Dimas Fanny H. P. / 7410040023

Latar BelakangBakteri E.Coli adalah salah satu jenis spesies utama bakteri gram negatif atau jenis bakteri patogen. Bakteria Escherichia Coli, merupakan bakteri yang pada umumnya hidup di dalam usus besar manusia, kebanyakan dari bakteri E.Coli tidak berbahaya bahkan keberadaannya bisa dibilang menguntungkan.Fungsi potensial dari bakteri tersebut sangat dipengaruhi oleh penyebaran protein pada selnya. Sehingga diperlukan penelitian pada E.Coli guna mempermudah para ahli microbiology dalam mengklasifikasikan kelas-kelasnya berdasarkan letak proteinnya.Untuk mempermudah tahapan pengklasifikasian bakteri E-Coli berdasarkan letak proteinnya maka digunakan metode data mining.

TujuanPenerapan algoritma Modified K-Nearest Neighbor (MKNN) untuk mengklasifikasikan letak protein pada bakteri E.ColiPengujian akurasi algoritma Modified K-Nearest Neighbor (MKNN) terhadap banyak data tes dan nilai tetangga.untuk mengklasifikasikan bakteri E.Coli berdasarkan letak protein di tubuhnya agar dapat digolongkan bakteri E. Coli yang merugikan dan tidak.

ManfaatDengan mengetahui letak protein pada bakteri E.Coli, diharapkan dapat mengurangi penyebab bakteri patogen.Dapat mengetahui tingkat akurasi pada algoritma pengujian akurasi algoritma Modified K-Nearest Neighbor (MKNN) terhadap banyak data tes dan nilai tetangga untuk pengklasifikasian letak protein pada bakteri E.Coli.

Metode Penyelesaian MasalahStudi literatur. Mempelajari dan mengkaji beberapa literatur (jurnal, buku, dan artikel dari website) mengenai data mining, algoritma pengujian akurasi algoritma Modified K-Nearest Neighbor (MKNN).Perumusan masalah dan analisa kebutuhanMengkaji permasalahan sebagai hasil dari studi pustaka dan menganalisis yang dibutuhkan.Perancangan dan implementasi sistem.Mengimplementasikan algoritma MKNN dengan merancang dan membangun sebuah perangkat lunak untuk mengklasifikasikan data protein pada E.Coli.Uji coba dan analisis hasil implementasi.Menganalisa akurasi hasil pengklasifikasian data dengan menggunakan model klasifikasi.

Definisi K-Nearest Neighbor (KNN)Algoritma K-Nearest Neighbor (KNN) adalah sebuah metode untuk melakukan klasifikasi terhadap objek berdasarkan data pembelajaran yang jaraknya paling dekat dengan objek tersebut.Data pembelajaran diproyeksikan ke ruang berdimensi banyak, dimana masing-masing dimensi merepresentasikan fitur dari data.

Proses K-Nearest Neighbor (KNN)Menurut Agusta, 2007 bahwa prinsip kerja K-Nearest Neighbor (KNN) adalah mencari jerak terdekat antara data yang dievaluasi dengan k tetangga terdekatnya dalam data pelatihan. Persamaan perhitungan untuk mencari euclidean dengan d adalah jarak dan p adalah dimensi data dengan:dimana :x1: sample data ujix2 : data ujid : jarakp : dimensi data

Definisi Modified K-Nearest Neighbor (MKNN)Modified K-Nearest Neighbor (MKNN) adalah menempatkan label kelas data sesuai dengan k divalidasi poin data yang sudah ditetapkan dengan perhitungan K-Nearest Neighbor (KNN) tertimbang.(Hamid Parvin, 2008)

Proses Modified K-Nearest Neighbor (MKNN)Dalam algoritma MKNN, setiap data pada data training harus divalidasi terlebih dahulu pada awalnya. Validitas setiap data tergantung pada setiap tetangganya. Proses validasi dilakukan untuk semua data pada data training. Setelah dihitung validitas tiap data maka nilai validitas tersebut digunakan sebagai informasi lebih mengenai data tersebut.Untuk menghitung validitas dari data pada data training, tetangga terdekatnya perlu dipertimbangkan. Di antara tetangga terdekat dengan data, validitas digunakan untuk menghitung jumlah titik dengan label yang sama untuk data tersebut. Persamaan yang digunakan untuk menghitung validitas dari setiap titik pada data training adalah seperti pada persamaan :dimana :H : jumlah titik terdekatLBL (x) : kelas xN i (X) : label kelas titik terdekat xFungsi S digunakan untuk menghitung kesamaan antara titik x dan data ke-i dari tetangga terdekat. Yang dituliskan dalam persamaan.Keterangan:a = kelas a pada data training.b = kelas lain selain a pada data training.

Perhitungan akurasiPerhitungan akurasi dilakukan untuk mengetahui tingkat akurasi dari hasil klasifikasi, dengan cara menghitung jumlah record uji yang kelasnya diprediksi secara tepat . Dapat dilihat pada persamaan dibawah ini.

Jumlah predikasi benar adalah jumlah record data uji yang diprediksi kelasnya menggunakan metode klasifikasi dan hasilnya sama dengan kelas sebenarnya. Sedangkan jumlah total prediksi adalah jumlah keseluruhan record yang diprediksi kelasnya (seluruh data uji). Metode klasifikasi berusaha untuk mencari model yang memiliki tingkat akurasi yang tinggi ketika model tersebut diterapkan pada data uji.( Sarkar dan Leong, 2000)

Flowchart SistemLangkah-langkah dalam proses ini antara lain yaitu :Melakukan input data bakteri.Melakukan proses klasifikasi untuk menentukan letak protein pada bakteri E.Coli.Output data bakteri setelah dilakukan klasifikasi.

Gambar flowchart

Proses Klasifikasi MKNNLangkah-langkah dalam proses ini antara lain yaitu :Memberikan inputan berupa dataset bakteri.Melakukan proses perhitungan validitas dari tiap data pada dataset bakteri.Melakukan proses perhitungan jarak euclidean pada tiap data pada dataset bakteri. Melakukan proses perhitungan weight voting dari data set bakteri dan mengambil nilai weight voting yang terbesar berdasarkan jumlah nilai tetangga yang diinputkan.Memberikan keluaran data berupa kelas yang menunjukkan letak protein pada tubuh bakteri E.Coli

Menghitung ValiditasLangkah-langkah dalam proses ini antara lain yaitu :Memberikan inputan data bakteri.Menentukan nilai k-nya.Melakukan perhitungan validitas sesuai persamaan sebelumnyaMemberikan keluaran berupa hasil validitas.

14

Menghitung EuclideanLangkah-langkah dalam proses ini antara lain yaitu :Memberikan inputan data bakteri.Melakukan perhitungan euclidean sesuai persamaan sebelumnyaMemberikan keluaran berupa nilai euclidean.

Menghitung Weight VotingLangkah-langkah dalam proses ini antara lain yaitu :Memasukkan nilai euclidean dan nilai validitas-nya.Melakukan perhitungan weight voting-nya.Memberikan keluaran berupa nilai weight voting-nya.

Contoh Perhitungan ManualDari algoritma Modified K-Nearest Neighbor (MKNN) ini langkah-langkah dalam perhitungannya antara lain yaitu :Menentukan nilai k atau tetangganya.Menghitung validitas data training.Menghitung jarak euclideanMenghitung pembobotan (weight voting)Menentukan kelas dari data testing

Data Testing dan Data Traning pada data letak protein pada bakteri E.Coli.

Nama0McgGvhLipChgAacAlm1Alm2KelasKdsa_ecoli0.510.370.480.500.350.360.45?Nird_ecoli0.440.420.480.500.420.250.20CpPlfb_ecoli0.290.410.480.500.480.180.30CpUbic_ecoli0.300.370.480.500.570.780.80ImCyda_ecoli0.550.470.480.500.570.780.80ImPnta_ecoli0.330.370.480.500.460.650.69im

Menentukan nilai k atau tetangganyaPada perhitungan ini ditentukan nilai dari k yaitu 3.

Menghitung validitas data trainingSetelah ditentukan nilai k-nya maka dihitung nilai validitas dari data training dengan persamaan sebelumnya

Tabel Perhitungan Validitas

K=1K=2K=3Sum S(a,b)validitas11020.666710010.333300110.333310010.333310010.3333

Menghitung jarak euclideanPada perhitungan mencari nilai euclidean dengan memasukkan data pada persamaan sebelumnya

Tabel hasil perhitunganMelakukan perhitungan yang sama untuk semua data training. Hasil perhitungan euclidean ini seperti yang ditunjukkan tabel Perhitungan EuclideanSum EuclidianEuclidian0.08690.2947880591.2071.0986355170.03710.19261361030.55490.7449161030.37480.612209115

Menghitung pembobotan (weight voting)Pada tahapan menghitung nilai weight voting yang didapat dari memasukkan nilai validitas dan nilai euclidean pada persamaan berikut :

Tabel hasil perhitunganMelakukan perhitungan yang sama untuk semua data training. Hasil perhitungan weight voting ini seperti yang ditunjukkan tabel Perhitungan Weight VotingWeight0.8387980.2085110.4812690.2677560.299704

Menentukan kelas dari data testingSetelah didapatkan nilai weight voting dari semua data training maka dilakukan pencarian nilai weight voting yang terbesar sebanyak nilai k yang telah ditentukan.Maka didapatkan nilai dengan 3 weight voting terbesar yaitu 0.838798 dengan kelasnya CP, 0.481269 dengan kelasnya CP, dan 0.299704 dengan kelasnya IM. Dari data testing yang telah ditentukan maka ke kelas yang didapat pada data testing adalah CP karena kelas yang sering muncul adalah CP.

Pengkodingan input file dataUntuk melakukan input data adalah dengan cara merandom data bakteri E.Coli dengan cara random unik yaitu dengan mengurutkan tiap kelas bakteri agar dapat mewakili tiap kelasnya saat dilakukan klasifikasi. Kemudian setelah data selesai diurutkan dimasukkan ke table bakteri.

kodingvar acak = new Random(); var dialog = new OpenFileDialog(); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { daftarBakteri = Bakteri.BacaFileBakteri(dialog.FileName).OrderBy(x => acak.Next()) .ToArray(); urutkanKelas(daftarBakteri); urutkanKelasTerbalik(daftarBakteri); } dataGridView1.DataSource = daftarBakteri.CopyToDataTable(); nUDJumlahLatih.Maximum = daftarBakteri.Length - 1; nUDKAwal.Maximum = daftarBakteri.Length - 1;

Membaca dan memasukkan data pada tablePada tahapan membaca file berikut ini data dimasukkan ke variable dipisahkan berdasarkan spasi { }. Sedangkan tanda {.} adalah koma pada attribut numeriknya. Fungsi variable tipe kelas berfungsi untuk menyimpan attribut kelas pada data bakteri

koding public static IEnumerable BacaFileBakteri(string lokasiFile) { var format = new NumberFormatInfo(); format.NumberDecimalSeparator = "."; foreach (var baris in File.ReadLines(lokasiFile)) { var pisahan = baris.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); var nama = pisahan[0]; var mcg = double.Parse(pisahan[1], format); var gvh = double.Parse(pisahan[2], format); var lip = double.Parse(pisahan[3], format); var chg = double.Parse(pisahan[4], format); var aac = double.Parse(pisahan[5], format); var alm1 = double.Parse(pisahan[6], format); var alm2 = double.Parse(pisahan[7], format); Kelas kelas; if (pisahan[8] == "cp") { kelas = Kelas.cp; } else if (pisahan[8] == "im") { kelas = Kelas.im; } else if (pisahan[8] == "pp") { kelas = Kelas.pp; } else if (pisahan[8] == "imU") { kelas = Kelas.imU; }

Koding (contd)else if (pisahan[8] == "om") { kelas = Kelas.om; } else if (pisahan[8] == "omL") { kelas = Kelas.omL; } else if (pisahan[8] == "imL") { kelas = Kelas.imL; } else { kelas = Kelas.imS; } yield return new Bakteri(nama, mcg, gvh, lip, chg, aac, alm1, alm2, kelas); } yield break;}

Mengurutkan kelas pada data bakteri dari atasPada tahapan mengurutkan kelas pada data bakteri dari atas adalah mengurutkan atribut kelasnya dari data yang paling atas secara unik, yaitu dengan cara menukar tiap kelas agar mewakili atrtribut datanya. Proses mengurutkan datanya diseleksi dari kelas bakterinya, yaitu dari 8 kelasnya dibandingkan dengan 7 kelas lain yang berbeda. Ketika kelas bawah yang dibandingkan sama dengan index maka dilakukan penukaran kelasnya.

koding private static void urutkanKelas(Bakteri[] dB) { for (int index = 1; index x.Kelas).Contains(dB[index].Kelas)) { var temp = dB[tukar]; dB[tukar] = dB[index]; dB[index] = temp; tukar++; } } }

Mengurutkan kelas pada data bakteri dari bawahprivate static void urutkanKelasTerbalik(Bakteri[] dB) { for (int index = 1; index x.Kelas).Contains(dB[dB.Count() - 1 - index].Kelas)) { var temp = dB[dB.Count() - 1 - tukar]; dB[dB.Count() - 1 - tukar] = dB[dB.Count() - 1 - index]; dB[dB.Count() - 1 - index] = temp; tukar++; } } }

Proses Klasifikasi MKNNPada proses klasifikasi MKNN sendiri melalui beberapa proses tahapan yang diantaranya hitung euclidean, hitung validitas, kemudian hitung weight voting yang akan digunakan untuk menentukan kelas pada data testing berdasarkan ketentuan pembobotan yang telah didapatkan.Tahapan proses klasifikasi sendiri adalah dengan membagi data latih dan data uji adalah dengan membagi jumlah data yang akan dilakukan klasifikasi data sesuai record yang akan diinputkan.

koding { var acak = new Random(); var daftarTraining = daftarBakteri.Take((int)nUDJumlahLatih.Value).Select(x =>x.Duplikat()).ToArray(); var daftarTesting = daftarBakteri.Skip((int)nUDJumlahLatih.Value).Select(x => x.Duplikat()).ToArray(); urutkanKelas(daftarTesting); dgDataUji.DataSource = daftarTesting.CopyToDataTable(); var kelasAsli = daftarTesting.Select(x => x.Kelas).ToArray(); var daftarHasilTesting = Enumerable.Range(0, daftarTesting.Count()).Select(x => new List()).ToArray(); //new List[daftarTesting.Count()]; var daftarAkurasi = Enumerable.Range(0, daftarTesting.Count()).Select(x => new List()).ToArray(); //untuk menampilkan perulangan inputan sesuai jumlah k nya for (int index = (int)nUDKAwal.Value; index