Naive Bayes Classifier: Contoh Perhitungan Manual Lengkap

Naive Bayes Classifier adalah metode klasifikasi berbasis probabilitas yang menggunakan Teorema Bayes untuk memprediksi kelas suatu data berdasarkan data latih.

Pada contoh ini, Naive Bayes digunakan untuk menentukan apakah kondisi cuaca termasuk kelas yes atau no pada atribut PLAY. Perhitungan dilakukan mulai dari menyiapkan atribut, data latih, data uji, menghitung probabilitas prior, probabilitas bersyarat, hingga menentukan hasil klasifikasi.

Metode ini menggunakan asumsi bahwa setiap atribut bersifat independen secara kondisional terhadap atribut lainnya ketika kelas target telah diketahui.


Daftar Isi


Pengertian Naive Bayes Classifier

Naive Bayes Classifier adalah algoritma klasifikasi probabilistik yang menentukan kelas berdasarkan probabilitas terbesar dari suatu data.

Disebut naive karena algoritma mengasumsikan bahwa setiap atribut saling independen setelah kelas target diketahui. Walaupun asumsi tersebut tidak selalu sepenuhnya terpenuhi pada data nyata, Naive Bayes tetap banyak digunakan karena sederhana, cepat, dan mudah diimplementasikan.

Naive Bayes dapat digunakan pada berbagai kasus klasifikasi, misalnya:

  • klasifikasi teks,
  • klasifikasi email spam,
  • klasifikasi sentimen,
  • klasifikasi kelayakan,
  • klasifikasi diagnosis berbasis gejala,
  • dan berbagai kasus prediksi kelas lainnya.

Rumus Naive Bayes

Teorema Bayes secara umum dituliskan sebagai:

\[ P(C|X)=\frac{P(X|C)P(C)}{P(X)} \]

Keterangan:

  • \(C\) = kelas target,
  • \(X\) = data atau atribut yang diamati,
  • \(P(C|X)\) = probabilitas kelas \(C\) setelah mengetahui \(X\),
  • \(P(X|C)\) = probabilitas data \(X\) jika kelas \(C\) diketahui,
  • \(P(C)\) = probabilitas prior kelas,
  • \(P(X)\) = probabilitas data.

Pada Naive Bayes, karena atribut diasumsikan independen secara kondisional terhadap kelas, maka:

\[ P(C|X) \propto P(C) \prod_{i=1}^{n}P(x_i|C) \]

Untuk proses klasifikasi, nilai \(P(X)\) tidak perlu dihitung karena nilainya sama untuk semua kelas. Kelas dipilih berdasarkan nilai terbesar dari:

\[ P(C) \prod_{i=1}^{n}P(x_i|C) \]

Cara Kerja Naive Bayes

Secara umum, proses Naive Bayes terdiri dari langkah berikut:

  1. Menentukan atribut dan kelas target.
  2. Menyiapkan data latih yang sudah memiliki label.
  3. Menghitung probabilitas prior setiap kelas.
  4. Menghitung probabilitas bersyarat setiap nilai atribut terhadap kelas.
  5. Mengalikan probabilitas prior dengan seluruh probabilitas bersyarat pada data uji.
  6. Membandingkan nilai setiap kelas.
  7. Memilih kelas dengan nilai posterior terbesar.

Contoh Kasus Perhitungan Naive Bayes

Contoh berikut menggunakan dataset cuaca dengan target PLAY yang memiliki dua kelas, yaitu yes dan no.

#01 Data Atribut

Berikut adalah atribut yang digunakan dalam perhitungan Naive Bayes.

Kode Nama Atribut Keterangan
A1 OUTLOOK Kondisi cuaca
A2 TEMPERATURE Suhu
A3 HUMIDITY Kelembapan
A4 WINDY Kondisi angin
A5 PLAY Kelas target

Atribut PLAY merupakan label atau kelas target yang akan diprediksi berdasarkan nilai atribut lainnya.

#02 Data Nilai Atribut

Data nilai atribut merupakan pilihan nilai yang mungkin untuk masing-masing atribut.

Kode Nama Atribut Nilai
A1 OUTLOOK cloudy
A1 OUTLOOK rainy
A1 OUTLOOK sunny
A2 TEMPERATURE cool
A2 TEMPERATURE hot
A2 TEMPERATURE mild
A3 HUMIDITY high
A3 HUMIDITY normal
A4 WINDY false
A4 WINDY true
A5 PLAY yes
A5 PLAY no

