Machine Learning: Gaussian Naive Bayes

Pendahuluan

Naive Bayes Classifier merupakan sebuah metode klasifikasi yang berakar pada pengklasifikasian dengan menggunakan metode probabilitas dan statistik yang dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya sehingga dikenal sebagai Teorema Bayes. Ciri utama dari Naive Bayes Classifier ini adalah asumsi yang sangat kuat akan independensi dari masing-masing kondisi/kejadian (Sihombing, J., 2021).

Gaussian Naive Bayes merupakan salah satu varian dari Naive Bayes. Prinsip dasarnya sama dengan Naive Bayes, namun pada Naïve Bayeskita tidak dapat menghitung probabilitas data continues. (Yunardi, Dina, 2022)

Berdasarkan definisi tersebut, dapat disimpulkan bahwa gaussian naive bayes adalah varian dari algoritma Naive Bayes yang digunakan untuk menangani data kontinu, dengan asumsi bahwa data tersebut terdistribusi secara normal (Gaussian). (Doka, M. M., Kristina, K., & Hendro, H., 2025)

Kelebihan dan Kelemahan

Kelebihan

  • Sangat efektif untuk data numerik kontinu (misalnya: tinggi badan, suhu, tekanan darah)
  • Komputasi cepat dan efisien, tidak memerlukan banyak memori
  • Secara alami menangani missing values (tidak perlu imputasi rumit)
  • Relatif tahan terhadap noise dalam data karena efek smoothing dari distribusi probabilitas

Kelemahan

  1. Asumsi Distribusi Normal: Asumsi bahwa semua fitur numerik mengikuti distribusi Gaussian seringkali tidak realistis untuk data dunia nyata (misalnya: data usia yang multimodal atau data pendapatan yang skewed).

  2. Sensitif terhadap Outlier: Mean dan varians sangat dipengaruhi oleh nilai ekstrim (outlier), yang dapat mendistorsi kurva probabilitas secara signifikan. Outlier pada data suhu tubuh (misalnya 45°C) akan menggeser mean dan memperbesar varians.

  3. Zero-Frequency Problem (di Categorical): Pada Gaussian NB, masalah ini tidak ada karena probabilitas dihitung dari fungsi densitas kontinu, bukan frekuensi diskrit.

Metodologi Penelitian

Langkah-langkah Perhitungan Manual Gaussian Naive Bayes

Perhitungan manual Gaussian Naive Bayes dilakukan dengan mengikuti tahapan berikut:

  1. Pengumpulan dan Analisis Data: Memahami distribusi dan karakteristik dataset numerik.
  2. Perhitungan Probabilitas Prior: Menghitung probabilitas dasar setiap kelas.
  3. Perhitungan Parameter Gaussian: Menghitung Mean ($\mu$) dan Varians ($\sigma^2$) untuk setiap fitur numerik dalam setiap kelas.
  4. Perhitungan Likelihood: Menggunakan Probability Density Function (PDF) dari distribusi Gaussian untuk menghitung probabilitas nilai fitur tertentu.
  5. Prediksi Data Baru: Mengaplikasikan Teorema Bayes untuk kasus baru dan menentukan kelas dengan probabilitas tertinggi.

Studi Kasus: Data Diagnosis Penyakit

Dataset ini berisi 20 sampel pasien dengan informasi gejala numerik (suhu tubuh dan kadar oksigen) serta diagnosis penyakit. Data ini digunakan untuk analisis klasifikasi menggunakan algoritma Gaussian Naive Bayes.

Dataset

Tabel Data Pasien

NoUsia (Tahun)Suhu Tubuh (°C)Kadar Oksigen (%)Diagnosis
125 (Muda)38.596Flu
270 (Tua)39.088Covid
322 (Muda)36.898Flu
465 (Tua)39.285Covid
528 (Muda)37.097Flu
668 (Tua)38.790Covid
730 (Muda)38.298Flu
872 (Tua)36.992Covid
926 (Muda)36.599Flu
1069 (Tua)36.897Sehat
1124 (Muda)38.098Flu
1271 (Tua)36.986Covid
1367 (Tua)37.594Flu
1429 (Muda)38.897Flu
1566 (Tua)38.495Flu
1627 (Muda)36.687Covid
1770 (Tua)36.798Sehat
1823 (Muda)37.293Sehat
1969 (Tua)39.189Covid
2031 (Muda)38.396Flu

