Capaian Pembelajaran
Setelah minggu ini kamu bisa:
- Menjelaskan teorema Bayes dan asumsi independensi bersyarat pada Naïve Bayes.
- Menghitung prediksi Naïve Bayes secara manual (dengan dan tanpa Laplace smoothing).
- Menerapkan Gaussian Naïve Bayes untuk atribut numerik dan Multinomial NB untuk teks/sentimen.
- Menghitung jarak Euclidean & Manhattan dan memprediksi kelas dengan KNN.
- Memahami pentingnya normalisasi fitur dan pemilihan nilai k.
1. Teorema Bayes
Untuk kelas C dan bukti (fitur) X:
P(X | C) · P(C)
P(C | X) = ─────────────────
P(X)
| Istilah | Nama | Arti |
|---|---|---|
P(C) |
prior | Peluang kelas sebelum melihat data (proporsi kelas) |
P(X | C) |
likelihood | Peluang melihat fitur X jika kelasnya C |
P(X) |
evidence | Sama untuk semua kelas → bisa diabaikan saat membandingkan |
P(C | X) |
posterior | Peluang kelas setelah melihat data |
Aturan keputusan MAP (maximum a posteriori): pilih kelas dengan P(X|C)·P(C) terbesar.
Contoh intuitif
1% pelanggan melakukan fraud. Sistem deteksi benar 90% saat ada fraud (sensitivitas), tetapi juga memberi alarm palsu 5% pada transaksi normal. Jika alarm berbunyi, berapa peluang benar-benar fraud?
P(fraud | alarm) = 0.9 · 0.01 / (0.9 · 0.01 + 0.05 · 0.99)
= 0.009 / 0.0585 ≈ 0.154
Hanya ~15%! Prior yang kecil sangat berpengaruh — pelajaran penting untuk data tidak seimbang.
2. Naïve Bayes
Jika X = (x1, x2, …, xn), menghitung P(x1, …, xn | C) langsung butuh data sangat banyak. Naïve Bayes memakai asumsi naif: fitur saling independen bersyarat terhadap kelas:
P(X | C) = P(x1|C) · P(x2|C) · … · P(xn|C)
Prediksi = argmax_C P(C) · Π P(xi | C)
Asumsi ini jarang benar sepenuhnya, tetapi NB tetap sering bekerja baik karena yang dibutuhkan hanya urutan skor kelas, bukan nilai peluang yang tepat.
2.1 Contoh manual — Play Tennis
Dataset 14 baris (9 Yes, 5 No). Prediksi untuk X = (Outlook=Sunny, Temp=Cool, Humidity=High, Wind=Strong).
| Fitur | P(·|Yes) | P(·|No) |
|---|---|---|
| Outlook=Sunny | 2/9 | 3/5 |
| Temp=Cool | 3/9 | 1/5 |
| Humidity=High | 3/9 | 4/5 |
| Wind=Strong | 3/9 | 3/5 |
| Prior | 9/14 | 5/14 |
Skor(Yes) = 9/14 · 2/9 · 3/9 · 3/9 · 3/9 = 0.00529
Skor(No) = 5/14 · 3/5 · 1/5 · 4/5 · 3/5 = 0.02057
Prediksi: No. Posterior ternormalisasi: P(No|X) = 0.02057 / (0.02057 + 0.00529) = 0.795.
2.2 Masalah frekuensi nol & Laplace smoothing
Jika suatu nilai tidak pernah muncul pada kelas tertentu (mis. Outlook=Overcast di kelas No = 0/5), seluruh perkalian menjadi 0 — satu fitur "memveto" semua bukti lain.
Laplace (add-α) smoothing:
count(xi, C) + α
P(xi | C) = ──────────────────────
count(C) + α · k
k = banyaknya nilai unik fitur tersebut, biasanya α = 1.
Contoh: P(Sunny | Yes) = (2 + 1) / (9 + 1·3) = 3/12 = 0.25.
Dengan α = 1, posterior No untuk contoh di atas menjadi 0.720 (tetap No).
2.3 Trik log
Mengalikan banyak peluang kecil → underflow (angka jadi 0 di komputer). Gunakan penjumlahan log:
log Skor(C) = log P(C) + Σ log P(xi | C)
2.4 Gaussian Naïve Bayes (atribut numerik)
Untuk fitur kontinu, asumsikan berdistribusi normal di tiap kelas:
1 (x − μ_C)²
P(x | C) = ─────────────── · exp( − ────────── )
√(2π) · σ_C 2 σ_C²
μ_C dan σ_C = rata-rata & standar deviasi fitur pada kelas C.
Contoh: jam pemakaian kelas churn: μ = 12, σ = 4. Untuk x = 10:
P = 1/(√(2π)·4) · exp(−(4)/(32)) = 0.0997 · 0.8825 = 0.0880.
2.5 Multinomial NB untuk teks
Dokumen diubah menjadi bag of words (hitungan kata). Likelihood:
P(kata | C) = (jumlah kata itu di kelas C + 1) / (total kata di kelas C + |V|)
|V| = ukuran kosakata. Inilah dasar filter spam & analisis sentimen klasik.
| Varian | Tipe fitur | sklearn |
|---|---|---|
| Categorical NB | kategorikal | CategoricalNB |
| Gaussian NB | numerik kontinu | GaussianNB |
| Multinomial NB | hitungan (teks) | MultinomialNB |
| Bernoulli NB | biner (ada/tidak kata) | BernoulliNB |
Kelebihan: sangat cepat, butuh sedikit data, tahan terhadap fitur tak relevan, cocok untuk teks. Kekurangan: asumsi independensi; estimasi peluang sering terlalu "yakin" (mendekati 0/1).
2.6 Bayesian Belief Network (sekilas)
Jika independensi tidak masuk akal, Bayesian Belief Network memodelkan ketergantungan antar-variabel dalam graf berarah tak bersiklus (DAG) beserta tabel peluang bersyarat (CPT). NB adalah kasus khusus: kelas sebagai induk tunggal semua fitur.
3. K-Nearest Neighbors (KNN)
KNN adalah lazy learner / instance-based: tidak membangun model, hanya menyimpan data latih. Saat prediksi:
- Hitung jarak titik baru ke semua data latih.
- Ambil
ktetangga terdekat. - Prediksi = kelas mayoritas (klasifikasi) atau rata-rata (regresi).
3.1 Ukuran jarak
| Jarak | Rumus | Catatan |
|---|---|---|
| Euclidean (L2) | √Σ(ai − bi)² |
paling umum, "garis lurus" |
| Manhattan (L1) | Σ|ai − bi| |
"jalan kota", lebih tahan outlier |
| Minkowski (Lp) | (Σ|ai − bi|^p)^(1/p) |
p=1 Manhattan, p=2 Euclidean |
| Hamming | jumlah posisi berbeda | atribut kategorikal |
Contoh: a = (1, 2), b = (4, 6) → Euclidean = √(9 + 16) = 5, Manhattan = 3 + 4 = 7.
3.2 Contoh manual
Data latih (umur dalam puluhan tahun, belanja dalam juta):
| Titik | x1 | x2 | Kelas |
|---|---|---|---|
| P1 | 1 | 1 | A |
| P2 | 2 | 1 | A |
| P3 | 4 | 3 | B |
| P4 | 5 | 4 | B |
| P5 | 3 | 2 | A |
Titik baru Q = (3, 3). Jarak Euclidean: P1 = 2.83, P2 = 2.24, P3 = 1.00, P4 = 2.24, P5 = 1.00.
- k = 1 → seri (P3 & P5 jarak sama) — perlu aturan pemecah seri.
- k = 3 → P3 (B), P5 (A), lalu P2/P4 seri di 2.24 … contoh ini menunjukkan mengapa k ganjil dan aturan seri penting.
3.3 Memilih k
| k kecil (mis. 1) | k besar |
|---|---|
| Sensitif noise → overfitting | Terlalu halus → underfitting |
| Batas keputusan bergerigi | Batas keputusan mulus |
Praktik: coba beberapa k (ganjil untuk 2 kelas) dan pilih via validasi silang (Minggu 8). Aturan kasar: k ≈ √n.
3.4 Normalisasi WAJIB
Jika satu fitur bernilai jutaan (pendapatan) dan lainnya puluhan (umur), jarak didominasi pendapatan. Gunakan min-max atau z-score (Minggu 2) sebelum KNN.
3.5 Kelebihan & kekurangan
| Kelebihan | Kekurangan |
|---|---|
| Sederhana, tanpa pelatihan | Prediksi lambat (hitung jarak ke semua data) |
| Batas keputusan fleksibel | Boros memori |
| Mudah ditambah data baru | Buruk di dimensi tinggi (curse of dimensionality) |
Untuk data besar, pencarian tetangga dipercepat dengan KD-Tree, Ball-Tree, atau LSH (Minggu 15).
4. Perbandingan
| Aspek | Naïve Bayes | KNN | Decision Tree (M6) |
|---|---|---|---|
| Tipe | Probabilistik, eager | Berbasis instans, lazy | Berbasis aturan, eager |
| Waktu latih | Sangat cepat | Nol | Sedang |
| Waktu prediksi | Sangat cepat | Lambat | Cepat |
| Interpretasi | Peluang per fitur | Tetangga mirip | Aturan if-then |
| Perlu normalisasi? | Tidak | Ya | Tidak |
5. Studi Kasus Bisnis
- Sentimen ulasan marketplace → Multinomial NB: kata "rusak", "kecewa" menaikkan peluang negatif.
- Risiko churn → Gaussian NB / KNN pada fitur lama berlangganan, keluhan, jam pemakaian.
- Rekomendasi "pelanggan mirip" → KNN: tawarkan produk yang dibeli tetangga terdekat.
Ringkasan
- Naïve Bayes = prior × perkalian likelihood per fitur (asumsi independen bersyarat).
- Laplace smoothing mencegah peluang nol; trik log mencegah underflow.
- Gaussian NB untuk numerik, Multinomial NB untuk teks.
- KNN memprediksi lewat mayoritas k tetangga; sensitif skala → normalisasi dulu.
- Pilih k lewat validasi; k kecil overfit, k besar underfit.
Bacaan
- Han, Kamber & Pei — Data Mining: Concepts and Techniques, Bab 8.3 (Bayes) & 9.5 (Lazy Learners).
- Dokumentasi scikit-learn: Naive Bayes dan Nearest Neighbors.
Tugas Minggu Ini
- Kerjakan
lab.ipynbsampai selesai. - Kerjakan kuis (di web, atau baca
quiz.json). - Isi
exercise.py, lalu cek:python check.py 7