#03 Data Latih

Data latih merupakan kumpulan data yang sudah memiliki label dan digunakan sebagai dasar untuk menghitung probabilitas.

Dataset berikut digunakan secara konsisten pada seluruh tahapan perhitungan agar hasil probabilitas dapat diverifikasi secara manual.

Nomor OUTLOOK TEMPERATURE HUMIDITY WINDY PLAY
1 sunny hot high false no
2 sunny hot high true no
3 cloudy hot high false yes
4 rainy mild high false yes
5 rainy cool normal false yes
6 rainy cool normal true yes
7 cloudy cool high true yes
8 sunny mild high false no
9 sunny cool normal false yes
10 rainy mild normal false yes
11 sunny mild normal true yes
12 cloudy mild high true yes
13 cloudy hot normal false yes
14 rainy mild high true no

Jumlah data latih adalah 14 data, terdiri dari:

  • kelas no = 4 data,
  • kelas yes = 10 data.

#04 Data Uji

Data uji berikut belum memiliki nilai pada atribut target PLAY.

OUTLOOK TEMPERATURE HUMIDITY WINDY PLAY
rainy hot high true ?

Nilai target PLAY akan diprediksi menggunakan probabilitas dari data latih.


#05 Menghitung Probabilitas Prior

Probabilitas prior adalah probabilitas awal setiap kelas sebelum mempertimbangkan nilai atribut pada data uji.

Probabilitas kelas no

\[ P(no) = \frac{4}{14} = 0.2857 \]

Probabilitas kelas yes

\[ P(yes) = \frac{10}{14} = 0.7143 \]

Jadi:

Kelas Jumlah Data Probabilitas Prior
no 4 0.2857
yes 10 0.7143

#06 Menghitung Probabilitas Bersyarat

Probabilitas bersyarat menunjukkan peluang suatu nilai atribut muncul pada kelas tertentu.

OUTLOOK

\[ P(sunny|no)=\frac{3}{4}=0.75 \]
\[ P(sunny|yes)=\frac{2}{10}=0.20 \]
\[ P(cloudy|no)=\frac{0}{4}=0 \]
\[ P(cloudy|yes)=\frac{4}{10}=0.40 \]
\[ P(rainy|no)=\frac{1}{4}=0.25 \]
\[ P(rainy|yes)=\frac{4}{10}=0.40 \]

TEMPERATURE

\[ P(hot|no)=\frac{2}{4}=0.50 \]
\[ P(hot|yes)=\frac{2}{10}=0.20 \]
\[ P(mild|no)=\frac{2}{4}=0.50 \]
\[ P(mild|yes)=\frac{4}{10}=0.40 \]
\[ P(cool|no)=\frac{0}{4}=0 \]
\[ P(cool|yes)=\frac{4}{10}=0.40 \]

HUMIDITY

\[ P(high|no)=\frac{4}{4}=1 \]
\[ P(high|yes)=\frac{4}{10}=0.40 \]
\[ P(normal|no)=\frac{0}{4}=0 \]
\[ P(normal|yes)=\frac{6}{10}=0.60 \]

WINDY

\[ P(false|no)=\frac{2}{4}=0.50 \]
\[ P(false|yes)=\frac{6}{10}=0.60 \]
\[ P(true|no)=\frac{2}{4}=0.50 \]
\[ P(true|yes)=\frac{4}{10}=0.40 \]

Jika seluruh probabilitas disusun dalam tabel:

Atribut Nilai no (0.2857) yes (0.7143)
OUTLOOK sunny 0.75 0.20
OUTLOOK cloudy 0 0.40
OUTLOOK rainy 0.25 0.40
TEMPERATURE hot 0.50 0.20
TEMPERATURE mild 0.50 0.40
TEMPERATURE cool 0 0.40
HUMIDITY high 1.00 0.40
HUMIDITY normal 0 0.60
WINDY false 0.50 0.60
WINDY true 0.50 0.40

Catatan: tabel di atas menggunakan probabilitas empiris tanpa Laplace Smoothing. Nilai 0 akan dibahas pada bagian Laplace Smoothing.


#07 Perhitungan Data Uji

