Algoritma Naive Bayes dalam Pembelajaran Mesin

⚡ Ringkasan Cerdas

Naive Bayes adalah algoritma klasifikasi probabilistik terawasi yang dibangun berdasarkan teorema Bayes, dengan asumsi setiap fitur berkontribusi secara independen. Teorinya, sebuah lokakarya yang telah dikerjakanping Sebagai contoh, tiga varian model, manfaat, keterbatasan, dan aplikasi di dunia nyata dibahas di bawah ini.

  • 🔘 Definisi: Sebuah pengklasifikasi yang memberi label pada sebuah data dengan membandingkan probabilitas posterior dari setiap kelas kandidat.
  • ☑️ Asumsi yang naif: Setiap fitur diperlakukan sebagai independen secara bersyarat, yang jarang terjadi namun tetap memberikan prediksi yang baik.
  • Rumus Bayes: P(A|B) sama dengan P(B|A) dikalikan dengan P(A), dibagi dengan P(B).
  • 🧪 Contoh yang dikerjakan: Kombinasi antara hari yang tepat, diskon, dan pengiriman gratis memberikan kemungkinan pembelian sebesar 97.33 persen.
  • Tiga varian: Distribusi multinomial untuk jumlah kata, distribusi Bernoulli untuk keberadaan kata, dan distribusi Gaussian untuk nilai kontinu.
  • ⚠️ Keterbatasan: Fitur yang berkorelasi diabaikan, sehingga pohon keputusan atau SVM lebih cocok untuk data dependen.

Algoritma Naive Bayes dalam Pembelajaran Mesin

Algoritma Pengklasifikasi Naive Bayes

Pengklasifikasi adalah algoritma pembelajaran mesin yang mengelompokkan data ke dalam satu atau lebih dari sekumpulan "kelas". Pengklasifikasi email adalah salah satu contoh yang familiar: ia memindai setiap pesan yang masuk dan melampirkan label kelas Spam atau Bukan Spam.

Pengklasifikasi Naive Bayes dalam pembelajaran mesin adalah sebuah pembelajaran yang diawasi Algoritma yang digunakan untuk tugas klasifikasi.

Diagram di bawah ini menguraikan alur tersebut.

Pengklasifikasi Naive Bayes memberikan label kelas pada catatan masukan.

Naive Bayes digunakan untuk memecahkan masalah klasifikasi. Ini memprediksi berdasarkan probabilitas suatu objek. Naive Bayes didasarkan pada Teorema Bayes dan sebagian besar digunakan untuk klasifikasi teks. Naive Bayes adalah algoritma klasifikasi probabilistik yang mudah diimplementasikan dan cepat untuk dilatih.

Karena pengklasifikasi Naive Bayes didasarkan pada teorema Bayes, ia juga dikenal sebagai pengklasifikasi probabilitas. Ia memprediksi berdasarkan probabilitas suatu item.

Mengapa Disebut Naive Bayes?

Nama Naive Bayes terdiri dari dua bagian: Naive dan Bayes. Mengapa naive? Algoritma ini mengabaikan urutan kemunculan fitur, sehingga "Anda adalah" dan "Apakah Anda" terlihat identik baginya. Algoritma ini juga mengasumsikan bahwa tidak ada fitur yang memengaruhi fitur lainnya. Untuk mengenali buah apel, Anda menggunakan warna merah, bentuk bulat, dan rasa manis, dan algoritma memperlakukan setiap petunjuk tersebut sebagai bukti yang terpisah dan independen.

  • Pengklasifikasi Naive Bayes mengasumsikan bahwa fitur-fitur tersebut saling independen. Karena hal ini jarang terjadi pada data kehidupan nyata, pengklasifikasi ini disebut naif.
  • Algoritma klasifikasi ini didasarkan pada teorema Bayes, sehingga dikenal sebagai Pengklasifikasi Naive Bayes.

Teorema Naive Bayes