Catatan: Untuk menyederhanakan perhitungan manual, fitur Usia dikelompokkan secara kategorikal (Muda/Tua), namun fitur Suhu Tubuh dan Kadar Oksigen akan diproses menggunakan Gaussian Naive Bayes.

Distribusi Diagnosis

DiagnosisJumlahPersentase
Sehat315%
Flu1050%
Covid735%
Total20100%

Perhitungan Manual Gaussian Naive Bayes

Langkah 1: Hitung Probabilitas Prior

Prior probability dihitung berdasarkan frekuensi setiap kelas dalam data latih.

$$ P(\text{Sehat}) = \frac{3}{20} = 0.1500 \quad (15\%) $$

$$ P(\text{Flu}) = \frac{10}{20} = 0.5000 \quad (50\%) $$

$$ P(\text{Covid}) = \frac{7}{20} = 0.3500 \quad (35\%) $$

Langkah 2: Hitung Parameter Gaussian (Mean dan Varians)

Untuk setiap fitur numerik (Suhu Tubuh dan Kadar Oksigen) dalam setiap kelas, kita hitung Mean ($\mu$) dan Varians ($\sigma^2$).

Rumus Mean dan Varians

$$ \mu = \frac{1}{n} \sum_{i=1}^{n} x_i $$

$$ \sigma^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \mu)^2 $$

Catatan: Untuk sampel populasi, kita bagi dengan n. Untuk estimasi varians populasi yang tidak bias, biasanya digunakan n-1, namun dalam konteks likelihood Naive Bayes, pembagian dengan n sudah cukup.

2.1 Kelas Sehat (3 pasien)

Data Pasien Sehat:

  • Suhu: 36.8, 36.7, 37.2
  • Oksigen: 97, 98, 93

Perhitungan Suhu: $$ \mu_{\text{Suhu, Sehat}} = \frac{36.8 + 36.7 + 37.2}{3} = \frac{110.7}{3} = 36.9000 $$

$$ \begin{aligned} \sigma^2_{\text{Suhu, Sehat}} &= \frac{(36.8-36.9)^2 + (36.7-36.9)^2 + (37.2-36.9)^2}{3} = \frac{0.01 + 0.04 + 0.09}{3} = \frac{0.1400}{3} = 0.0467 \end{aligned} $$

Perhitungan Oksigen: $$ \mu_{\text{Oksigen, Sehat}} = \frac{97 + 98 + 93}{3} = \frac{288}{3} = 96.0000 $$

$$ \begin{aligned} \sigma^2_{\text{Oksigen, Sehat}} &= \frac{(97-96)^2 + (98-96)^2 + (93-96)^2}{3} = \frac{1 + 4 + 9}{3} = \frac{14}{3} = 4.6667 \end{aligned} $$

2.2 Kelas Flu (10 pasien)

Data Pasien Flu:

  • Suhu: 38.5, 36.8, 37.0, 38.2, 36.5, 38.0, 37.5, 38.8, 38.4, 38.3
  • Oksigen: 96, 98, 97, 98, 99, 98, 94, 97, 95, 96

Perhitungan Suhu: $$ \begin{aligned} \mu_{\text{Suhu, Flu}} &= \frac{38.5 + 36.8 + 37.0 + 38.2 + 36.5 + 38.0 + 37.5 + 38.8 + 38.4 + 38.3}{10} = \frac{378.0}{10} = 37.8000 \end{aligned} $$

$$ \begin{aligned} \sigma^2_{\text{Suhu, Flu}} &= \frac{(38.5-37.8)^2 + (36.8-37.8)^2 + (37.0-37.8)^2 + (38.2-37.8)^2 + (36.5-37.8)^2}{10} = \frac{0.49 + 1.00 + 0.64 + 0.16 + 1.69 + 0.04 + 0.09 + 1.00 + 0.36 + 0.25}{10} = \frac{5.72}{10} = 0.5720 \end{aligned} $$

Perhitungan Oksigen: $$ \begin{aligned} \mu_{\text{Oksigen, Flu}} &= \frac{96 + 98 + 97 + 98 + 99 + 98 + 94 + 97 + 95 + 96}{10} = \frac{968}{10} = 96.8000 \end{aligned} $$

$$ \begin{aligned} \sigma^2_{\text{Oksigen, Flu}} &= \frac{(96-96.8)^2 + (98-96.8)^2 + (97-96.8)^2 + (98-96.8)^2 + (99-96.8)^2}{10} = \frac{0.64 + 1.44 + 0.04 + 1.44 + 4.84 + 1.44 + 7.84 + 0.04 + 3.24 + 0.64}{10} = \frac{21.60}{10} = 2.1600 \end{aligned} $$