Data uji:

  • OUTLOOK = rainy
  • TEMPERATURE = hot
  • HUMIDITY = high
  • WINDY = true

Perhitungan kelas no

Gunakan:

  • \(P(no)=0.2857\)
  • \(P(rainy|no)=0.25\)
  • \(P(hot|no)=0.50\)
  • \(P(high|no)=1\)
  • \(P(true|no)=0.50\)

Maka:

\[ Score(no) = 0.2857 \times 0.25 \times 0.50 \times 1 \times 0.50 \]
\[ Score(no) \approx 0.0179 \]

Perhitungan kelas yes

Gunakan:

  • \(P(yes)=0.7143\)
  • \(P(rainy|yes)=0.40\)
  • \(P(hot|yes)=0.20\)
  • \(P(high|yes)=0.40\)
  • \(P(true|yes)=0.40\)

Maka:

\[ Score(yes) = 0.7143 \times 0.40 \times 0.20 \times 0.40 \times 0.40 \]
\[ Score(yes) \approx 0.0091 \]

Nilai 0.0179 dan 0.0091 merupakan skor posterior yang belum dinormalisasi.


#08 Normalisasi Posterior

Jika ingin mengubah kedua skor menjadi probabilitas posterior yang totalnya 1, hitung:

\[ Total = 0.017857 + 0.009143 = 0.027 \]

Untuk kelas no:

\[ P(no|X) = \frac{0.017857}{0.027} \approx 0.6614 \]

atau sekitar:

\[ 66.14\% \]

Untuk kelas yes:

\[ P(yes|X) = \frac{0.009143}{0.027} \approx 0.3386 \]

atau sekitar:

\[ 33.86\% \]
Kelas Skor Belum Dinormalisasi Posterior Normalisasi
no 0.0179 66.14%
yes 0.0091 33.86%

#09 Hasil Klasifikasi

Berdasarkan hasil perhitungan:

\[ Score(no)=0.0179 \]
\[ Score(yes)=0.0091 \]

Karena nilai kelas no lebih besar daripada kelas yes, maka data uji diklasifikasikan sebagai:

PLAY = no

Jika posterior dinormalisasi, probabilitas kelas no sekitar 66.14%, sedangkan kelas yes sekitar 33.86%.


Zero Probability dan Laplace Smoothing

Salah satu masalah pada Naive Bayes adalah munculnya probabilitas bernilai 0.

Pada dataset contoh terdapat beberapa nilai 0, misalnya:

\[ P(cloudy|no)=0 \]
\[ P(cool|no)=0 \]
\[ P(normal|no)=0 \]

Jika salah satu nilai tersebut muncul pada data uji, maka hasil perkalian seluruh probabilitas pada kelas tersebut dapat menjadi 0.

Salah satu cara yang umum digunakan untuk mengatasi masalah ini adalah Laplace Smoothing.

Rumusnya:

\[ P(x_i|C) = \frac{ count(x_i,C)+1 }{ count(C)+k } \]

Keterangan:

  • \(count(x_i,C)\) = jumlah kemunculan nilai atribut \(x_i\) pada kelas \(C\),
  • \(count(C)\) = jumlah data pada kelas \(C\),
  • \(k\) = jumlah kemungkinan nilai pada atribut tersebut.

Contoh Laplace Smoothing

Misalnya nilai cloudy tidak pernah muncul pada kelas no.

Tanpa smoothing:

\[ P(cloudy|no) = \frac{0}{4} = 0 \]

Karena OUTLOOK memiliki tiga kemungkinan nilai yaitu sunny, cloudy, dan rainy, maka dengan Laplace Smoothing:

\[ P(cloudy|no) = \frac{0+1}{4+3} = \frac{1}{7} \approx 0.1429 \]

Dengan demikian probabilitas tidak lagi bernilai 0.


Kelebihan dan Kekurangan Naive Bayes

Kelebihan

  • Perhitungan relatif sederhana.
  • Proses training cepat.
  • Cocok untuk data dengan banyak fitur.
  • Dapat digunakan untuk klasifikasi teks.
  • Mudah diimplementasikan pada aplikasi web maupun desktop.
  • Dapat bekerja dengan data latih yang relatif kecil.

