Pemahaman Mendalam Mengenai Naive Bayes Classifier

By | December 4, 2023
Print Friendly, PDF & Email
1,745 Views

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

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:

See also  Pytorch Algoritma Convolutional Neural Networks - CNN

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

See also  Deep Learning Machine

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

See also  Bagaimana mengubah model PyTorch menjadi ONNX

https://www.programcreek.com/java-api-examples/?code=PacktPublishing%2FJava-Data-Analysis%2FJava-Data-Analysis-master%2FChapter07%2FTestWekaBayes.java#

Leave a Reply