Kamis, 01 Juni 2017

Penjabaran Algoritma Naïve Bayes

Sebelum membahas mengenai naïve bayes, kita akan kilas balik mengenai teori peluang/probabilitas yang diambil
Referensi : http://tyarhashawol.blogspot.co.id/2012/12/probabilitas-dan-statistika_31.html



Dasar Probabilitas

Adalah angka yang menunjukkan seberapa besar kemungkinan suatu peristiwa terjadi, di antara keseluruhan peristiwa yang mungkin terjadi.
Contoh sebagai berikut
  1. Sebuah mata uang logam mempunyai sisi dua (H & T) kalau mata uang tersebut dilambungkan satu kali, peluang untuk keluar sisi H adalah ½.
  2. Sebuah dadu untuk keluar mata ‘lima’ saat pelemparan dadu tersebut satu kali adalah 1/6 (karena banyaknya permukaan dadu adalah 6)

Hukum Probabilitas

Mutually Exclusive (saling meniadakan)
Rumus: P (A U B) = P (A atau B)= P (A) + P (B)
Probabilitas untuk keluar mata 2 atau mata 5 pada pelemparan satu kali sebuah dadu adalah:
P(2 U 5) = P (2) + P (5) = 1/6 + 1/6 = 2/6



Non Mutually Exclusive (dapat terjadi bersama)
Peristiwa Non Mutually Exclusive (Joint) dua peristiwa atau lebih dapat terjadi bersamasama (tetapi tidak selalu bersama). Contoh penarikan kartu as dan berlian
P (A U B) =P(A) + P (B) – P(A ∩B)



Peristiwa terjadinya A dan B merupakan gabungan antara peristiwa A dan peristiwa B. Akan tetapi karena ada elemen yang sama dalam peristiwa A dan B, gabungan peristiwa A dan B perlu dikurangi peristiwa di mana A dan B memiliki elemen yang sama. Dengan demikian, probabilitas pada keadaan di mana terdapat elemen yang sama antara peristiwa A dan B maka probabilitas A atau B adalah probabilitas A ditambah probabilitas B dan dikurangi probabilitas elemen yang sama dalam peristiwa A dan B.


Teorema Bayes

Dalam teori probabilitas dan statistika, teorema Bayes adalah sebuah teorema dengan dua penafsiran berbeda. Dalam penafsiran Bayes, teorema ini menyatakan seberapa jauh derajat kepercayaan subjektif harus berubah secara rasional ketika ada petunjuk baru.

Dalam penafsiran frekuentis teorema ini menjelaskan representasi invers probabilitas dua kejadian. Teorema ini merupakan dasar dari statistika Bayes dan memiliki penerapan dalam sains, rekayasa, ilmu ekonomi (terutama ilmu ekonomi mikro), teori permainan, kedokteran dan hukum. Penerapan teorema Bayes untuk memperbarui kepercayaan dinamakan inferens Bayes.

Rumus Teori Bayes :


Jadi, bisa dinyatakan P(A|B) berarti peluang kejadian A bila B terjadi dan P(B|A) berarti peluang kejadian B bila A terjadi.

Diagram Pohon Probabilitas

Diagram Pohon merupakan suatu diagram yang menyerupai pohon dimulai dari batang kemudian menuju ranting dan daun. diagram pohon dimaksudkan untuk membantu menggambarkan probabilitas atau probabilitas bersyarat dan probabilitas bersama. diagram pohon sangat berguna untuk menganaliusis keputusan-keputusan dimana terdapat tahapan-tahapan pekerjaan.

Referensi: https://anitaharum.wordpress.com/2013/11/04/pengantar-peluang/


Algoritma Naive Bayes

Prior  Probability  merupakan  nilai  probabilitas  yang  seseorang  yakini  benar  sebelum melakukan  eksperimen  terhadap  sesuatu.

Bila  kemudian  dilakukan  eksperimen  dan mengakibatkan  adanya  perubahan  atau  perbaikan  terhadap  nilai  probabilitas  tadi, maka  itu disebut sebagai Posterior Probability.

Sebagai contoh kita ambil kasus pelemparan sebuah Dadu. Secara teori, dadu yang terdiri dari 6 muka apabila dilempar maka masing-masing muka akan memiliki peluang muncul yang sama yakni 1/6. Peluang atau probabilitas tersebut disebut sebagai Prior Probability. Bila kemudian dilakukan  eksperimen dengan melempar dadu  tersebut  sebanyak N kali, didapat  sebuah nilai baru  untuk  peluang  masing-masing  muka  pada  dadu  tersebut.  Kenyataannya,  nilai  dari eskperimen secara berurutan menunjukkan nilai kemunculan 1/6, 1/6, 3/6, 0, 0, 1/6. Tampak sangat berbeda dengan peluang yang disematkan di awal. Peluang ini disebut sebagai Posterior

