Algoritma Naive Bayes Classifier


Dalam postingan sebelumnya, saya telah membahas sebuah metode klasifikasi yang disebut Decision Tree, dimana metode decision tree melakukan proses klasifikasi secara terstruktur membentuk pohon keputusan yang berisi alternatif-alternatif cabang dalam pemecahan masalah. Kali ini saya ingin membahas metode klasifikasi yang berbeda, dimana pemecahan masalah dilakukan dengan menggunakan peluang/probabilitas dalam ilmu statistik, yakni Naïve Bayes Classifier (NBC). Naïve Bayes Classifier merupakan metode klasifikasi yang bersumber pada teorema Bayes, yakni sebuah metode klasifikasi yang menggunakan metode probabilitas dan statistik untuk memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya.

Pada contoh kali ini, saya akan membahas penggunaan metode NBC secara singkat, agar mudah untuk dipahami. Konsep penggunaan metode ini adalah dengan mencari nilai probabilitas label / kelas dan nilai probabilitas setiap atribut / fitur sebagai data training, yang kemudian nilai probabilitas tersebut digunakan untuk memprediksi data baru yang belum memiliki label dengan cara mengalikan masing-masing nilai probabilitas atribut pada data training sesuai atribut pada data yang di uji terhadap masing-masing nilai probabilitas label / kelas, hasil perkalian pada masing-masing label kemudian dibandingkan dan diambil nilai probabilitas terbesar sebagai hasil prediksi.

Jika anda pusing memahami maksud dari konsep diatas, berikut tahapan / algoritma NBC secara lebih detail :
  • Menghitung Jumlah kelas/label
  • Menghitung nilai probabilitas setiap kelas/label
  • Menghitung nilai probabilitas pada setiap atribut berdasarkan masing-masing label
Ketiga proses diatas disebut sebagai proses training data, kemudian setelah diperoleh nilai probabilitas pada masing-masing label dan atribut, lakukan pengujian pada data baru dengan cara :
  • Mengalikan nilai probabilitas setiap atribut terhadap masing-masing label. Nilai probabilitas atribut yang digunakan menyesuaikan case pada data baru
  • Diperoleh hasil prediksi untuk data baru
Contoh Kasus
Pada contoh kasus kali ini, saya akan menggunakan data yang sama dengan data sebelumnya pada contoh klasifikasi decision tree, yakni data untuk menentukan keputusan seseorang  bermain tennis atau tidak, dimana variabel penentunya diantaranya adalah outlook (cuaca), temperature (suhu), humidity (kelembapan), dan windy (angin).
No
Outlook
Temperature
Humidity
Windy
Play
1
Sunny
Hot
High
FALSE
No
2
Sunny
Hot
High
TRUE
No
3
Cloudy
Hot
High
FALSE
Yes
4
Rainy
Mild
High
FALSE
Yes
5
Rainy
Cool
Normal
FALSE
Yes
6
Rainy
Cool
Normal
TRUE
Yes
7
Cloudy
Cool
Normal
TRUE
Yes
8
Sunny
Mild
High
FALSE
No
9
Sunny
Cool
Normal
FALSE
Yes
10
Rainy
Mild
Normal
FALSE
Yes
11
Sunny
Mild
Normal
TRUE
Yes
12
Cloudy
Mild
High
TRUE
Yes
13
Cloudy
Hot
Normal
FALSE
Yes
14
Rainy
Mild
High
TRUE
No
Langkah pertama adalah menghitung jumlah kelas
Play=No = 4
Play=Yes = 10
Total data = 14

Menghitung nilai probabilitas pada setiap label / kelas :
P(Play=No) = 4/14 
P(Play=Yes) = 10/14

Menghitung nilai probabilitas pada setiap atribut berdasarkan masing-masing label
Outlook
Play=Yes
Play=No
Sunny
2/10
3/4
Cloudy
4/10
0
Rainy
4/10
1/4
Pada contoh diatas, untuk memperoleh nilai 2/10 pada outlook sunny adalah dengan cara menghitung jumlah kategori sunny berlabel yes, dibandingkan dengan total play berlabel yes. Diketahui jumlah data kategori sunny dengan label yes = 2 dan total data yes = 10, sehingga dapat ditulis P(Sunny|Yes)= 2/10, demikian halnya untuk mendapatkan nilai pada kategori berikutnya.
Temperature
Play=Yes
Play=No
Hot
2/10
2/4
Mild
4/10
2/4
Cool
4/10
0
Humidity
Play=Yes
Play=No
High
3/10
4/4
Normal
7/10
0
Windy
Play=Yes
Play=No
FALSE
6/10
2/4
TRUE
4/10
2/4
Keempat hasil perhitungan nilai probabilitas pada tabel diatas digunakan sebagai data training, yang kemudian dapat digunakan untuk memprediksi data baru yang belum mempunyai label. 

Misal saya mempunyai data baru sebagai berikut :
No
Outlook
Temperature
Humidity
Windy
Play
1
Rainy
Hot
High
TRUE
?
Berdasarkan data tersebut, saya ingin mengetahui keputusan apakah harus bermain tennis atau tidak?
Untuk memperoleh hasil klasifikasi, maka dapat dilakukan dengan cara mengalikan nilai probabilitas setiap label / kelas pada data training sesuai dengan kasus pada data baru sebagai berikut :

Misal Play’ = (Outlook = Rainy, Temperature = Hot, Humidity = High, Windy = TRUE), maka:
P(Yes|Play’) = P(Rainy|Yes) * P(Hot|Yes) * P(High|Yes) * P(TRUE|Yes) * P(Play|Yes)
P(Yes|Play’) = 4/10 * 2/10 * 3/10 * 4/10 * 10/14
P(Yes|Play’) = 0,006857

P(No|Play’) = P(Rainy|No) * P(Hot|No) * P(High|No) * P(TRUE|No) * P(Play|No)
P(No|Play’) = 1/4 * 2/4 * 4/4 * 2/4 * 4/14
P(No|Play’) = 0,017857

Kemudian bandingkan nilai kedua probabilitas antara P(Yes|Play’) dan P(No|Play’).

Karena nilai P(No|Play’) = 0,017857 lebih besar dibandingkan dengan P(Yes|Play’) = 0,006857, maka hasil keputusan untuk Play’ adalah No, yakni tidak bermain tennis.

Prediksi menggunakan metode NBC menghasilkan keputusan yang sama dengan menggunakan metode decision tree pada postingan sebelumnya, yakni untuk kasus Outlook = Rainy, Temperature = Hot, Humidity = High, Windy = TRUE akan menghasilkan keputusan bermain tennis = No

Sekian postingan singkat ini saya buat, semoga bermanfaat :)

Hidup itu seperti bersepeda. Kalau kamu ingin menjaga keseimbanganmu, kamu harus terus bergerak maju. -Albert Einstein-


Previous
Next Post »


:) :( hihi :-) :D =D :-d ;( ;-( @-) :P :o -_- (o) :p :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ $-) (y) (f) x-) (k) (h) cheer lol rock angry @@ :ng pin poop :* :v 100

Weekly