Algoritma Klasifikasi - Naïve Bayes
Pengantar Algoritma Naïve Bayes
Algoritma Naïve Bayes adalah teknik klasifikasi yang didasarkan pada penerapan teorema Bayes dengan asumsi kuat bahwa semua prediktor tidak bergantung satu sama lain. Dengan kata sederhana, asumsinya adalah bahwa keberadaan fitur di kelas tidak bergantung pada keberadaan fitur lain di kelas yang sama. Misalnya, ponsel dapat dianggap pintar jika memiliki layar sentuh, fasilitas internet, kamera yang bagus, dll. Meskipun semua fitur ini bergantung satu sama lain, fitur tersebut berkontribusi secara independen terhadap kemungkinan bahwa ponsel tersebut adalah ponsel pintar.
Dalam klasifikasi Bayesian, minat utama adalah menemukan probabilitas posterior, yaitu probabilitas label yang diberikan beberapa fitur yang diamati, (|). Dengan bantuan teorema Bayes, kita dapat mengungkapkannya dalam bentuk kuantitatif sebagai berikut -
$$ P (L | fitur) = \ frac {P (L) P (fitur | L)} {()} $$Di sini, (|) adalah probabilitas posterior kelas.
() adalah probabilitas kelas sebelumnya.
(|) adalah kemungkinan yang merupakan probabilitas kelas prediktor yang diberikan.
() adalah probabilitas prediktor sebelumnya.
Membuat model menggunakan Naïve Bayes dengan Python
Perpustakaan Python, Scikit belajar adalah perpustakaan paling berguna yang membantu kita membangun model Naïve Bayes dengan Python. Kami memiliki tiga jenis model Naïve Bayes berikut di bawah Scikit learn pustaka Python -
Gaussian Naïve Bayes
Ini adalah pengklasifikasi Naïve Bayes paling sederhana yang mengasumsikan bahwa data dari setiap label diambil dari distribusi Gaussian sederhana.
Multinomial Naïve Bayes
Pengklasifikasi Naïve Bayes berguna lainnya adalah Multinomial Naïve Bayes di mana fitur diasumsikan diambil dari distribusi Multinomial sederhana. Jenis Naïve Bayes seperti ini paling sesuai untuk fitur yang mewakili hitungan diskrit.
Bernoulli Naïve Bayes
Model penting lainnya adalah Bernoulli Naïve Bayes di mana fitur diasumsikan sebagai biner (0s dan 1s). Klasifikasi teks dengan model 'bag of words' dapat menjadi aplikasi Bernoulli Naïve Bayes.
Contoh
Bergantung pada kumpulan data kami, kami dapat memilih model Naïve Bayes yang dijelaskan di atas. Di sini, kami mengimplementasikan model Gaussian Naïve Bayes dengan Python -
Kami akan mulai dengan impor yang diperlukan sebagai berikut -
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
Sekarang, dengan menggunakan fungsi make_blobs () dari Scikit learn, kita dapat menghasilkan gumpalan titik dengan distribusi Gaussian sebagai berikut -
from sklearn.datasets import make_blobs
X, y = make_blobs(300, 2, centers=2, random_state=2, cluster_std=1.5)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='summer');
Selanjutnya, untuk menggunakan model GaussianNB, kita perlu mengimpor dan membuat objeknya sebagai berikut -
from sklearn.naive_bayes import GaussianNB
model_GBN = GaussianNB()
model_GNB.fit(X, y);
Sekarang, kita harus melakukan prediksi. Itu dapat dilakukan setelah menghasilkan beberapa data baru sebagai berikut -
rng = np.random.RandomState(0)
Xnew = [-6, -14] + [14, 18] * rng.rand(2000, 2)
ynew = model_GNB.predict(Xnew)
Selanjutnya, kami merencanakan data baru untuk menemukan batasannya -
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='summer')
lim = plt.axis()
plt.scatter(Xnew[:, 0], Xnew[:, 1], c=ynew, s=20, cmap='summer', alpha=0.1)
plt.axis(lim);
Sekarang, dengan bantuan baris kode berikut, kita dapat menemukan probabilitas posterior dari label pertama dan kedua -
yprob = model_GNB.predict_proba(Xnew)
yprob[-10:].round(3)
Keluaran
array([[0.998, 0.002],
[1. , 0. ],
[0.987, 0.013],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[0. , 1. ],
[0.986, 0.014]]
)
Pro kontra
Pro
Berikut ini adalah beberapa kelebihan menggunakan pengklasifikasi Naïve Bayes -
Klasifikasi Naïve Bayes mudah diterapkan dan cepat.
Ini akan menyatu lebih cepat daripada model diskriminatif seperti regresi logistik.
Ini membutuhkan lebih sedikit data pelatihan.
Sifatnya sangat skalabel, atau diskalakan secara linier dengan jumlah prediktor dan titik data.
Itu dapat membuat prediksi probabilistik dan dapat menangani data kontinu serta diskrit.
Algoritma klasifikasi Naïve Bayes dapat digunakan untuk masalah klasifikasi biner dan juga kelas jamak.
Kontra
Berikut ini adalah beberapa kekurangan dalam menggunakan pengklasifikasi Naïve Bayes -
Salah satu kekurangan terpenting dari klasifikasi Naïve Bayes adalah kemandirian fiturnya yang kuat karena dalam kehidupan nyata hampir tidak mungkin untuk memiliki sekumpulan fitur yang benar-benar independen satu sama lain.
Masalah lain dengan klasifikasi Naïve Bayes adalah 'frekuensi nol' yang berarti bahwa jika variabel kategorial memiliki kategori tetapi tidak diamati dalam kumpulan data pelatihan, maka model Naïve Bayes akan menetapkan probabilitas nol untuk itu dan tidak akan dapat membuat ramalan.
Aplikasi klasifikasi Naïve Bayes
Berikut ini adalah beberapa aplikasi umum klasifikasi Naïve Bayes -
Real-time prediction - Karena implementasinya yang mudah dan komputasi yang cepat, ini dapat digunakan untuk melakukan prediksi secara real-time.
Multi-class prediction - Algoritma klasifikasi Naïve Bayes dapat digunakan untuk memprediksi probabilitas posterior beberapa kelas variabel target.
Text classification- Karena fitur prediksi kelas jamak, algoritme klasifikasi Naïve Bayes sangat cocok untuk klasifikasi teks. Itulah mengapa ini juga digunakan untuk memecahkan masalah seperti pemfilteran spam dan analisis sentimen.
Recommendation system - Bersama dengan algoritme seperti pemfilteran kolaboratif, Naïve Bayes membuat sistem Rekomendasi yang dapat digunakan untuk menyaring informasi yang tidak terlihat dan untuk memprediksi cuaca yang diinginkan oleh pengguna atas sumber daya yang diberikan atau tidak.