Melakukan Klasifikasi Menggunakan Support Vector Machine SVM
Hai, Assalamulaikum !
Kita belajar SVM yuk, SVM itu apa sih?
SVM atau support vector machine merupakan metode untuk melakukan klasifikasi data. Salah satu tugas dan keahlian serta kelebihan Support Vector Machine adalah untuk melakukan prediksi. Mampu mengklasifikasikan dan mengregresi dalam suatu kasus adalah kemampuan yang dimiliki oleh SVM. Nah kali ini kita akan melakukan klasifikasi prediksi menggunakan SVM. Klasifikasi sendiri adalah sebuah metode untuk mengelompokkan data secara sistem menurut aturan dan kaidah yang telah ditetapkan. Klasifikasi juga dapat diartikan pengelompokkan data atau objek baru berdasarkan variabel yang diamati dengan tujuan untuk memprediksi suatu objek yang baru yang masih belum diketahui kelas atau kategoriknya (Sadli, 2018).
Nah yuk kita coba menggunakan SVM, untuk data yang akan digunakan bisa di download disini ya atau disini๐
1. Install packages yang dibutuhkan, lalu panggil datanya.
library(e1071)
library(devtools)
library(caret)
data=read.delim(“clipboard”)
data
View(data)
Data yang digunakan adalah data sekunder dari pasien Penyakit Kanker Payudara UCI Wicoxsin University. Data tersebut merupakan data rata-rata dari karakteristik yang diambil sampelnya dari tubuh pasien yang sedang di diagnosa. Terdapat 32 variabel dengan 570 data. Variabel diagnosis sebagai variabel dependen, dan sisanya adalah variabel independen.
2. Memisahkan data untuk data training dan data testing.
#Traning sample with n observation
#Training data
n=round(nrow(data)*0.75)
n
#training model
set.seed(12345)
sample=sample(seq_len(nrow(data)),size=n)
train=data[sample,]
test=data[-sample,]
Data akan dibagi 2, data training sebanyak 75% sisanya adalah untuk data testing. Hasilnya ada 427 data yang akan digunakan sebagai data training. Kemudian kita buat vektor train dan test. Oiya untuk set.seed bebas berapa aja ๐
3. Setelah itu kita lakukan analisis SVM pada data training.
#Suport vector machine
data.svm data.svm
Hasilnya didapatkan tipe SVM C-classification atau bisa dikatakana sebuah jenis metode SVM. Kemudian untuk SVM-Karnel yang digunakan berjenis radial. Cost bernilai 1 artinya nilai parameter dari karnel sebesar 1 (default=1). Selanjutnya number of support vektor sebesar 100 yaitu artinya banyak support vector sebesar 100.
4. Kemudian melakukan pengujian model SVM menggunakan data training.
#pengujian model SVM data training
pred1 pred1
#melihat tingkat akurasi menggunakan data training
confusionMatrix(pred1,train$diagnosis)
Hasilnya pada huruf B dan M menunjukkan kategori dari variabel dependen yaitu adalah diagnosis Begin dan Maligant. Sedangkan untuk angka diatas merupakan urutan dari data yang digunakan. Level menunjukkan kategori dalam variabel dependen. Kemudian dilanjutkan melihat tingkat akurasi menggunakan data training.
Berdasarkan hasilnya, Berdasarkan hasilnya, terdapat hasil prediksi benar sebanyak 270 untuk diagnosis Begin dengan kesalahan klasifikasi sebanyak 6. Kemudian untuk diagnosis Maligant terdapat hasil prediksi benar sebanyak 149 dengan kesalahan klasifikasi sebanyak 2.
Accucary adalah untuk melihat seberapa baik model mengkorelasikan/ menghubungkan hasil dengan atribut dalam data yang digunakan. Maka hasilnya didapatkan bahwa tingkat akurasi dari hasil prediksi sebesar 0.9813 atau sebesar 98%. Kemudian didapatkan p-value maka dapat dikatakan model sudah baik. Lalu untuk sensitivity digunakan untuk mengukur proporsi jumlah observasi positifif yang tepat prediksi, didapat nilainya sebesar 0.9926. Balanced accuracy digunakan untuk mengukur akurasi proporsi jumlah observasi kelas positif untuk prediksi maka didapat nilainya sebesar 0.9977 atau sebesar 97.7%.
5. Selanjutnya dilakukan pengujian model SVM menggunakan data testing, untuk melihat hasil prediksi dan tingkat akurasi.
#pengujian model SVM data testing
pred2 pred2#melihat tingkat akurasi menggunakan data testing
confusionMatrix(pred2,test$diagnosis)
Hasil gambar diatas merupakan hasil pengujian model SVM menggunakan data testing. B dan M menunjukkan kategori dari variabel dependen/ levels yaitu Begin dan Maligant. Lalu angkanya merupakan urutan dari data yang digunakan. Selanjutnya melakukan pengecekkan tingkat akurasi data testing.
Berdasarkan hasilnya, terdapat hasil prediksi benar sebanyak 81 untuk diagnosis Begin dengan kesalahan klasifikasi sebanyak 1. Kemudian untuk diagnosis Maligant terdapat hasil prediksi benar sebanyak 56 dengan kesalahan klasifikasi sebanyak 4.
Kemudian Accucary adalah untuk melihat seberapa baik model mengkorelasikan/ menghubungkan hasil dengan atribut dalam data yang digunakan. Maka hasilnya didapatkan bahwa tingkat akurasi dari hasil prediksi sebesar 0.9648 atau sebesar 96%. Kemudian didapatkan p-value maka dapat dikatakan model sudah baik. Lalu untuk sensitivity digunakan untuk mengukur proporsi jumlah observasi positifif yang tepat prediksi, didapat nilainya sebesar 0.9529. Balanced accuracy digunakan untuk mengukur akurasi proporsi jumlah observasi kelas positif untuk prediksi maka didapat nilainya sebesar 0.9677 atau sebesar 96.7%.
Maka kesimpulan yang didapatkan adalah:
1. Berdasarkan hasil studi kasus Pasien Penyakit Kanker Payudara UCI Wicoxsin Universitiy dengan menggunakan prediksi data training didapatkan bahwa tingkat akurasi dari hasil prediksi sebesar 0.9813 atau sebesar 98%. Kemudian didapatkan p-value maka dapat dikatakan model sudah baik. Lalu untuk sensitivity digunakan untuk mengukur proporsi jumlah observasi positifif yang tepat prediksi, didapat nilainya sebesar 0.9926. Balanced accuracy digunakan untuk mengukur akurasi proporsi jumlah observasi kelas positif untuk prediksi maka didapat nilainya sebesar 0.9977 atau sebesar 97.7%. Kemudian dilakukan pengujian model SVM menggunakan data testing.
2. Sedangkan untuk data training, bahwa tingkat akurasi dari hasil prediksi sebesar 0.9648 atau sebesar 96%. Kemudian didapatkan p-value maka dapat dikatakan model sudah baik. Lalu untuk sensitivity digunakan untuk mengukur proporsi jumlah observasi positifif yang tepat prediksi, didapat nilainya sebesar 0.9529. Balanced accuracy digunakan untuk mengukur akurasi proporsi jumlah observasi kelas positif untuk prediksi maka didapat nilainya sebesar 0.9677 atau sebesar 96.7%.
Maka dapat dikatakan model sudah sangat baik dengan nilai akurasi lebih dari 90%.
Sekian, Semoga Bermanfaat ๐
Referensi:
Utari, D. T. (2020). Modul Praktikum Komputasi Statistika. Yogyakarta: Statistika UII
Cahyo, L. B. (2018). Implementasi Metode Support Vector Machine untuk Melakukan Klasifikasi pada Data Bioinformatika. Yogyakarta: Universitas Islam Indonesia.
Sadli, M. d. (2018). Penerapan Model K-Nearest Neighbor dalam Klasifikasi Kebutuhan Daya Listrik untuk Masing-Maisng Daerah di Kota Lhokseumawe. Jurnal ECOTIPE , 13.