Teorema Bayes digunakan untuk menemukan probabilitas suatu hipotesis dengan probabilitas bersyarat yang bergantung pada pengetahuan sebelumnya. Teorema ini dinamai menurut Thomas Bayes. Pengklasifikasi Naive Bayes bekerja berdasarkan prinsip probabilitas bersyarat, seperti yang diberikan oleh teorema Bayes.

Untuk memahami teorema Bayes, mari kita lihat contoh sederhana pengklasifikasi Naive Bayes yaitu melempar dua koin. Kita bisa mendapatkan ruang sampel ini dengan melempar dua koin: {HH, HT, TH, TT}. Jadi, probabilitas kejadian-kejadian ini adalah:

  • Mendapatkan dua kepala = 1/4
  • Setidaknya satu ekor = 3/4
  • Koin kedua menjadi kepala mengingat koin pertama adalah ekor = 1/2
  • Mendapatkan dua kepala diberi koin pertama adalah kepala = 1/2

Teorema Bayes menghitung probabilitas terjadinya suatu peristiwa berdasarkan probabilitas peristiwa lain yang telah terjadi. Rumus teorema Bayes diberikan sebagai berikut:

P(A|B) = (P(B|A) * P(A)) / P(B)

P(A|B) adalah probabilitas terjadinya peristiwa A ketika peristiwa B telah terjadi. Probabilitas P(B) tidak boleh nol.

  • Anda perlu mencari peluang kejadian A, yang diberikan jika kejadian B (bukti) benar.
  • P(A) adalah probabilitas awal A, yaitu probabilitas kejadian sebelum bukti apa pun diamati. Di sini, kejadian B adalah nilai dari suatu kejadian yang tidak diketahui.
  • P(A|B) adalah probabilitas posterior dari kejadian A, yaitu probabilitas A setelah melihat bukti B.

Contoh Penerapan Pengklasifikasi Naive Bayes

Cara tercepat untuk melihat cara kerja rumus tersebut adalah dengan menjalankannya secara manual.

Mari kita ambil contoh sebuah toko.ping Untuk memahami cara kerja Bayes Naive Classifier. Dalam dataset ini, terdapat sampel dataset kecil sebanyak 30 baris untuk contoh ini.

Dataset

Toko sampelping Dataset berisi 30 baris dengan kolom Hari, Diskon, Gratis Ongkir, dan Beli.

Masalahnya adalah memprediksi apakah seseorang akan membeli suatu produk pada kombinasi Hari, Diskon, dan Pengiriman Gratis tertentu menggunakan Teorema Naive Bayes.

Tabel frekuensi yang menghitung hasil Beli dan Tidak Beli untuk setiap nilai atribut.

Langkah 1) Kami akan membuat tabel frekuensi untuk setiap atribut menggunakan jenis input yang disebutkan dalam kumpulan data, seperti hari, diskon, dan pengiriman gratis.

Tabel frekuensi untuk atribut Hari, Diskon, dan Pengiriman Gratis

Misalkan kejadian 'Beli' dilambangkan sebagai 'A', dan variabel independen, yaitu 'Diskon', 'Gratis ongkos kirim', dan 'Hari', dilambangkan sebagai 'B'. Kita akan menggunakan kejadian dan variabel ini untuk menerapkan teorema Bayes.

Langkah 2) Sekarang mari kita hitung tabel Kemungkinan satu per satu.

Tabel kemungkinan untuk atribut Hari terhadap opsi Beli dan Tidak Beli

Contoh 1:

Berdasarkan tabel kemungkinan ini, kami akan menghitung probabilitas bersyarat seperti di bawah ini.

P(A) = P(No Buy) = 6/30 = 0.2
P(B) = P(Weekday) = 11/30 = 0.37
P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33

Dan, cari P(A/B) menggunakan teorema Bayes,

P(A/B)
= P(No Buy / Weekday)
= P(Weekday / No Buy) * P(No Buy) / P(Weekday)
= (2/6 * 6/30) / (11/30)
= 0.1818

Demikian pula jika A adalah Beli, maka

= P(Buy / Weekday)
= P(Weekday / Buy) * P(Buy) / P(Weekday)
= (9/24 * 24/30) / (11/30)
= 0.8181

