Naive Bayes

By | September 16, 2021
16 Views

Naive Bayes classifier (NBC) merupakan salah satu metoda pemelajaran 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

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

  1. no: 0.38
  2. yes: 0.63

probabilitas outlook yaitu

  1. sunny-no: 4/8 = 0.5
  2. sunny-yes: 3/12 = 0.25
  3. overcast-no: 1/8 = 0.125
  4. overcast-yes: 5/12 = 0.416
  5. rainy-no: 3/8 =0.375
  6. 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

  1. atribut fitur yaitu wheater dan temperatur
  2. 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

Leave a Reply

Your email address will not be published.




Enter Captcha Here :