Pengklasifikasian Penyakit Diabetes menggunakan Algoritma Support Vector Machine (SVM) pada Pima Indians menggunakan R

Gifa Delyani Nursyafitri
6 min readJan 9, 2019

--

Holaaa, readers!

Permasalahan yang akan kita bahas kali ini adalah Pengklasifikasian Data Diabetes Pima Indians menggunakan Algoritma Support Vector Machine. Data didapatkan dari Kaggle, thanks to kaggle hehehe.

Studi Kasus

Perlu kita ketahui bahwa sekitar 75% masyarakat Pima Indians dewasa yang tinggal di Amerika mengalami obesitas. Tampaknya masyarakat Pima memimiliki gen yang mendukung mereka untuk mengalami obesitas, namun hal itu berlaku jika mereka tinggal di lingkungan tertentu. Dari msayarakat Pima Indians dewasa yang mengalami obesitas, tercatat bahwa 40% dari mereka berjenis kelamin perempuan.

Variabel yang digunakan

Dalam kasus ini, variabel yang saya gunakan adalah Pregnancies (jumlah kehamilan), Glucose (konsentrasi glukosa dalam plasma darah), BloodPressure (tekanan darah), SkinThickness (ketebalan lipatan kulit trisep), Insulin (banyaknya insulin dalam darah), BMI (Berat Badan), Diabetes (peluang mengalami diabetes berdasarkan gen), Age (Usia), Outcome (Hasil). Saya menggunakan variabel-variabel di atas karena pada dasarnya variabel-variabel tersebut merupakan faktor-faktor penyebab diabetes.

Tipe Data

Langkah awal : Menginput data dan mencari tipe data

read.delim('clipboard')
data <- input[,1:9]
str(data) #untuk mengetahui tipe data

Berikut merupakan output yang dihasilkan.

Hasil dari tipe data

Berdasarkan output di atas, tipe data untuk semua variabel yang digunakan adalah integer, kecuali variabel BMI dan DiabetesPredigreeFunction yang memiliki tipe data numeric karena angka-angka yang terdapat pada kedua variabel adalah bilangan desimal.

Konsep Populasi dan Sampel

Konsep pengambilan sampel pada data ini adalah dari seluruh populasi yaitu Seluruh masyarakat Pima Indians diambil masyarakat yang berjenis kelamin perempuan sebagai sampel penelitian. Kemudian dari sampel tersebut, diambil 80% untuk dijadikan data training dan sisanya yaitu 20% untuk dijadikan testing.

Metode yang digunakan

Metode yang digunakan dalam penelitian ini adalah metode Support Vector Machine (SVM). SVM merupakan salah satu metode klasifikasi dalam data mining. SVM juga dapat melakukan prediksi baik pada klasifikasi maupun regresi. Pada dasarnya SVM memiliki prinsip linear, akan tetapi pada saat ini SVM telah berkembang sehingga dapat menyelesaikan masalah non-linear. Cara kerja SVM pada masalah non-linear adalah dengan memasukkan konsep kernel pada ruang berdimensi tinggi. Pada ruang yang berdimensi ini, nantinya akan dicari pemisah atau yang sering disebut hyperplane. Hyperplane dapat memaksimalkan jarak atau margin antara kelas data. Hyperplane terbaik antara kedua kelas dapat ditemukan dengan mengukur margin dan kemudian mencari titik maksimalnya. Usaha dalam mencari hyperplane yang terbaik sebagai pemisah kelas-kelas adalah inti dari proses pada metode SVM.

Konsep SVM dapat dijelaskan secara sederhana sebagai usaha mencari hyperplane terbaik yang berfungsi sebagai pemisah dua buah class pada input space. Gambar a memperlihatkan beberapa pattern yang merupakan anggota dari dua buah class : positif (dinotasikan dengan +1) dan negatif (dinotasikan dengan –1). Pattern yang tergabung pada class negatif disimbolkan dengan kotak, sedangkan pattern pada class positif, disimbolkan dengan lingkaran. Proses pembelajaran dalam problem klasifikasi diterjemahkan sebagai upaya menemukan garis (hyperplane) yang memisahkan antara kedua kelompok tersebut. Berbagai alternatif garis pemisah (discrimination boundaries) ditunjukkan pada Gambar a.

SVM berusaha menemukan hyperplane terbaik

Asumsi yang digunakan untuk Mengeneralisir Kesimpulan

Pada akhirnya, hasil yang diharapkan adalah metode SVM ini mampu mengklasifikasikan apakah seseorang dengan kriteria tertentu termasuk orang yang mengidap penyakit diabetes (disimbolkan 1) atau orang yang tidak mengidap penyakit diabetes (disimbolkan 0).

Ciri Khas yang ada dari Kasus

Kasus ini merupakan kasus pengklasifikasian. Sebagaimana yang telah dijelaskan sebelumnya bahwa SVM merupakan salah satu metode pengklasifikasian yang cukup baik. Saya memilih menggunakan SVM karena berdasarkan studi literatur yang saya baca, untuk hasil keakuratan pengklasifikasian, SVM memiliki tingkat keakuratan yang cukup tinggi dibandingkan algoritma lainnya.

