Tutorial Algoritma Naive Bayes dengan R #2

DW ADS

Hai sobat Exsight, kembali lagi pada segmen artikel tutorial. Nah untuk tutorial ini, kita akan membahas terkait bagaimana cara kerja algoritma Naive Bayes menggunakan software R. Kalau sobat Exsight masih bingung terkait apa itu Naive Bayes, bisa dilihat pada artikel sebelumnya dengan judul Algoritma Naive Bayes dalam Machine Learning #1.

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.

bayes

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 Naive Bayes

Load Library

Tahapan paling awal sebelum running syntax di software R yaitu 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)
bayes
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]
bayes
Gambar 2. Data Training, Before dan After Removing Kolom Urutan Observasi

Pemodelan

Setelah melakukan Pre-Processing, tahapan berikutnya melakukan pemodelan Naive Bayes untuk data training dengan syntax sebagai berikut.

model<-naiveBayes(LUNG_CANCER~.,data=data_train)
model
bayes
Gambar 3. Hasil Pemodelan Naive Bayes pada data Training

Gambar 3. menunjukkan hasil pemodelan Naive Bayes pada data Training yaitu berupa Priori Probabilities dan Conditional Probabilities pada setiap variabel.

Selanjutnya, melakukan prediksi pada data Testing, dalam hal ini kita menentukan nilai probabilitas untuk pengkategorian “NO” dan “YES” pada data Lung Cancer, selengkapnya dapat dilihat pada Gambar 4.

# Generating the probabilities in prediction
ypred<-predict(model, newdata = data_test, type="raw")
ypred
bayes
Gambar 4. Nilai Probabilitas Prediksi pada Data Testing

Berdasarkan Gambar 4, apabila probabilitas di kategori “YES” lebih tinggi dibandingkan kategori “NO”, artinya hasil prediksi pada data Testing masuk ke kategori “YES”. Selengkapnya untuk melihatkan hasil prediksi Naive Bayes pengkategorian kelas pada data Testing dapat dilihat pada Gambar 5. sebagai berikut.

# Generating the class in prediction
pred<-predict(model,newdata=data_test)
plot(pred)
bayes
Gambar 5. Hasil Prediksi Naive Bayes Pengkategorian Kelas pada Data Testing

Langkah terkahir yaitu menentukan Confusion Matrix, dengan syntax sebagai berikut.

# Confusion Matrix
caret::confusionMatrix(pred,reference=data_test$LUNG_CANCER)
bayes
Gambar 6. Confusion Matrix

Berdasarkan Gambar 6. diketahui bahwa dengan menggunakan algoritma Naive Bayes , hasil klasifikasi terkait data Lung Cancer memiliki accuracy yang sangat baik yaitu sebesar 0,9516 , lalu sensitivity sebesar 0,8000 , dan specificity sebesar 0,9808.

Dalam hal ini:
* Accuracy menunjukkan sejauh mana model Naive Bayes 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 Naive Bayes mampu mengidentifikasi jumlah prediksi yang benar positif (true positive) dalam dataset..

*Specificity menunjukkan sejauh mana model Naive Bayes mampu mengidentifikasi jumlah prediksi yang benar negatif (true negative) dalam dataset.

Referensi

Taheri, S., & Mammadov, M. (2013). Learning The Naïve Bayes Classifier with Optimization Models, International Journal of Applied Mathematics and Computer Science, 23(4).

Pamungkas, K., Aridinanti, L., & Wibowo, W. (2022). Analisis Sentimen Pelaporan Masyarakat di Situs Media Centre Surabaya dengan Naive Bayes Classifier. Jurnal Teknik ITS, Vol.11, No. 2.

Sampai disini dulu penjelasan terkait Tutorial Algoritma Naive Bayes dengan Software 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!