Tutorial SVM (Support Vector Machine) dengan R #2

DW ADS

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.

SVM

Data terdiri atas 16 variabel yaitu:

VariabelKeterangan VariabelSkala Data
GenderM = Male
F = Female
Kategorik
AgeNumerik
Smoking1 = No
2 = Yes
Kategorik
Yellow Finger1 = No
2 = Yes
Kategorik
Anxiety1 = No
2 = Yes
Kategorik
Peer Pressure1 = No
2 = Yes
Kategorik
Chronic Disease1 = No
2 = Yes
Kategorik
Fatigue1 = No
2 = Yes
Kategorik
Allergy1 = No
2 = Yes
Kategorik
Wheezing1 = No
2 = Yes
Kategorik
Alcohol1 = No
2 = Yes
Kategorik
Coughing1 = No
2 = Yes
Kategorik
Shortness of Breath1 = No
2 = Yes
Kategorik
Swallowing Difficulty1 = No
2 = Yes
Kategorik
Chest Pain1 = No
2 = Yes
Kategorik
Lung Cancer1 = No
2 = Yes
Kategorik
Tabel 1. Data

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)
SVM
Gambar 1. Struktur Data Training dan Data Testing

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]
SVM
Gambar 2. Data Training, Before dan After Removing Kolom Urutan Observasi

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)
svm
Gambar 3.  Hasil Pemodelan SVM Linier pada data Training
svm
Gambar 4.  Hasil Pemodelan SVM Radial pada data Training
svm
Gambar 5.  Hasil Pemodelan SVM Polynomial pada data Training

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

svm
Gambar 6. Confusion Matrix SVM Linier
svm
Gambar 7. Confusion Matrix SVM Radial
svm
Gambar 8. Confusion Matrix SVM Polynomial

Apabila kita perhatikan berdasarkan confusion matrix pada Gambar 6, Gambar 7, dan Gambar 8 dapat kita ringkas sebagai berikut.

Jenis SVMAccuracySensitivitySpecificity
SVM Linier0,967710,9630
SVM Radial0,854810,8525
SVM Polynomial0,88710,714290,9091
Tabel 2. Ringkasan Hasil Confusion Matrix

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

Hastie, T., Tibshirani, R., & Friedman, J. (2009). “The Elements of Statistical Learning: Data Mining, Inference, and Prediction.” Springer.

Novianti, F.A dan Purnami, S.W. (2012). “Analisis Diagnosis Pasien Kanker Payudara Menggunakan Regresi Logistik dan Support Vector Machine (SVM) Berdasarkan Hasil Mamografi”. Jurnal Sains dan Seni ITS, Vol. 1,No. 1.

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.

Sstt...
Mau Kiriman Artikel Terbaru Exsight
Tanpa Biaya Langganan? ????

Nama Kamu

Email Kamu

Dapatkan Akses Informasi Terupdate Seputar Dunia Data dan Statistika 🙂

Exsight ADS

Leave a Comment

Hubungi Admin
Halo, selamat datang di Exsight! 👋

Hari ini kita ada DISKON 20% untuk semua transaksi. Klaim sekarang!