Misalkan kita memiliki suatu histogram yang menyatakan hubungan dengan dua kategori dan .
Dalam mendesain suatu algoritma pengklasifikasi berdasarkan data ini, kita ingin mendapatkan , atau peluang dengan syarat bahwa telah terjadi. Disinilah kegunaan Bayes' Theorem.
Bayes' Theorem dapat dinyatakan secara matematis dalam persamaan
atau dalam kasus yang ini,
dapat kita peroleh dengan menghitung banyak yang berada di dan membaginya dengan jumlah keseluruhan .
Dengan menggunakan persamaan , kita dapat menggambar grafik .
Disinilah letak pentingnya Bayes' Theorem. Kita dapat menghitung hal yang kita inginkan, seperti , menggunakan hal yang lebih mudah dihitung, seperti .
Kita juga dapat mencari kelas dimana
untuk semua kelas . Hasil ini sering juga disebut sebagai maximum a posteriori atau hipotesis MAP.
Bayes Classifier, atau biasa disebut juga sebagai Bayes Optimal Classifier, merupakan algoritma yag dapat digunakan untuk menyelesaikan permasalahan klasifikasi.
Bayes Classifier bekerja dengan cara menempatkan setiap observasi ke klasifikasi yang paling mungkin tergantung pada prediktornya. Secara matematis, Bayes Classifier bisa dinyatakan dengan
dengan merupakan vektor fitur data.
Perlu diperhatikan bahwa klasifikasi yang paling mungkin bisa saja berbeda dengan hipotesis MAP.
Sebagai contoh, misalkan sebuah tes medis ada tiga kemungkinan kelas, dan kita dapatkan hasil untuk tes tersebut sebagai berikut :
Hipotesis MAP dari hasil tersebut adalah . Misal akan dilaksanakan suatu prosedur medis jika hasilnya merupakan dan tidak dilaksanakan jika hasilnya atau . Pada kasus ini, klasifikasi yang paling mungkin adalah untuk tidak dilaksanakan prosedur medis, karena
dan
Secara rata-rata, tidak ada algoritma classifier dengan data yang sama bisa lebih unggul dari Bayes Classifier. Sayangnya, perhitungan Bayes Classifier kurang mungkin dilakukan di dunia nyata karena kita tidak tahu distribusi hubungan antara data dan klasifikasi. Oleh karena itu, dilakukan estimasi seperti di algoritma naïve bayes classifier dan K-nearest neighbour.
Dari Bayes Classifier, kita ingin memaksimalkan
untuk data . karena kita hanya tertarik dengan memaksimalkan , kita dapat mengabaikan , sehingga kita hanya perlu memaksimalkan
Di dunia nyata, menghitung akan sangat sulit. Oleh karena itu, di naïve bayes classifier kita mengestimasikanya dengan berasumsi bahwa masing-masing fitur di independen dengan syarat atau secara matematis,
Kita dapat men-subtitusi hasil ini ke persamaan menghasilkan
python
Misalkan ada data
deadline males sibuk nubes 0 dekat ya tidak tidak 1 jauh tidak ya tidak 2 dekat tidak tidak ya 3 dekat tidak ya ya 4 jauh ya ya tidak 5 jauh ya tidak ya 6 jauh tidak tidak ya
dan kita ingin memprediksi hasil dari dekat, ya, ya
menggunakan naïve Bayes.
Berikut merupakan implementasi naïve Bayes di python
.
import pandas as pd def Pcon(df, cat_a, a, cat_b, b): // df : data // cat_a : categori data a // cat_b : categori data b // a : categori data a // b : categori data b // Mengasilkan P(a|b) return sum(df[df[cat_b] == b][cat_a] == a)/sum(df[cat_b] == b) def P(df, cat, n): // df : data // cat : categori data a // n : categori data a // Menghasilkan P(n) return sum(df[cat] == n) / df[cat].count() def naiveBayes(df, x): for res in df['nubes'].unique(): prob = P(df, 'nubes', res) for colNum in range(len(x)): conProb = Pcon(df, df.columns[colNum], x[colNum], 'nubes', res) prob *= conProb print(res, prob) df = pd.read_csv("./data.csv") naiveBayes(df, ['dekat', 'ya', 'ya'])
Menjalankan kode ini akan menghasilkan
tidak 0.06349206349206349 ya 0.017857142857142856
Berdasarkan hasil ini, didapatkan bahwa dekat, ya, ya
diklasifikasi sebagai tidak
.