Naive Bayes
Naive Bayes¶
Pengertian¶
Naive Bayes adalah salah satu algoritma klasifikasi yang paling sederhana dan paling cepat. Algoritma ini berdasarkan pada teorema Bayes dengan asumsi independensi antar variabel. Algoritma ini sangat cepat karena hanya melakukan perhitungan pada data yang ada saja, tidak memerlukan proses training. Algoritma ini sangat cocok untuk digunakan pada data yang memiliki banyak atribut, karena algoritma ini tidak memerlukan proses training.
Keunggulan NB adalah efektif dan cepat sehingga NB bisa digunakan pada aplikasi spam filtering dan deteksi anomali di jaringan komputer.
Cara Kerja NB¶
NB adalah sekumpulan algoritma klasifikasi yuang dibangun berdasarkan Teori Bayes (Thomas Bayes, seorang ahli matematika dari Inggris di abad ke-18). Prinsipnya adalah menghitung seberapa tinggi kemubgkinan satu example dalam suatu observasi untuk masuk ke dalam suatu kelas, dengan memanfaatkan training dataset untuk menghitung kemungkinan setiap kelas berdasarkan nilai-nilai feature di dalamnya.
Dalam Statistik teori ini dipakai untuk menjelaskan conditional probability, yaitu kemungkinan munculnya suatu kejadian A bila suatu kejadian B muncul, karena kejadian A bergantung pada kejadian B maka disebut conditional atau bersyarat.
Sebagai contoh membuat model prediksi SMS termasuk pesan sampah atau bukan. Dalam kasus ini, feature yang digunakan adalah kata-kata yang ada di dalam SMS. Dengan menggunakan teori Bayes, kita bisa menghitung kemungkinan SMS termasuk pesan sampah atau bukan dengan menghitung kemungkinan setiap kata-kata yang ada di dalam SMS termasuk pesan sampah atau bukan. Pesan sampah kebanyakan berisi kata "kredit" katakanlah jumlahnya 10% dari seluruh pesan SMS, lalu ditulis sebagai P("kredit") = 0,1. Lalu dari pengamatan sebelumnya diperoleh misalnya 30% dari seluruh pesan adalah pesan sampah, sehinggga ditulis P(sampah) = 0,3. Apabila keduanya digabungkan maka conditional propability dapat dihitung nilainya, yang menunjukkan kemungkinan SMS dianggap sampah jika mengandung kata "kredit". Secara matematis dapat ditulis sebagai berikut:
\(P(sampah|"kredit") = \frac{P("kredit"|sampah)P(sampah)}{P("kredit")}\)
Apabila posterior propability melampaui suatu ambang batas, maka SMS dianggap sampah. Misalnya ambang batasnya adalah 0,5, maka SMS dianggap sampah apabila \(P(sampah|"kredit") > 0,5\).
Membuat Model NB¶
Langkah pertama dalam membuat model NB adalah mengubah data yang ada menjadi suatu tabel frekuensi
| Berisi Kata Kredit | |||
|---|---|---|---|
| Pesan SMS | Ada | Tidak Ada | Jumlah |
| Sampah | 8 | 22 | 30 |
| Bukan Sampah | 2 | 68 | 30 |
| Jumlah | 10 | 90 | 100 |
Selanjutnya membuat tabel kemungkinan berdasarkan tabel frekuensi untuk mengukur likehood atau kemungkinan kemunculan kata "Kredit"
| Berisi Kata Kredit | ||||
|---|---|---|---|---|
| Pesan SMS | Ada | Tidak Ada | Jumlah | Kemungkinan |
| Sampah | 8/30=0,27 | 22/30=0,73 | 30 | 0,3 |
| Bukan Sampah | 2/70=0,03 | 68/70=0,97 | 70 | 0.7 |
| Kemungkinan | 10/100=0,1 | 90/100=0,9 |
P("Kredit"|Sampah) = 0,27
P(Sampah) = 0,3
Kemungkinan kata "kredit" muncul di sluruh pesan SMS yaitu
P("kredit") = 0,1
Dengan menggunakan posterior probability maka dapat dihitung nilai kemungkinan SMS dianggap sampah jika mengandung kata "kredit" yaitu P(Sampah|"kredit") = 0,27 * 0,3 / 0,1 = 0,81
Nilainya posterior probability yang tinggi sehingga bisa menentukan pesan apapun yang berisi kata "kredit" adalah pasti pesan sampah.
Rumus Conditional Probability¶
Secara matematis:
\(P(A|B) = \frac{P(B|A)P(A)}{P(B)} = \frac{P(B \cap A)}{P(B)}\)
Dengan:
P(A) : kemungkinan A terjadi P(A|B) : kemungkinan A terjadi jika B terjadi P(B) : kemungkinan B terjadi P(B|A) : kemungkinan B terjadi jika A terjadi P(B ∩ A) : kemungkinan B dan A terjadi
Scikit-learn menyediakan pilihan untuk membuat model NB dengan menggunakan metode Gaussian, Multinomial dan Bernoulli. Metode Gaussian digunakan untuk data yang berupa angka, sedangkan metode Multinomial digunakan untuk data yang berupa kata-kata dan metode Bernoulli digunakan untuk data yang berupa kata-kata yang bernilai 0 atau 1.
kelebihan dan kekurangan¶
Kelebihan NB adalah mudah untuk diimplementasikan dan memiliki performa yang baik. Namun, NB memiliki kekurangan yaitu tidak dapat mengklasifikasikan data yang tidak terdapat dalam data latih. Selain itu, NB juga tidak dapat mengklasifikasikan data yang memiliki nilai yang sama.