Catatan: Karena P(Beli | Hari Kerja) lebih besar daripada P(Tidak Beli | Hari Kerja), maka kita dapat menyimpulkan bahwa kemungkinan besar pelanggan akan membeli produk tersebut pada Hari Kerja.

Langkah 3) Demikian pula, kita dapat menghitung kemungkinan terjadinya suatu peristiwa berdasarkan ketiga variabel tersebut. Sekarang kita akan menghitung tabel Kemungkinan untuk ketiga variabel menggunakan tabel frekuensi di atas.

Tabel kemungkinan untuk Hari, Diskon, dan Pengiriman Gratis digunakan dalam perhitungan gabungan.

Contoh 2:

Sekarang, dengan menggunakan ketiga tabel Kemungkinan ini, kami akan menghitung apakah pelanggan kemungkinan akan melakukan pembelian berdasarkan kombinasi spesifik 'Hari', 'Diskon', dan 'Gratis ongkos kirim'.

Di sini, mari kita ambil kombinasi faktor-faktor berikut:

  • Hari = Hari Libur
  • Diskon = Ya
  • Pengiriman Gratis = Ya

Kapan, A = Beli

Hitunglah probabilitas bersyarat pembelian pada kombinasi hari, diskon, dan pengiriman gratis berikut.

Dimana B adalah:

  • Hari = Hari Libur
  • Diskon = Ya
  • Pengiriman Gratis = Ya

Dan A = Beli

Oleh karena itu,

= P(A/B)
= P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30)
= 0.986

Kapan, A = Tidak Ada Beli

Demikian pula, Hitunglah probabilitas bersyarat pembelian pada kombinasi hari, diskon, dan pengiriman gratis berikut.

Dimana B adalah:

  • Hari = Hari Libur
  • Diskon = Ya
  • Pengiriman Gratis = Ya

Dan A = Tidak Ada Beli

Oleh karena itu,

= P(A/B)
= P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30)
= 0.027

Langkah 4) Karenanya,

Probabilitas pembelian = 0.986

Probabilitas tidak ada pembelian = 0.027

Terakhir, kami memiliki probabilitas bersyarat untuk membeli pada hari ini. Sekarang mari kita menggeneralisasikan probabilitas-probabilitas ini untuk memperoleh Kemungkinan terjadinya peristiwa-peristiwa tersebut.

  • Jumlah probabilitas = 0.986 + 0.027 = 1.013
  • Kemungkinan pembelian = 0.986 / 1.013 = 97.33 %
  • Kemungkinan Tidak Ada Pembelian = 0.027 / 1.013 = 2.67 %

Kedua skor tersebut jika dijumlahkan menjadi 1.013, bukan 1, karena asumsi independensi membuat setiap estimasi bersifat perkiraan, sehingga membagi dengan total akan mengubah skalanya menjadi persentase.

Perhatikan bahwa 97.33% lebih besar dari 2.67%. Dapat disimpulkan bahwa rata-rata pelanggan akan membeli pada hari libur dengan diskon dan pengiriman gratis.

Jenis-jenis Model Naive Bayes

Ada banyak jenis Pengklasifikasi Naive Bayes. Di sini kita telah membahas pengklasifikasi Multinomial, Bernoulli dan Gaussian Naive Bayes.

Varian Jenis fitur Penggunaan khas
Multinomial Jumlah kata Klasifikasi topik dan dokumen
Bernoulli Bendera biner ada atau tidak ada Teks pendek dan penyaringan spam
Gaussian Nilai numerik kontinu Pembacaan dan pengukuran sensor

1. Multinomial Naif Bayes

Model Naive Bayes jenis ini digunakan untuk masalah klasifikasi dokumen. Ia bekerja dengan fitur yang mewakili frekuensi kata dalam dokumen. Pengklasifikasi mempertimbangkan kemunculan dan jumlah kata untuk menentukan kemungkinan suatu dokumen termasuk dalam kategori tertentu, seperti olahraga, politik, atau teknologi.

2. Bernoulli Naif Bayes