2.3 Kelas Covid (7 pasien)

Data Pasien Covid:

  • Suhu: 39.0, 39.2, 38.7, 36.9, 36.9, 36.6, 39.1
  • Oksigen: 88, 85, 90, 92, 86, 87, 89

Perhitungan Suhu: $$ \begin{aligned} \mu_{\text{Suhu, Covid}} &= \frac{39.0 + 39.2 + 38.7 + 36.9 + 36.9 + 36.6 + 39.1}{7} = \frac{266.4}{7} = 38.0571 \end{aligned} $$

Perhitungan detail $(x - \mu)^2$:

NoSuhux - µ(x - µ)²
139.00.94290.8891
239.21.14291.3062
338.70.64290.4133
436.9-1.15711.3389
536.9-1.15711.3389
636.6-1.45712.1232
739.11.04291.0876

$$ \begin{aligned} \sigma^2_{\text{Suhu, Covid}} &= \frac{0.8891 + 1.3062 + 0.4133 + 1.3389 + 1.3389 + 2.1232 + 1.0876}{7} \ &= \frac{8.4972}{7} = 1.2139 \end{aligned} $$

Perhitungan Oksigen: $$ \begin{aligned} \mu_{\text{Oksigen, Covid}} &= \frac{88 + 85 + 90 + 92 + 86 + 87 + 89}{7} \ &= \frac{617}{7} = 88.1429 \end{aligned} $$

Perhitungan detail $(x - \mu)^2$:

NoOksigenx - µ(x - µ)²
188-0.14290.0204
285-3.14299.8778
3901.85713.4488
4923.857114.8772
586-2.14294.5920
687-1.14291.3062
7890.85710.7346

$$ \begin{aligned} \sigma^2_{\text{Oksigen, Covid}} &= \frac{0.0204 + 9.8778 + 3.4488 + 14.8772 + 4.5920 + 1.3062 + 0.7346}{7} \ &= \frac{34.8570}{7} = 4.9796 \end{aligned} $$

Tabel Ringkasan Parameter Gaussian

KelasFiturMean (µ)Varians (σ²)
SehatSuhu Tubuh36.90000.0467
Kadar Oksigen96.00004.6667
FluSuhu Tubuh37.80000.5720
Kadar Oksigen96.80002.1600
CovidSuhu Tubuh38.05711.2139
Kadar Oksigen88.14294.9796

Langkah 3: Hitung Probabilitas Likelihood dengan PDF Gaussian

Untuk menghitung probabilitas sebuah nilai numerik x pada kelas C dengan mean $\mu$ dan varians $\sigma^2$, digunakan Probability Density Function (PDF) dari distribusi Gaussian:

Rumus PDF Gaussian

$$ P(x \mid C) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) $$

Prediksi untuk Pasien Baru

Kasus: Pasien dengan Gejala Baru

Misalkan datang pasien baru dengan hasil pengukuran:

  • Usia: Muda (tidak digunakan dalam perhitungan Gaussian)
  • Suhu Tubuh: 38.5°C
  • Kadar Oksigen: 92%

Perhitungan Likelihood untuk Setiap Kelas

3.1 Likelihood untuk Kelas Sehat ($\mu = 36.9000$, $\sigma^2 = 0.0467$)

Untuk Suhu = 38.5:

$$ \begin{aligned} P(\text{Suhu}=38.5 \mid \text{Sehat}) &= \frac{1}{\sqrt{2 \pi (0.0467)}} \exp\left(-\frac{(38.5 - 36.9000)^2}{2(0.0467)}\right) \ &= \frac{1}{\sqrt{0.2934}} \exp\left(-\frac{(1.6000)^2}{0.0934}\right) = \frac{1}{0.5417} \exp\left(-\frac{2.5600}{0.0934}\right) \ &= 1.8460 \times \exp(-27.4090) \approx 2.261 \times 10^{-12} \end{aligned} $$

Untuk Oksigen = 92:

$$ \begin{aligned} P(\text{Oksigen}=92 \mid \text{Sehat}) &= \frac{1}{\sqrt{2 \pi (4.6667)}} \exp\left(-\frac{(92 - 96.0000)^2}{2(4.6667)}\right) \ &= \frac{1}{\sqrt{29.3200}} \exp\left(-\frac{(-4.0000)^2}{9.3334}\right) = \frac{1}{5.4150} \exp\left(-\frac{16.0000}{9.3334}\right) \ &= 0.1847 \times \exp(-1.7143) \approx 0.0333 \end{aligned} $$