Perhitungan matematis

Dalam SVM di kenal beberapa kernel, berikut ini merupakan beberapa fungsi kernel pada umumnya.

a. Kernel Polynomial dengan Variabel Bebas q

b. Kernel Gaussian atau RBF

Langkah kedua : Menentukan data testing dan data training

n <- round(nrow(data)*0.80);n 
set.seed(30);samp=sample(1:nrow(data),n)
head(samp)
train <- data[samp,]
test <- data[-samp,]

Pada kali ini, saya menggunakan 80% dari data sebagai data training dan sisanya sebagai data testing. Kemudian membuat suatu formula yang memuat variabel-variabel yang ada.

# mengambil nama variabel   
diabetes <- names(data[,1:8])
diabetes
# Concatenate strings
d <- paste(diabetes,collapse=' + ')
d
d <- paste('Outcome ~',d)
d
# Convert to formula
d <- as.formula(d);d

Langkah ketiga: Melakukan klasifikasi dengan SVM dengan kernel liniear dan radial.

library(e1071) 
mod.svm1<-svm(d,train,kernel=”linear”,type=’C-classification’)
mod.svm1
mod.svm2<-svm(d,train,kernel=”radial”,type=’C-classification’)
mod.svm2

Pada akhirnya, tujuan yang ingin dicapai adalah untuk mengetahui pengklasifikasian seseorang yang dijadikan sampel dengan kriteria tertentu sesuai dengan variabel yang ada.

Untuk mendapatkan nilai keakuratan, maka dapat menggunakan Confussion Matrix. Berikut ini merupakan hasil dari confussion matrix

Accuracy merupakan proporsi jumlah prediksi benar. Rumus akurasi adalah:

Ukuran Keakuratan

Dengan menggunakan script berikut, maka kita dapat mencari nilai akurasi.

library(caret)  
pred.svm1 <- predict(mod.svm1,test[,1:8])
confusionMatrix(pred.svm1,train$Outcome)
####
pred.svm2 <- predict(mod.svm2,test[,1:8])
confusionMatrix(pred.svm2,train$Outcome)
Nilai keakuratan jika menggunakan kernel Linear

Berdasarkan hasil diatas, dapat dilihat bahwa orang yang tidak mengalami diabetes dan benar diprediksi tidak mengalami diabetes ada 375, kemudian orang yang diprediksi tidak mengidap diabetes tapi pada kenyataannya mengidap diabetes ada 75. Kemudian orang yang di prediksi mengalami diabetes tetapi pada kenyataannya tidak mengidap diabetes ada 26. Dan orang yang diprediksi mengalami diabetes dan benar mengalami diabetes ada 138. Sehingga tingkat keakuratan yang didapat adalah 0.8355 atau 83.55%.

Nilai keakuratan jika menggunakan kernel Radial

Berdasarkan hasil diatas, dapat dilihat bahwa orang yang tidak mengalami diabetes dan benar diprediksi tidak mengalami diabetes ada 357, kemudian orang yang diprediksi tidak mengidap diabetes tapi pada kenyataannya mengidap diabetes ada 87. Kemudian orang yang di prediksi mengalami diabetes tetapi pada kenyataannya tidak mengidap diabetes ada 44. Dan orang yang diprediksi mengalami diabetes dan benar mengalami diabetes ada 126. Sehingga tingkat keakuratan yang didapat adalah 0.7866 atau 78.66%.

Dari kasus ini keakuratan model dilihat dalam persen. Sehingga dari 100%, didapatkan keakuratan dengan menggunakan kernel Linear sebesar 83.55% dan dengan menggunakan kernel Radial 78.66%. Hal ini dapat disimpulkan bahwa dari sampel yang diambil telah menghasilkan nilai keakuratan yang cukup tinggi yang artinya hasil pengklasifikasiannya lebih banyak yang tepat prediksi.

Cara Meningkatkan Keakuratan

Untuk meningkatkan keakuratan, maka hal yang harus dilakukan adalah dengan memperbanyak dataset yang digunakan serta mencari referensi atau Trial and error dalam setting pembuatan model yang lebih baik.

Rekomendasi

Berdasarkan hasil yang telah didapatkan, maka saya dapat mengatakan bahwa pengklasifikasian dengan metode SVM dalam kasus ini lebih baik menggunakan kernel Linear. Saran saya untuk penelitian selanjutnya adalah sebaiknya memperbanyak dataset yang digunakan serta mencari data yang cukup bersih sehingga tidak terlalu banyak gangguan dalam menentukan model. Hal ini akan menyebabkan meningkatnya akurasi dari model yang kita miliki.

Thanks for reading. Hope you enjoy. Feel free to correct!

--

--

Gifa Delyani Nursyafitri
Gifa Delyani Nursyafitri

Written by Gifa Delyani Nursyafitri

Ku abadikan disini, karena aku paham betul bahwa ingatan manusia terbatas.

No responses yet