Lompat ke konten
nalar

Probabilistic & Instance-Based Classifiers (Naïve Bayes & KNN)

Teorema Bayes, asumsi independensi Naïve Bayes (kategorikal, Gaussian, multinomial untuk teks), Laplace smoothing, serta klasifikasi berbasis jarak K-Nearest Neighbors.

Capaian Pembelajaran

Setelah minggu ini kamu bisa:

  1. Menjelaskan teorema Bayes dan asumsi independensi bersyarat pada Naïve Bayes.
  2. Menghitung prediksi Naïve Bayes secara manual (dengan dan tanpa Laplace smoothing).
  3. Menerapkan Gaussian Naïve Bayes untuk atribut numerik dan Multinomial NB untuk teks/sentimen.
  4. Menghitung jarak Euclidean & Manhattan dan memprediksi kelas dengan KNN.
  5. 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:

  1. Hitung jarak titik baru ke semua data latih.
  2. Ambil k tetangga terdekat.
  3. 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

  1. Kerjakan lab.ipynb sampai selesai.
  2. Kerjakan kuis (di web, atau baca quiz.json).
  3. Isi exercise.py, lalu cek: python check.py 7

Sudah paham materinya?

Tandai selesai, lalu uji pemahamanmu.

Kerjakan kuis