Kekurangan

  • Menggunakan asumsi independensi antaratribut.
  • Probabilitas 0 dapat menyebabkan hasil perkalian menjadi 0 jika tidak menggunakan smoothing.
  • Kualitas prediksi sangat bergantung pada kualitas data latih.
  • Atribut yang sangat saling bergantung dapat mengurangi kesesuaian asumsi model.
  • Untuk data numerik kontinu biasanya diperlukan pendekatan distribusi tertentu, misalnya Gaussian Naive Bayes.

Ringkasan

Pada contoh ini, proses Naive Bayes dimulai dari menyiapkan atribut, data latih, dan data uji.

Selanjutnya dihitung:

  1. probabilitas prior setiap kelas,
  2. probabilitas bersyarat setiap nilai atribut,
  3. skor posterior untuk setiap kelas,
  4. dan kelas dengan nilai terbesar sebagai hasil klasifikasi.

Untuk data uji:

OUTLOOK TEMPERATURE HUMIDITY WINDY
rainy hot high true

diperoleh:

  • Score(no) ≈ 0.0179
  • Score(yes) ≈ 0.0091

Sehingga hasil klasifikasi adalah:

PLAY = no


FAQ Naive Bayes

Apa fungsi Naive Bayes?

Naive Bayes digunakan untuk melakukan klasifikasi berdasarkan probabilitas kemunculan atribut pada data latih.

Mengapa disebut Naive Bayes?

Disebut naive karena model mengasumsikan setiap atribut independen secara kondisional terhadap atribut lain setelah kelas target diketahui.

Apa yang dimaksud data latih?

Data latih adalah data yang sudah memiliki label atau kelas target dan digunakan sebagai dasar untuk menghitung probabilitas.

Apa itu probabilitas prior?

Probabilitas prior adalah probabilitas awal suatu kelas sebelum mempertimbangkan atribut pada data uji.

Apa itu probabilitas bersyarat?

Probabilitas bersyarat adalah peluang suatu nilai atribut muncul ketika kelas tertentu telah diketahui.

Apa itu posterior probability?

Posterior probability adalah probabilitas suatu kelas setelah informasi pada data uji diperhitungkan.

Bagaimana menentukan hasil klasifikasi?

Hasil klasifikasi ditentukan dari kelas yang memperoleh nilai posterior atau skor posterior terbesar.

Apa masalah zero probability pada Naive Bayes?

Zero probability terjadi ketika suatu nilai atribut tidak pernah muncul pada kelas tertentu sehingga probabilitasnya menjadi 0. Jika dikalikan dengan probabilitas lainnya, seluruh skor kelas dapat menjadi 0.

Apa fungsi Laplace Smoothing?

Laplace Smoothing menambahkan nilai kecil pada perhitungan frekuensi agar probabilitas yang sebelumnya 0 menjadi lebih dari 0.

Apakah Naive Bayes hanya untuk data kategorikal?

Tidak. Naive Bayes memiliki beberapa varian. Untuk data kategorikal dapat digunakan Categorical Naive Bayes, sedangkan data numerik kontinu sering menggunakan Gaussian Naive Bayes.

Apakah Naive Bayes termasuk supervised learning?

Ya. Naive Bayes termasuk supervised learning karena membutuhkan data latih yang sudah memiliki label kelas.

Naive Bayes cocok untuk kasus apa?

Naive Bayes cocok untuk berbagai kasus klasifikasi seperti text classification, spam detection, sentiment analysis, klasifikasi kelayakan, dan klasifikasi berbasis probabilitas lainnya.


Source Code Metode Naive Bayes

Berikut adalah beberapa source code yang menggunakan metode Naive Bayes, baik berbasis web maupun desktop.


Referensi

  1. Han, J., Kamber, M., & Pei, J. (2011). Data Mining: Concepts and Techniques. Third Edition. Morgan Kaufmann.
  2. Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.
  3. Algoritma Naive Bayes - BINUS University

Ada yang Ditanyakan?

Jika anda masih ada kesulitan atau kekeliruan tentang penjelasan metode di atas, bisa menghubungi kami lewat WA/Email sesuai halaman Kontak.

Jika ingin memiliki file excel dari metode di atas bisa melihat cara download di halaman Download.

Jika ingin memiliki source code dari metode di atas, baik berbasis web maupun desktop bisa melihat daftar harga donasi di halaman Daftar Source Code.

Donasi ini digunakan oleh penulis untuk membayar server dan membeli kopi sembari membuat tutorial Metode/Algoritma lainnya :).