3.2 Likelihood untuk Kelas Flu ($\mu = 37.8000$, $\sigma^2 = 0.5720$)

Untuk Suhu = 38.5:

$$ \begin{aligned} P(\text{Suhu}=38.5 \mid \text{Flu}) &= \frac{1}{\sqrt{2 \pi (0.5720)}} \exp\left(-\frac{(38.5 - 37.8000)^2}{2(0.5720)}\right) \ &= \frac{1}{\sqrt{3.5940}} \exp\left(-\frac{(0.7000)^2}{1.1440}\right) = \frac{1}{1.8960} \exp\left(-\frac{0.4900}{1.1440}\right) \ &= 0.5274 \times \exp(-0.4283) \approx 0.3437 \end{aligned} $$

Untuk Oksigen = 92:

$$ \begin{aligned} P(\text{Oksigen}=92 \mid \text{Flu}) &= \frac{1}{\sqrt{2 \pi (2.1600)}} \exp\left(-\frac{(92 - 96.8000)^2}{2(2.1600)}\right) \ &= \frac{1}{\sqrt{13.5700}} \exp\left(-\frac{(-4.8000)^2}{4.3200}\right) = \frac{1}{3.6840} \exp\left(-\frac{23.0400}{4.3200}\right) \ &= 0.2715 \times \exp(-5.3333) \approx 0.001311 \end{aligned} $$

3.3 Likelihood untuk Kelas Covid ($\mu = 38.0571$, $\sigma^2 = 1.2139$)

Untuk Suhu = 38.5:

$$ \begin{aligned} P(\text{Suhu}=38.5 \mid \text{Covid}) &= \frac{1}{\sqrt{2 \pi (1.2139)}} \exp\left(-\frac{(38.5 - 38.0571)^2}{2(1.2139)}\right) \ &= \frac{1}{\sqrt{7.6279}} \exp\left(-\frac{(0.4429)^2}{2.4278}\right) = \frac{1}{2.7619} \exp\left(-\frac{0.1962}{2.4278}\right) \ &= 0.3620 \times \exp(-0.0808) \approx 0.3340 \end{aligned} $$

Untuk Oksigen = 92:

$$ \begin{aligned} P(\text{Oksigen}=92 \mid \text{Covid}) &= \frac{1}{\sqrt{2 \pi (4.9796)}} \exp\left(-\frac{(92 - 88.1429)^2}{2(4.9796)}\right) \ &= \frac{1}{\sqrt{31.2870}} \exp\left(-\frac{(3.8571)^2}{9.9592}\right) = \frac{1}{5.5935} \exp\left(-\frac{14.8772}{9.9592}\right) \ &= 0.1788 \times \exp(-1.4939) \approx 0.0401 \end{aligned} $$

Langkah 4: Hitung Skor Posterior (Tanpa Normalisasi)

Rumus Skor

$$ \text{Skor}(C) = P(C) \times P(\text{Suhu} \mid C) \times P(\text{Oksigen} \mid C) $$

Skor untuk Kelas Sehat

$$ \text{Skor(Sehat)} = 0.1500 \times (2.261 \times 10^{-12}) \times 0.0333 \approx 1.128 \times 10^{-14} $$

Skor untuk Kelas Flu

$$ \text{Skor(Flu)} = 0.5000 \times 0.3437 \times 0.001311 = 0.5000 \times 0.0004506 = 0.0002253 $$

Skor untuk Kelas Covid

$$ \begin{aligned} \text{Skor(Covid)} &= 0.3500 \times 0.3340 \times 0.0401 \ &= 0.3500 \times 0.013393 = 0.004687 \end{aligned} $$

Langkah 5: Normalisasi dan Keputusan Akhir

Total Skor

$$ \text{Total} = 1.128 \times 10^{-14} + 0.0002253 + 0.004687 = 0.0049123 $$

Probabilitas Normalisasi

$$ P(\text{Sehat} \mid X) = \frac{1.128 \times 10^{-14}}{0.0049123} \approx 2.30 \times 10^{-12} \quad (\approx 0\%) $$

$$ P(\text{Flu} \mid X) = \frac{0.0002253}{0.0049123} = 0.0459 \quad (4.59\%) $$

$$ P(\text{Covid} \mid X) = \frac{0.004687}{0.0049123} = 0.9541 \quad (95.41\%) $$

Tabel Hasil Prediksi

