Apa kabar sobat Exsight? Masih dalam segmen artikel tutorial. Nah untuk tutorial ini, kita akan membahas terkait bagaimana cara kerja algoritma SVM (Support Vector Machine) menggunakan software R. Kalau sobat Exsight masih bingung terkait apa itu SVM, bisa dilihat pada artikel sebelumnya dengan judul Algoritma SVM (Support Vector Machine) #1. Yuk yuk simak tutorial SVM dengan seksama yaa!
Studi Kasus
Studi kasus yang akan kita gunakan dalam hal ini menggunakan data sampel terkait Lung Cancer (Kanker Paru-Paru) yang didapatkan dari situs kaggle.com, dimana data di-publish oleh Ms. Nancy Al Aswad.
* Tidak terdapat missing value pada data.
* Data terdiri atas 309 observasi.
Data terdiri atas 16 variabel yaitu:
Variabel | Keterangan Variabel | Skala Data |
Gender | M = Male F = Female | Kategorik |
Age | Numerik | |
Smoking | 1 = No 2 = Yes | Kategorik |
Yellow Finger | 1 = No 2 = Yes | Kategorik |
Anxiety | 1 = No 2 = Yes | Kategorik |
Peer Pressure | 1 = No 2 = Yes | Kategorik |
Chronic Disease | 1 = No 2 = Yes | Kategorik |
Fatigue | 1 = No 2 = Yes | Kategorik |
Allergy | 1 = No 2 = Yes | Kategorik |
Wheezing | 1 = No 2 = Yes | Kategorik |
Alcohol | 1 = No 2 = Yes | Kategorik |
Coughing | 1 = No 2 = Yes | Kategorik |
Shortness of Breath | 1 = No 2 = Yes | Kategorik |
Swallowing Difficulty | 1 = No 2 = Yes | Kategorik |
Chest Pain | 1 = No 2 = Yes | Kategorik |
Lung Cancer | 1 = No 2 = Yes | Kategorik |
Pada Tabel 1. variabel Lung Cancer berperan sebagai variabel Dependen, sedangkan lainnya merupakan variabel Independen.
Tahapan R Studio SVM
Load Library
Sebelum melakukan running syntax di software R terlebih dahulu melakukan load library R. Adapun library yang diperlukan untuk analisis jalur yaitu e1071 dan caret. Adapun syntax R yang digunakan adalah sebagai berikut.
library(e1071)
library(caret)
Load Data
Kemudian melakukan input data ke R. Data yang diinput diberi nama sebagai data. Perlu diperhatikan untuk jenis file data yang diinput ke R, untuk tutorial kali ini, jenis file data yang digunakan yaitu dalam format CSV. Syntax yang digunakan untuk load data adalah sebagai berikut.
data<-read.csv(file.choose(),header=TRUE,sep=",")
Pre-Processing
Data yang telah kita load selanjutnya kita split menjadi data training testing 80/20. Artinya dari data yang ada, 80% dari data kita jadikan sebagai data training dan 20% data kita jadikan data testing.
##Membuat data training dan data testing (training 80, testing 20)
n_train <- round(nrow(data) * 0.8)
idx_train <- sample(seq_len(n_train))
data_train <- data[idx_train, ]
data_test <- data[-idx_train, ]
#Menyimpan data hasil training dan testing dalam format csv
write.csv(data_train,"training.csv")
write.csv(data_test,"testing.csv")
#Membuka file hasil training dan testing
data_train=read.csv(file.choose(),header=TRUE,sep=",")
data_test=read.csv(file.choose(),header=TRUE,sep=",")
Selanjutnya mengacu pada Tabel 1. variabel dengan skala data “kategorik” baik pada data training dan data testing, kita pastikan tipe data menjadi “factor” di R.
#Mengubah tipe data
##Data Train
data_train$GENDER=as.factor(data_train$GENDER)
data_train$SMOKING=as.factor(data_train$SMOKING)
data_train$YELLOW_FINGERS=as.factor(data_train$YELLOW_FINGERS)
data_train$ANXIETY=as.factor(data_train$ANXIETY)
data_train$PEER_PRESSURE=as.factor(data_train$PEER_PRESSURE)
data_train$CHRONIC.DISEASE=as.factor(data_train$CHRONIC.DISEASE)
data_train$FATIGUE=as.factor(data_train$FATIGUE)
data_train$ALLERGY=as.factor(data_train$FATIGUE)
data_train$WHEEZING=as.factor(data_train$WHEEZING)
data_train$ALCOHOL.CONSUMING=as.factor(data_train$ALCOHOL.CONSUMING)
data_train$COUGHING=as.factor(data_train$COUGHING)
data_train$SHORTNESS.OF.BREATH=as.factor(data_train$SHORTNESS.OF.BREATH)
data_train$SWALLOWING.DIFFICULTY=as.factor(data_train$SWALLOWING.DIFFICULTY)
data_train$CHEST.PAIN=as.factor(data_train$CHEST.PAIN)
data_train$LUNG_CANCER=as.factor(data_train$LUNG_CANCER)
##Data Test
data_test$GENDER=as.factor(data_test$GENDER)
data_test$SMOKING=as.factor(data_test$SMOKING)
data_test$YELLOW_FINGERS=as.factor(data_test$YELLOW_FINGERS)
data_test$ANXIETY=as.factor(data_test$ANXIETY)
data_test$PEER_PRESSURE=as.factor(data_test$PEER_PRESSURE)
data_test$CHRONIC.DISEASE=as.factor(data_test$CHRONIC.DISEASE)
data_test$FATIGUE=as.factor(data_test$FATIGUE)
data_test$ALLERGY=as.factor(data_test$FATIGUE)
data_test$WHEEZING=as.factor(data_test$WHEEZING)
data_test$ALCOHOL.CONSUMING=as.factor(data_test$ALCOHOL.CONSUMING)
data_test$COUGHING=as.factor(data_test$COUGHING)
data_test$SHORTNESS.OF.BREATH=as.factor(data_test$SHORTNESS.OF.BREATH)
data_test$SWALLOWING.DIFFICULTY=as.factor(data_test$SWALLOWING.DIFFICULTY)
data_test$CHEST.PAIN=as.factor(data_test$CHEST.PAIN)
data_test$LUNG_CANCER=as.factor(data_test$LUNG_CANCER)
Berikutnya, kita perhatikan kembali data training dan testing, kita hilangkan kolom yang tidak perlu, dalam hal ini kolom pertama (x) yang hanya menunjukkan urutan observasi.
#Removing Kolom "Nomor urut di awal data train & test"
data_train=data_train[,-1]
data_test=data_test[,-1]
Pemodelan
Setelah melakukan Pre-Processing, tahapan berikutnya melakukan pemodelan SVM. Pada tutorial kali ini, jenis SVM yang digunakan terdiri atas 3 kernel diantaranya: SVM Linier, SVM Radial, dan SVM Polynomial. Pemodelan SVM mula-mula dilakukan pada data training dengan syntax sebagai berikut.
#Linier
svm.Lin = svm(LUNG_CANCER~ .,
data = data_train, kernel = "linear",cost=1)
print(svm.Lin)
#Radial
svm.Rad = svm(LUNG_CANCER~ .,
data = data_train, kernel = "radial",cost=1, gamma=2)
print(svm.Rad)
#Polynomial
svm.Poly = svm(LUNG_CANCER~ .,
data = data_train, kernel = "polynomial",cost=2, gamma=10)
print(svm.Poly)
Tahapan selanjutnya, melakukan prediksi data Testing masing-masing pada SVM Linier, SVM Radial, dan SVM Polynomial dengan syntax R sebagai berikut.
# Memprediksi Variabel Verdict pada Data testing
##Linier
ypred_svmlinier= predict(svm.Lin, newdata = data_test)
##Radial
ypred_svmradial= predict(svm.Rad, newdata = data_test)
##Polynomial
ypred_svmpolynomial= predict(svm.Poly, newdata = data_test)
Setelah melakukan running syntax R untuk prediksi hasil SVM pada data testing, berikutnya menentukan confusion matrix dengan syntax sebagai berikut.
#Confussion Matrix
##Linier
cm.testing_svmlinier = table(data_test$LUNG_CANCER, ypred_svmlinier)
confusionMatrix(cm.testing_svmlinier)
##Radial
cm.testing_svmradial = table(data_test$LUNG_CANCER, ypred_svmradial)
confusionMatrix(cm.testing_svmradial)
##Polynomial
cm.testing_svmpolynomial = table(data_test$LUNG_CANCER, ypred_svmpolynomial)
confusionMatrix(cm.testing_svmpolynomial)
Sehingga, didapatkan hasil confusion matrix
Apabila kita perhatikan berdasarkan confusion matrix pada Gambar 6, Gambar 7, dan Gambar 8 dapat kita ringkas sebagai berikut.
Jenis SVM | Accuracy | Sensitivity | Specificity |
SVM Linier | 0,9677 | 1 | 0,9630 |
SVM Radial | 0,8548 | 1 | 0,8525 |
SVM Polynomial | 0,8871 | 0,71429 | 0,9091 |
Berdasarkan Tabel 2. diketahui bahwa jenis SVM dengan accuracy, sensitivity dan specificity tertinggi yaitu SVM Linier.
Dalam hal ini:
* Accuracy menunjukkan sejauh mana model SVM mampu mengklasifikasikan data dengan benar secara keseluruhan. Accuracy menghitung jumlah prediksi yang benar (true positives dan true negatives) dibagi oleh jumlah total data.
*Sensitivity menunjukkan sejauh mana model SVM mampu mengidentifikasi jumlah prediksi yang benar positif (true positive) dalam dataset.
*Specificity menunjukkan sejauh mana model SVM mampu mengidentifikasi jumlah prediksi yang benar negatif (true negative) dalam dataset.
Referensi
Sekian penjelasan terkait Tutorial SVM (Support Vector Machine) dengan R. Jika masih ada yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.