Hal ini mirip dengan Naive Bayes multinomial. Pengklasifikasi Bernoulli Naive Bayes digunakan untuk tugas klasifikasi dokumen. Namun, ini menggunakan prediktor boolean. Ini mewakili apakah suatu kata ada atau tidak dan hanya mengambil nilai Ya atau Tidak. Pengklasifikasi menghitung probabilitas berdasarkan apakah sebuah kata muncul dalam teks atau tidak.

3.Gaussian Naif Bayes

Pengklasifikasi ini digunakan jika nilai kontinu tetapi bukan nilai diskrit. Pengklasifikasi ini menghitung probabilitas menggunakan parameter Gaussian distribusi, yaitu mean dan varians.

Kurva lonceng Gaussian digunakan untuk memodelkan fitur kontinu dalam Naive Bayes.

Rumus probabilitas bersyarat berubah menjadi,

Rumus probabilitas bersyarat Gaussian Naive Bayes menggunakan nilai rata-rata dan varians.

The scikit-belajar library menambahkan dua varian lagi: Complement Naive Bayes untuk teks yang tidak seimbang dan Categorical Naive Bayes untuk kategori diskrit.

Manfaat dan Keterbatasan Pengklasifikasi Naive Bayes

Terdapat berbagai kelebihan dan kekurangan algoritma Naive Bayes dalam pembelajaran mesin.

Manfaat Pengklasifikasi Naive Bayes

  • Kesederhanaan dan Efisiensi: Naive Bayes sederhana dan mudah untuk dilatih dan diterapkan. Ini efisien karena biaya komputasi yang rendah. Itu dapat menangani kumpulan data besar secara efisien.
  • Pelatihan dan Prediksi Cepat: Naive Bayes tidak memerlukan banyak data pelatihan karena adanya independensi antar fitur. Metode ini dapat memprediksi dengan cepat setelah model dilatih.
  • Skalabilitas: Naive Bayes dapat menangani kumpulan data berdimensi tinggi dengan banyak fitur. Ia berkinerja baik bahkan ketika jumlah fitur lebih banyak daripada jumlah contoh pelatihan. Ini berskala dengan jumlah titik data dan prediktor. Ini menangani data kontinu dan diskrit.
  • Kekokohan terhadap Fitur yang Tidak Relevan: Itu tidak sensitif terhadap fitur yang tidak relevan.
  • Bekerja dengan baik dengan Set Pelatihan Kecil: Naive Bayes dapat memberikan hasil yang wajar bahkan dengan data pelatihan yang terbatas. Algoritma ini dapat menangani situasi di mana jumlah instance pelatihan sedikit.

Batasan Pengklasifikasi Naive Bayes

Naif Bayes masuk Mesin belajar mengasumsikan bahwa semua fitur tidak bergantung satu sama lain. Jadi, ia tidak dapat mempelajari hubungan antara berbagai fitur dalam data. Ia memperlakukan setiap fitur seolah-olah tidak ada hubungannya dengan fitur lainnya.

Peringatan kedua: probabilitas kelas yang dilaporkannya kurang akurat, sehingga angka kepercayaan yang terlampir pada prediksi bukanlah probabilitas yang dapat diandalkan.

Untuk mengatasi masalah ini, Anda bisa menggunakan Pohon Keputusan, Random Forests, Support Vector Machines (SVM), Jaringan Saraf Tiruan dll. Algoritma-algoritma ini memiliki kemampuan untuk mempelajari hubungan dan ketergantungan yang kompleks antar fitur dalam data. Sehingga dapat memprediksi hasil yang lebih akurat.

Penerapan Pengklasifikasi Naive Bayes

Karena algoritme ini cepat dan efisien, Anda dapat menggunakannya untuk membuat prediksi secara real-time.

Deteksi Spam