KelasSkor AwalProbabilitasPersentase
Sehat$1{,}13 \times 10^{-14}$~0.0000~0.00%
Flu0.00022530.04594.59%
Covid0.0046870.954195.41%

Kesimpulan Prediksi

Keputusan: Pasien tersebut paling mungkin terdiagnosis Covid-19 dengan probabilitas 95.41%.

Interpretasi Klinis: Hasil ini sangat kuat karena:

  1. Suhu tubuh pasien (38.5°C) paling mendekati distribusi suhu pasien Covid ($\mu = 38.06$°C) dibandingkan Flu ($\mu = 37.80$°C) maupun Sehat ($\mu = 36.90$°C).
  2. Kadar oksigen pasien (92%) sangat dekat dengan mean oksigen pasien Covid (88.14%) dan sangat jauh dari mean oksigen pasien Flu (96.80%) dan Sehat (96.00%).
  3. Kombinasi demam ringan-sedang dengan hipoksia ringan (oksigen 92%) adalah pola khas untuk infeksi Covid-19.

Diskusi dan Analisis Kritis

Analisis Hasil

  1. Dominasi Likelihood: Meskipun probabilitas prior Flu (50%) lebih tinggi dari Covid (35%), nilai likelihood dari fitur numerik sangat mendominasi hasil akhir. Hal ini menunjukkan bahwa dalam kasus ini, gejala objektif (suhu dan oksigen) lebih informatif daripada distribusi dasar populasi.

  2. Pengaruh Varians: Perhatikan bahwa varians suhu pada kelas Sehat sangat kecil (0.0467). Akibatnya, nilai suhu 38.5°C yang jauh dari mean 36.9°C menghasilkan probabilitas yang sangat kecil ($10^{-12}$), secara efektif “membunuh” kemungkinan diagnosis Sehat.

  3. Interpretasi PDF vs Probabilitas: Nilai PDF bisa lebih besar dari 1 (misalnya pada distribusi dengan varians kecil). Nilai ini bukan probabilitas riil, melainkan densitas. Yang penting adalah perbandingan relatif antar kelas.

Perbandingan dengan Categorical Naive Bayes

AspekCategorical Naive BayesGaussian Naive Bayes
Tipe DataKategorikal / DiskritNumerik Kontinu
PerhitunganFrekuensi + Laplace SmoothingMean + Varians + PDF
Zero-FrequencyPerlu Laplace SmoothingTidak ada masalah
SensitivitasTerhadap data langkaTerhadap outlier
Contoh FiturJenis kelamin, warnaSuhu, berat badan, waktu

Kesimpulan

Implementasi Gaussian Naive Bayes untuk klasifikasi diagnosis penyakit berdasarkan data numerik kontinu menunjukkan bahwa algoritma ini sangat efektif untuk tipe data seperti suhu tubuh dan kadar oksigen. Analisis terhadap dataset terbatas yang terdiri dari 20 sampel pasien berhasil mengidentifikasi Covid-19 sebagai diagnosis paling probable (95.41%) untuk kasus uji dengan gejala suhu 38.5°C dan oksigen 92%.

Keunggulan utama Gaussian Naive Bayes terletak pada kemampuannya menangani fitur numerik secara alami tanpa perlu proses diskretisasi yang dapat menghilangkan informasi. Namun, kelemahan utamanya adalah asumsi kuat bahwa setiap fitur mengikuti distribusi Gaussian, serta sensitivitas terhadap outlier yang dapat menggeser parameter mean dan varians secara signifikan.

Penerapan Probability Density Function (PDF) terbukti kritis dalam menghitung likelihood, terutama ketika varians suatu fitur sangat kecil (seperti suhu pada kelas Sehat). Hasil klasifikasi menunjukkan bahwa kombinasi demam (suhu 38.5°C) dan hipoksia ringan (oksigen 92%) merupakan indikator kuat untuk Covid-19, bahkan ketika probabilitas prior Flu lebih tinggi.

Referensi

Sihombing, J. (2021). Klasifikasi data antroprometri individu menggunakan algoritma Naïve Bayes Classifier. BIOS Jurnal Teknologi Informasi Dan Rekayasa Komputer, 2(1), 1–10.

Doka, M. M., Kristina, K., & Hendro, H. (2025, October 13). APLIKASI DETEKSI STATUS STUNTING PADA BALITA MENGGUNAKAN GAUSSIAN NAIVE BAYES BERBASIS WEBSITE.

Dina dan Yunardi. (2022). Data Mining dan Machine Learning dengan Orange3 Tutorial dan Aplikasinya. Airlangga University Press.