Naive Bayes classifier (NBC) merupakan salah satu metoda pembelajaran mesin yang memanfaatkan perhitungan probabilitas dan statistik yang dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi probabilitas di masa depan berdasarkan pengalaman di masa sebelumnya ref: wiki
Naive Bayes Classifier adalah algoritma klasifikasi yang populer dan kuat dalam bidang machine learning. Dikenal karena kesederhanaan dan kinerjanya yang baik, Naive Bayes telah menjadi pilihan yang umum untuk berbagai tugas klasifikasi.
1. Dasar-dasar Naive Bayes Classifier
Contents
- 0.1 1. Dasar-dasar Naive Bayes Classifier
- 0.2 2. Cara Kerja Naive Bayes Classifier
- 0.3 3. Tipe-tipe Naive Bayes Classifier
- 0.4 4. Aplikasi dalam Dunia Nyata
- 0.5 5. Keuntungan Naive Bayes Classifier
- 0.6 6. Tantangan dan Pembahasan Terkini
- 1 Algoritma Naive Bayes
- 2 WEKA naive bayes
- 3 RStudio Naive Bayes
- 4 Naive Bayes di Python
- 5 Kesimpulan
a. Teorema Bayes
Naive Bayes bersandar pada Teorema Bayes, sebuah teorema probabilitas yang memberikan cara untuk menghitung probabilitas kondisional. Teorema ini menyediakan kerangka kerja untuk menghitung probabilitas suatu kejadian berdasarkan informasi sebelumnya.
b. Asumsi Naive
Asumsi dasar Naive Bayes adalah independensi bersyarat atau asumsi naif. Ini berarti setiap fitur dalam data dianggap independen satu sama lain, walaupun dalam kenyataannya, hubungan ini mungkin kompleks.
2. Cara Kerja Naive Bayes Classifier
Naive Bayes bekerja dengan menghitung probabilitas setiap kelas untuk suatu instance berdasarkan fitur-fiturnya. Dalam kasus klasifikasi biner, untuk instance baru, algoritma menghitung probabilitas kelas 0 dan kelas 1. Instance tersebut kemudian diberikan label kelas dengan probabilitas tertinggi.
3. Tipe-tipe Naive Bayes Classifier
Terdapat beberapa variasi Naive Bayes Classifier, yang paling umum antaranya adalah:
a. Multinomial Naive Bayes
Cocok untuk data yang dapat dihitung, seperti jumlah kata dalam dokumen.
b. Bernoulli Naive Bayes
Digunakan untuk data biner, seperti keberadaan atau ketiadaan fitur tertentu dalam dokumen.
c. Gaussian Naive Bayes
Cocok untuk data yang terdistribusi normal, mengasumsikan distribusi Gaussian.
4. Aplikasi dalam Dunia Nyata
Naive Bayes Classifier memiliki beragam aplikasi di berbagai industri, termasuk:
a. Klasifikasi Email Spam
Mengklasifikasikan email sebagai spam atau non-spam berdasarkan kata-kata kunci dalam pesan.
b. Klasifikasi Sentimen
Analisis sentimen pada ulasan produk atau layanan online.
c. Diagnostik Medis
Membedakan antara pasien yang menderita penyakit tertentu atau tidak berdasarkan gejala.
5. Keuntungan Naive Bayes Classifier
a. Kemudahan Implementasi
Naive Bayes mudah diimplementasikan dan memerlukan sedikit parameter untuk disesuaikan.
b. Kinerja Cepat
Meskipun kesederhanaannya, Naive Bayes dapat memberikan kinerja yang baik, terutama pada dataset besar.
c. Efektif pada Data Terbatas
Cocok untuk dataset yang relatif kecil dan tidak memerlukan jumlah data pelatihan yang besar.
6. Tantangan dan Pembahasan Terkini
Meskipun kelebihan yang dimilikinya, Naive Bayes memiliki beberapa batasan, seperti asumsi naifnya yang mungkin tidak sesuai dengan kenyataan. Beberapa penelitian terkini berfokus pada cara mengatasi kelemahan ini dan meningkatkan kinerjanya pada tugas klasifikasi yang lebih kompleks.
Algoritma Naive Bayes
teknik klasifikasi berdasarkan penerapan teorema Bayes dengan asumsi kuat bahwa semua prediktor independen satu sama lain. Secara sederhana dengan kata lain, asumsinya adalah bahwa kehadiran fitur di kelas tidak tergantung pada kehadiran fitur lain di kelas yang sama. Misalnya, telepon dapat dipertimbangkan secerdas layar sentuh, fasilitas internet, kamera bagus dll. Padahal semua ini fitur bergantung satu sama lain, mereka berkontribusi secara independen terhadap kemungkinan bahwa ponsel tersebut adalah ponsel pintar. ref: dqlab
Contoh perhitungan bisa kalian pelajari disini
https://informatikalogi.com/algoritma-naive-bayes/
https://flinsetyadi.com/bayesian-classification-klasifikasi-naive-bayes/
WEKA naive bayes
Bila kalian ingin menggunakan tools untuk menghitung naive bayes, gunakan saja weka, misalkan saja, saya mempunyai dataset tennis.csv,
kemudian langsung saja pilih menu berikut classify -> Classifier –> NaiveBayes
kalian bisa membaca informasi diatas sebagai berikut
probabilitas class yaitu
- no: 0.38
- yes: 0.63
probabilitas outlook yaitu
- sunny-no: 4/8 = 0.5
- sunny-yes: 3/12 = 0.25
- overcast-no: 1/8 = 0.125
- overcast-yes: 5/12 = 0.416
- rainy-no: 3/8 =0.375
- rainy-yes: 4/12 = 0.33
RStudio Naive Bayes
Bila kalian menggunakan RStudio bisa menggunakan package e1071
library(dplyr) library(e1071) dat = read.csv('tennis.csv') model <- naiveBayes(play~outlook+temp+humidity+windy, data=dat) model
hasilnya agak sedikit berbeda dengan weka, kalian bisa setting nilai laplace nya
Naive Bayes Classifier for Discrete Predictors Call: naiveBayes.default(x = X, y = Y, laplace = laplace) A-priori probabilities: Y no yes 0.3571429 0.6428571 Conditional probabilities: outlook Y overcast rainy sunny no 0.0000000 0.4000000 0.6000000 yes 0.4444444 0.3333333 0.2222222 temp Y cool hot mild no 0.2000000 0.4000000 0.4000000 yes 0.3333333 0.2222222 0.4444444 humidity Y high normal no 0.8000000 0.2000000 yes 0.3333333 0.6666667 windy Y false true no 0.4000000 0.6000000 yes 0.6666667 0.3333333
ref: https://www.learnbymarketing.com/tutorials/naive-bayes-in-r/
Naive Bayes di Python
Naive bayes pada python kalian bisa menggunakan sklearn, namun ada sedikit perbedaan dimana untuk Weka dan Rstudio type data bisa menggunakan numerik dan kategorikal, namun pada sklearn harus diubah terlebih jika type data tersebut kategorikal. Misalkan naive bayes pada contoh berikut ref: datacamp
Kita buat terlebih dahulu dataset diatas menggunakan list pada Python yaitu terdiri dari
- atribut fitur yaitu wheater dan temperatur
- atribut target/kelas yaitu play
Inti dari kasus ini yaitu seseorang akan pergi bermain play tenis dengan kondisi cuaca (wheater) dan suhu (temperatur) sama seperti 2 kasus sebelumnya.
wheather=['Sunny','Sunny','Overcast','Rainy','Rainy','Rainy','Overcast','Sunny','Sunny','Rainy','Sunny','Overcast','Overcast','Rainy'] temp=['Hot','Hot','Hot','Mild','Cool','Cool','Cool','Mild','Cool','Mild','Mild','Mild','Hot','Mild'] play=['No','No','Yes','Yes','Yes','No','Yes','No','Yes','Yes','Yes','Yes','Yes','No']
Agar tampilan lebih menarik, kita buat tabular data saja menggunakan pandas
import pandas as pd dat = pd.DataFrame(data={'wheather':wheather,'temp':temp,'play':play})
tampilannya dat yaitu
wheather temp play 0 Sunny Hot No 1 Sunny Hot No 2 Overcast Hot Yes 3 Rainy Mild Yes 4 Rainy Cool Yes 5 Rainy Cool No 6 Overcast Cool Yes 7 Sunny Mild No 8 Sunny Cool Yes 9 Rainy Mild Yes 10 Sunny Mild Yes 11 Overcast Mild Yes 12 Overcast Hot Yes 13 Rainy Mild No
langkah selanjutnya encoding feature yaitu mengubah data kategorikal menjadi numerikal
from sklearn import preprocessing #creating labelEncoder le = preprocessing.LabelEncoder() wheather_encoded=le.fit_transform(wheather) print(wheather_encoded)
hal yang sama juga dilakukan untuk variabel yang lain
temp_encoded = le.fit_transform(temp) label = le.fit_transform(play)
ciri fitur yaitu wheather dan temperature digabung jadi satu
import numpy as np features = np.array([wheather_encoded,temp_encoded]) features = features.T features
kemudian lakukan training naive bayes dan prediksi
#Import Gaussian Naive Bayes model from sklearn.naive_bayes import GaussianNB #Create a Gaussian Classifier model = GaussianNB() # Train the model using the training sets model.fit(features,label.T) predicted = model.predict(features) predicted
Kesimpulan
Dari keseluruhan contoh naive bayes diatas, saya lebih suka menggunakan RStudio karena lebih simple namun kalau untuk membuat aplikasi, saya lebih suka menggunakan Java karena sangat mudah membuat GUI daripada menggunakan RShiny dan Python