Layanan email (Seperti GmailAlgoritma ini digunakan untuk menentukan apakah suatu email termasuk spam. Algoritma ini sangat baik untuk penyaringan spam.

Analisis Sentimen

Itu dapat mengklasifikasikan teks menjadi positif, negatif, atau netral berdasarkan fitur seperti pilihan kata, struktur kalimat, dan konteks. Ia menemukan aplikasi dalam pemantauan media sosial, ulasan pelanggan, dan riset pasar.

Klasifikasi Dokumen

Ini dapat mengklasifikasikan dokumen ke dalam kategori seperti olahraga, politik, teknologi, atau keuangan berdasarkan frekuensi atau keberadaan kata atau fitur tertentu dalam dokumen.

Sistem Rekomendasi

Itu dapat menganalisis preferensi pengguna, data historis, dan fitur item untuk memprediksi minat atau preferensi pengguna untuk merekomendasikan produk, film, atau artikel.

Algoritma pengklasifikasi ini juga digunakan dalam Pengenalan Wajah, Prediksi Cuaca, Diagnosis Medis, dan Toko.ping, Klasifikasi Berita, dll. Anda dapat menerapkan Naive Bayes di Python, di mana modul sklearn.naive_bayes menyediakan setiap varian yang dijelaskan di atas.

Pertanyaan Umum Demo Slot

Impor varian yang Anda butuhkan dari sklearn.naive_bayesPisahkan data dengan train_test_split, lalu panggil fit() pada baris pelatihan dan predict() pada baris pengujian. GaussianNB cocok untuk fitur kontinu, sedangkan MultinomialNB dan BernoulliNB menangani jumlah teks dan flag kata biner.

Jika suatu kategori tidak pernah muncul bersama suatu kelas dalam pelatihan, probabilitas bersyaratnya menjadi nol dan menghapus seluruh hasil perkalian. Penghalusan Laplace menambahkan satu ke setiap hitungan sehingga tidak ada yang runtuh menjadi nol. Scikit-learn mengekspos ini sebagai parameter alfa.

Tidak ada yang menang mutlak. Naive Bayes dilatih lebih cepat, membutuhkan lebih sedikit data, dan mampu menangani teks berdimensi tinggi. Regresi logistik memodelkan fitur-fitur yang berkorelasi dan menghasilkan probabilitas yang lebih akurat. Pada dataset teks kecil, Naive Bayes seringkali unggul; dengan lebih banyak data, regresi logistik mengunggulinya.

Pisahkan satu set data uji dan bandingkan prediksi dengan label sebenarnya menggunakan sebuah matriks kebingunganKemudian, tentukan presisi, recall, dan F1. Akurasi saja menyesatkan pada data yang tidak seimbang seperti spam, di mana satu kelas mendominasi sampel.

Ubah teks menjadi huruf kecil, hilangkan tanda baca, hapus kata-kata penghenti (stop words), dan secara opsional lakukan stemming pada token, lalu ubah setiap dokumen menjadi vektor hitungan atau TF-IDF. Varian Bernoulli membutuhkan flag kehadiran biner, bukan hitungan. Terapkan langkah-langkah yang identik pada saat pelatihan dan prediksi.

Naive Bayes adalah jaringan Bayesian paling sederhana: satu node kelas dengan setiap fitur yang terhubung langsung padanya dan tidak ada tautan antar fitur. Jaringan Bayesian umum memungkinkan Anda untuk menggambar tepi ketergantungan tersebut, sehingga memodelkan korelasi yang sengaja diabaikan oleh Naive Bayes.

Alat pembelajaran mesin otomatis mencari nilai penghalusan, representasi fitur, dan pilihan varian, kemudian memberi peringkat kandidat berdasarkan skor validasi silang. Hal ini menghilangkan sebagian besar uji coba manual — Anda tetap memutuskan metrik mana yang penting dan apakah pemenangnya berperilaku masuk akal.

Kopilot GitHub Skrip ini dengan cepat menyusun kode dasar—impor, pembagian data latih dan uji, serta panggilan untuk menyesuaikan dan memprediksi—dari komentar singkat. Selalu periksa varian yang dipilih dan kode evaluasinya, karena skrip yang masuk akal pun masih dapat melatih model yang salah.

Ringkaslah postingan ini dengan: