Senin, 15 Januari 2024

Algoritma Naive Bayes, Pengertian dan Contohnya

Algoritma Naive Bayes adalah suatu metode klasifikasi yang berdasarkan teorema Bayes dengan asumsi bahwa semua variabel prediktor (fitur) adalah independen satu sama lain. Meskipun asumsi ini seringkali tidak terpenuhi di dunia nyata, namun Naive Bayes tetap menjadi pilihan yang baik dan efisien untuk masalah klasifikasi, terutama dalam kasus dengan data yang cukup besar.


Langkah-langkah umum dalam algoritma Naive Bayes adalah sebagai berikut:

1. Pelatihan (Training):

  • Menghitung probabilitas prior untuk setiap kelas berdasarkan data latih.
  • Menghitung probabilitas kondisional untuk setiap fitur dalam setiap kelas
2. Klasifikasi:
  • Menggunakan teorema Bayes, menghitung probabilitas kelas untuk suatu contoh baru.
  • Memilih kelas dengan probabilitas tertinggi sebagai prediksi.

Contoh sederhana dapat diilustrasikan dengan kasus klasifikasi email sebagai spam atau bukan spam. Misalkan terdapat dua fitur: (1) kata "lottery" muncul atau tidak, dan (2) kata "money" muncul atau tidak. Kita ingin mengklasifikasikan email berdasarkan dua fitur tersebut.


Contoh Perhitungan:

Data Pelatihan:

| No. | Email Text                             | Spam (Kelas) |

|-- ---|---------------------------------|-----------------|

| 1    | Win the lottery, win money! | Yes                |

| 2    | Meeting tomorrow                 |  No               |

| 3    | Lottery winner                       | Yes               |

| 4    | Money for you                       | Yes               |

| 5   | Important meeting                  | No                |


Pelatihan:

Menghitung probabilitas prior:

P(Spam=Yes) = 3/5
P(Spam=No) = 2/5
Menghitung probabilitas kondisional untuk setiap fitur dalam setiap kelas:

P("lottery" | Spam=Yes) = 2/3
P("money" | Spam=Yes) = 2/3
P("lottery" | Spam=No) = 1/2
P("money" | Spam=No) = 1/2

Klasifikasi:
Misalkan kita punya email baru: "Win money fast."

1. Menggunakan teorema Bayes untuk menghitung probabilitas kelas:

  • P(Spam=Yes | "win", "money", "fast") ∝ P("win" | Spam=Yes) * P("money" | Spam=Yes) * P("fast" | Spam=Yes) * P(Spam=Yes)
  • P(Spam=No | "win", "money", "fast") ∝ P("win" | Spam=No) * P("money" | Spam=No) * P("fast" | Spam=No) * P(Spam=No)

2. Memilih kelas dengan probabilitas tertinggi sebagai prediksi.

Dalam kasus ini, kita akan memprediksi bahwa email tersebut adalah spam karena probabilitas kelas "Spam=Yes" lebih tinggi.


Algoritma Naive Bayes memiliki beberapa manfaat yang membuatnya sering digunakan dalam berbagai aplikasi:

1. Sederhana dan Efisien:
  • Naive Bayes adalah algoritma yang relatif sederhana dan mudah dipahami.
  • Komputasinya cepat dan efisien, terutama ketika dihadapkan dengan dataset yang besar.
2. Kemampuan Menangani Data Besar:
  • Cocok untuk dataset dengan fitur yang besar dan independen, karena asumsi utama Naive Bayes adalah adanya independensi antar fitur.
3. Kemampuan Klasifikasi Baik:
  • Meskipun asumsinya naif (fitur independen), Naive Bayes sering memberikan kinerja yang baik dalam tugas klasifikasi, terutama pada dataset dengan jumlah fitur tinggi.
4. Efektif untuk Klasifikasi Teks dan NLP:
  • Naive Bayes sering digunakan dalam pemrosesan bahasa alami (Natural Language Processing/NLP) dan klasifikasi teks karena dapat mengatasi permasalahan klasifikasi dokumen dengan baik.
5. Ketahanan terhadap Data yang Hilang:
  • Naive Bayes cukup tahan terhadap data yang hilang, artinya dapat melakukan klasifikasi dengan baik meskipun beberapa fitur tidak lengkap.
6. Sederhana untuk Diperbarui:
  • Model Naive Bayes dapat diperbarui dengan mudah ketika ada tambahan data pelatihan baru.
7. Cocok untuk Klasifikasi Multikelas:
  • Naive Bayes dapat digunakan untuk tugas klasifikasi dengan lebih dari dua kelas (multikelas).
8. Baik untuk Klasifikasi dengan Dimensi Tinggi:

Cocok untuk klasifikasi dengan data berdimensi tinggi seperti pengenalan wajah atau analisis citra.
Namun, perlu diingat bahwa meskipun Naive Bayes memiliki banyak keunggulan, ia juga memiliki asumsi yang cukup kuat tentang independensi fitur yang mungkin tidak selalu terpenuhi di dunia nyata. Sehingga, performanya dapat bervariasi tergantung pada sifat dataset yang digunakan.