Probability.

Salah satu perhitungan probabilitas yang bisa dikatakan sebagai Posterior Probability adalah Bayes. Perhatikan bahwa konsep dari Bayes adalah Menghitung probabilitas kejadian B apabila diberikan peluang kejadian A.

Prob(B given A) = Prob(A and B)/Prob(A)

Untuk menghitung probabilitas B yang diberikan A, algoritma menghitung jumlah kasus dimana A dan B terjadi bersamaan dan membaginya dengan jumlah kasus dimana A terjadi sendiri.

 

Rumus umum


    P(c|x) is the posterior probability of class (c, target) given predictor (x, attributes).
    P(x|c) is the likelihood which is the probability of predictor given class.
    P(c) is the prior probability of class.
    P(x) is the prior probability of predictor.

Contoh soal sebagai berikut

 
Berapa peluang terjadinya Sunny?
P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)?

Penulis sarankan untuk menggunakan bahasa yang memang mendukung kemudahan pengolahan data berbasis struktur tabel. Penulis lebih suka menggunakan python dan pandas untuk mempermudah perhitungan diatas. 


Jawab:
P (Sunny |Yes) = 3/9 = 0.33,
P(Sunny) = 5/14 = 0.36,
P( Yes)= 9/14 = 0.64
Maka  P (Yes | Sunny) = 0.33 * 0.64 / 0.36 = 0.60 yang mana merupakan nilai probabilitas yang tinggi.

Penyelesaian

Maka kita siapkan data excel seperti berikut




import numpy as np
import pandas as pd

print '\n'*100
data = pd.read_excel('data-cuaca.xlsx')
print 'DISAJIKAN DATA BERIKUT\n',data
'''
cara menghitung peluang 
P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)
'''
print 'Berapa peluang '
print 'P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)???\n\njawab:\n\n'

jumlah_data = float(len(data))


#menghitung jumlah sunny yang masuk yes
jumlah_sunny_yes = float(len(data[(data['weather']=='Sunny')&(data['play']=='Yes')]))
print 'jumlah sunny kategori yes : ',str(jumlah_sunny_yes)

#menghitung jumlah yes
jumlah_yes = float(len(data[data['play']=='Yes']))
print 'jumlah kategori yes : ',str(jumlah_yes)

#menghitung jumlah sunny
jumlah_sunny = float(len(data[data['weather']=='Sunny']))
print 'jumlah sunny :',str(jumlah_sunny)

#P (Sunny |Yes) 
p_sunny_yes = jumlah_sunny_yes/jumlah_yes
print '\n\nPeluang P (Sunny |Yes) :',str(p_sunny_yes)

#P(Sunny) 
p_sunny = jumlah_sunny/jumlah_data
print 'Peluang P(Sunny)  :',str(p_sunny)

#P( Yes) 
p_yes = jumlah_yes/jumlah_data
print 'Peluang P(Yes):',str(p_yes)

#maka P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)
probability = float(p_sunny_yes*p_yes/p_sunny)
print 'P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny): ',str(probability)

 

Hasilnya



DISAJIKAN DATA BERIKUT
     weather play
1      Sunny   No
2   Overcast  Yes
3      Rainy  Yes
4      Sunny  Yes
5      Sunny  Yes
6   Overcast  Yes
7      Rainy   No
8      Rainy   No
9      Sunny  Yes
10     Rainy  Yes
11     Sunny   No
12  Overcast  Yes
13  Overcast  Yes
14     Rainy   No
Berapa peluang 
P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)???

jawab:


jumlah sunny kategori yes :  3.0
jumlah kategori yes :  9.0
jumlah sunny : 5.0


Peluang P (Sunny |Yes) : 0.333333333333
Peluang P(Sunny)  : 0.357142857143
Peluang P(Yes): 0.642857142857
P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny):  0.6

 
Referensi:
https://docs.oracle.com/cd/B28359_01/datamine.111/b28129/algo_nb.htm#BABIIDDE
http://burhanudin.web.id/programing/penerapan-metode-naive-bayes-untuk-sistem-pendukung-keputusan
















Posting Komentar