📮 Naive Bayes

Klasifikasi probabilistik berbasis teorema Bayes — cepat, ringan, dan juara di dunia teks.

🎬 Animasi: Naive Bayes: Kata Memperbarui Keyakinan

Tiap kata baru memperbarui P(spam) via teorema Bayes. Kata-kata mirip spam menumpuk → probabilitas melonjak → pesan ditandai SPAM.

📌 1. Teorema Bayes: Memperbarui Keyakinan

P(A|B) = P(B|A) · P(A) / P(B) Contoh medis: P(mengidap kanker) = 0.001 ← prior (jarang) P(test+ | kanker) = 0.99 ← sensitivitas P(test+ | sehat) = 0.05 ← false positive P(kanker | test+) = 0.99·0.001 / (0.99·0.001 + 0.05·0.999) ≈ 0.019 → hanya 1.9% !! Pelajaran: prior (keberadaan awal) sangat berpengaruh. Model yang mengabaikan prior akan salah besar di data tidak seimbang.

📌 2. Asumsi "Naive": Fitur Independen

Untuk klasifikasi dengan banyak fitur, kita butuh P(fitur₁, fitur₂, ... | kelas) — yang mustahil diestimasi dari data (kombinasinya meledak). Solusi Naive Bayes: anggap semua fitur independen satu sama lain (given kelas):

P(kelas | fitur₁..fiturₙ) ∝ P(kelas) · Π P(fiturᵢ | kelas) "Naive" = asumsi independen ini TIDAK benar di dunia nyata ("obat" dan "murah" jelas saling terkait di teks spam), TAPI praktiknya hasilnya sering tetap bagus — dan jauh lebih murah. Varian: • Multinomial NB → fitur = frekuensi kata (TEKS) • Gaussian NB → fitur = angka kontinu (distribusi Gauss per kelas) • Bernoulli NB → fitur = ada/tidak ada
⚠️ Laplace smoothing (+1): jika sebuah kata tidak pernah muncul di kelas spam, probabilitasnya 0 → hasil kali jadi 0 selamanya. Smoothing memberi "probabilitas kecil" untuk semua kemungkinan.

📌 3. Contoh: Spam Detector (Multinomial NB)

Output:

Coba tambah kalimat training baru (mis. "diskon gajian beli sekarang", 1) dan lihat prediksinya berubah.

📌 4. Contoh: Gaussian NB untuk Fitur Angka

Versi untuk data numerik: tiap (kelas, fitur) dimodelkan sebagai distribusi Gauss N(μ, σ) yang diestimasi dari data training.

Output:
💡 NB sangat cepat (hanya hitung probabilitas, tanpa iterasi) — dipakai di filter spam email, sentimen analysis, dan rekomendasi. Kelemahannya: asumsi independen gagal saat fitur sangat berkorelasi.

🧠 Latihan

  1. Tambahkan 5 kalimat spam dan 5 ham baru ke training. Apa yang berubah di prediksinya?
  2. Set alpha = 0 (tanpa smoothing), lalu uji teks yang mengandung kata baru (tidak ada di vocab). Apa yang terjadi?
  3. Hitung manual: di spam detector, berapa P(kata "gratis" | spam)? Bandingkan dengan P("gratis" | ham).
  4. Di Gaussian NB, ubah sep=1.5 menjadi sep=0.8. Kenapa akurasi turun? (Petunjuk: overlap distribusi Gauss.)