Perhitungan Manual Algoritma Naive Bayes Untuk Dataset Sederhana

Table of Contents
Naive bayes merupakan salah satu algoritma klasifikasi yang amat terkenal. Selain simpel, tidak adanya proses training dalam naive bayes membuat algoritma ini relatif lebih cepat dari sisi waktu komputasi. Mesipun demikian, performa algoritma ini jangan dianggap enteng. Naive bayes telah terbukti efektif dalam mengatasi berbagai masalah. Dalam posting ini, saya akan menjabarkan bagaimana menghitung manual naive bayes untuk data kategorikal. Mengenai teori dasar algoritma naive bayes, dapat teman-teman pelajari di sumber yang lain.

Baiklah, Gambar 1 merepresentasikan dataset seherhana sebagai acuan untuk menghitung menggunakan naive bayes. Dataset ini memiliki 2 variabel input kategorikal, yaitu weather dan car dan variabel class. 
Gambar 1. Dataset untuk Perhitungan Naive Bayes

Setiap variabel input memiliki 2 nilai dan variabel class juga memiliki 2 nilai. Kita dapat mengkonversi setiap variabel ke dalam bentuk biner seperti berikut:

Variabel : Weather
  • sunny = 1
  • rainy = 0
Variabel : Car 
  • working = 1
  • broken = 0 
Variabel : Class
  • go-out = 1
  • stay-home = 0
Dengan demikian, hasil konversi dapat merubah dataset menjadi seperti Gambar 2 berikut: 

Gambar 2 konversi ke dalam bentuk biner

Model Naive Bayes

Terdapat dua jenis peluang (probability) yang perlu dihitung dari dataset untuk model naive bayes :
  • Class Probabilities
  • Conditional Probabilities
Oke, kita mulai dari menghitung class probabilities :

Dataset memiliki 2 masalah kelas, kita dapat mengetahui probabilitas (P) masing-masing kelas dengan cara : 
  • P(class=1) = jumlah(class=1) / (jumlah(class=0) + jumlah(class=1))
  • P(class=0) = jumlah(class=0) / (jumlah(class=0) + jumlah(class=1))
Maka didapatkan : 
  • P(class=1) = 5 / (5 + 5)
  • P(class=0) = 5 / (5 + 5)
Nilai probabilitas (P) untuk P(class=1) dan P(class=0) adalah 0.5

Langkah selanjutnya adalah menghitung Conditional Probabilities, yaitu probililitas setiap nilai input terhadapat nilai class.

Variabel Weather
  • P(weather=sunny|class=go-out) = jumlah(weather=sunny and class=go-out) / jumlah(class=go-out)
  • P(weather=rainy|class=go-out) = jumlah(weather=rainy and class=go-out) / jumlah(class=go-out)
  • P(weather=sunny|class=stay-home) = jumlah(weather=sunny and class=stay-home) / jumlah(class=stay-home)
  • P(weather=rainy|class=stay-home) = jumlah(weather=rainy and class=stay-home) / jumlah(class=stay-home)
Nilai peluang yang didapatkan adalah :
  • P(weather=sunny|class=go-out) = 0.8
  • P(weather=rainy|class=go-out) = 0.2
  • P(weather=sunny|class=stay-home) = 0.4
  • P(weather=rainy|class=stay-home) = 0.6

Variabel Car
  • P(car=working|class=go-out) = jumlah(car=working and class=go-out) / jumlah(class=go-out)
  • P(car=broken|class=go-out) = jumlah(car=brokenrainy and class=go-out) / jumlah(class=go-out)
  • P(car=working|class=stay-home) = jumlah(car=working and class=stay-home) / jumlah(class=stay-home)
  • P(car=broken|class=stay-home) = jumlah(car=brokenrainy and class=stay-home) / jumlah(class=stay-home)
Nilai peluang yang didapatkan adalah :
  • P(car=working|class=go-out) = 0.8
  • P(car=broken|class=go-out) = 0.2
  • P(car=working|class=stay-home) = 0.2
  • P(car=broken|class=stay-home) = 0.8

Prediksi Naive Bayes

Baik, mari kita ambil record pertama dari dataset untuk memprediksi termasuk kelas mana record pertama tersebut.  
weather=sunny, car=working

Peluang kelas 'go-out'
  • go-out = P(weather=sunny|class=go-out) * P(car=working|class=go-out) * P(class=go-out)
  • go-out = 0.8 * 0.8 * 0.5
  • go-out = 0.32

Peluang kelas 'stay-home'
  • stay-home = P(weather=sunny|class=stay-home) * P(car=working|class=stay-home) * P(class=stay-home)
  • stay-home = 0.4 * 0.2 * 0.5
  • stay-home = 0.04
Jika kita bandingkan, peluang go-out lebih besar daripada peluang stay-home, artinya prediksi naive bayes untuk input weather=sunny, car=working adalah kelas go-out. Dan jika kita tengok data sebenarnya, hasilnya memang menunjukkan kelas go-out, sehingga prediksi naive bayes untuk record pertama benar

Kita akan memprediksi seluruh record input weather dan car. Kemudian membandingkannya dengan hasil sebenarnya, maka diperoleh seperti pada Gambar 3 berikut :

Gambar 3 Perbandingan dataset sebenarnya dan hasil prediksi

Jika kita membandingkan antara hasil prediksi dengan data sebenarnya, diperoleh akurasi sebesar 80%. Tercatat ada 8 hasil prediksi yang sesuai dengan data sebenarnya dan ada 2 hasil prediksi yang menyimpang. 

Demikian penjelasan singkat mengenai perhitungan manual menggunakan algoritma naive bayes untuk dataset yang sederhana. Semoga bermanfaat. 



Setelah anda paham perhitungan manual naive bayes, gambar diatas adalah contoh penerapan dalam bentuk GUI via Netbeans. 

5 comments

Terima kasih telah mampir di blog kami. Jika ingin menghubungi penulis, silakan kirim pesan via email di kitainformatika@gmail.com atau via WA di 087750503014. Jika mood penulis lagi baik, biasanya fast respon.
Comment Author Avatar
Anonymous
October 30, 2017 at 9:34 AM Delete
This comment has been removed by the author.
Comment Author Avatar
Anonymous
October 30, 2017 at 9:35 AM Delete
Terimakasih Sangat bermanfaat untuk menunjang Tugas Akhir (y)
saya ingin bertanya untuk algoritma klasifikasi dalam analisis tingkat pengetahuan apakah bisa menggunakan algoritma Naive Bayes ? atau selain naive bayes dan C4.5.
terimakasih
Comment Author Avatar
December 19, 2017 at 2:11 PM Delete
Apa yang agan maksud dengan analisis tingkat pengetahuan? Jika dataset yang agan miliki memiliki atribut kemudian class. Bisa pakai naive bayes dan algoritma klasifikasi yang lain.
Comment Author Avatar
May 18, 2019 at 7:25 PM Delete
bisa di tambahkan rumus naive bayes juga donk pak..biar bis tambah paham..terima kasih
Comment Author Avatar
December 6, 2024 at 3:18 AM Delete
Thanks for poosting this