NAIVE BAY ES ES
Konsep Naive Bayes Simple naive Bayesian classifier merupakan salah satu metode pengklasifikasian seder sederhana hana yang yang berdas berdasar arkan kan pada pada pener penerapan apan Teorem Teorema a Bayes Bayes dengan dengan asumsi asumsi antar antar variabel variabel penjelas penjelas saling bebas (independe (independen).Algor n).Algoritma itma ini memanfaat memanfaatkan kan metode metode probabilitas probabilitas dan statistik statistik yang dikemukak dikemukakan an oleh ilmuwan ilmuwan Inggris Thomas Thomas Bayes, Bayes, yaitu memprediksi memprediksi probabilitas probabilitas di masa depan berdasar berdasarkan kan pengalaman pengalaman di masa sebelumnya sebelumnya.. Dua kelompok kelompok peneliti, peneliti, satu oleh Pantel Pantel dan Lin, dan yang lain oleh Microsoft Research memperkenalkan metode statistik Bayesian ini pada teknologi anti spam filter. Tetapi yang membuat membuat algoritma Bayesian filtering filtering ini popular popular adalah pendekatan pendekatan yang dilakukan dilakukan oleh Paul Graham. Graham. Dasar Dasar dari teorema naive digunakan dalam pemrograman adalah rumus Bayes berikut ini:
P (Y X ) =
P ( X Y ) xP (Y ) P ( X )
Artinya Peluang kejadian X bersyarat Y ditentukan dari peluang Y terhadap X, peluang X, dan peluang Y.
Penggunaan Naive Bayes Contoh penggunaan Algoritma Naive Bayesian antara lain: • Untuk mengklasifikasi Dokumen Untuk mendeteksi mendeteksi SPAM atau filtering SPAM • • Dan masalah klasifikasi lainnya
Algoritma Naive Bayes Teorema Bayes:
P (C | X) =
P ( X | C ) P (C ) P ( X)
Posterior =
Likelihood × Prior Evidence
Dimana : • • • •
P(X) evidence atau bukti P ( X ) peluang prior P(C) P(C) merupakan peluang prior P(X|C) peluang peluang bersyarat yang diketahui disebut sebagai likelihood P(C|X) peluang bersyarat yang akan dicari atau peluang posterior
Masalah menghitung P(X|C)
Apabila diberikan k atribut yang saling bebas ( independence ), nilai probabilitas dapat diberikan sebagai berikut. x 1,…, x x k|C) = P( x x 1|C) x … x P( x k|C) P( x x i|C) diestimasi sebagai frekuensi Jika atribut ke-i bersifat diskret, diskret, maka P( x
1
relatif dari sampel yang memiliki nilai x i sebagai atribut ke i dalam kelas C. Namun jika atribut ke-i bersifat kontinu, maka P( x i|C) diestimasi dengan fungsi densitas Gauss. − ( x − µ )
1
f ( f ( x) x ) =
2σ
e
2π
2
2
σ
dengan
µ
= mean, dan
σ
= deviasi standar
Independensi bersyarat Misalkan diberikan tiga variable acak X,Y dan Z Independensi bersyarat antara X dan Y
(
P X , Y Z
)
=
=
terhadap Z dapat ditulis sebagai berikut :
P ( X , Y , Z ) P ( Z ) P ( X , Y , Z ) P ( Y , Z )
(
x
)
P (Y , Z ) P ( Z )
(
P X Y , Z xP Y Z
=
(
)
(
P X Z xP Y Z
=
)
)
Dan untuk independensi bersyarat X terhadap Y dan Z dapat ditulis sebagai berikut
(
P X Y , Z
)
(
P X Z
=
)
2
Cara kerja Naïve Bayesian Misalkan di berikan sebuah data sebagai berikut untuk diklasifikasi X1 ... ... ... ...
X2 ... ... ... ...
... ... ... ... ...
Xn ... ... ... ...
C Ya Tidak Ya Ya
Maka dari data tersebut diketahui bahwa X 1, X2, . . . , Xn adalah atribut , sedangkan untuk C disebut sebagai target ( didalamnya hanya ada dua kemungkinan “ Ya” atau “ Tidak “). Untuk mencari solusi dari target C diatas kita gunakan rumus d
P ( X C ) = max ∏ P (C i X ) P ( X ) i =1
dengan cara kerja sebagai berikut 1. Estimasi Estimasi peluang peluang dari dari target target C Hitung peluang jika C=ya dan jika C= tidak 2. Estimasi Estimasi peluang peluang bersyar bersyarat at Xi terhadap C Hitung peluang bersyarat masing-masing atribut X terhadap C, misalnya P (C X 1) , P (C X 2) sampai P (C Xn ) 3. Estimasi peluang bersyarat P ( X C ) yang ingin dicari Hitung
P ( Xi C
Ya )
=
dan
P ( Xi C
Tidak )
=
4. Bandingkan nilai antara P ( Xi C
Jika nilai Jika nilai
P ( Xi C P ( Xi C
Ya )
>
P ( Xi C
Ya )
<
P ( Xi C
=
=
Ya )
=
dan
P ( Xi C
Tidak )
=
Tidak )
maka keputusan akhir adalah Ya
Tidak )
maka keputusan akhir adalah Tidak
=
=
4. Contoh Misalnya ingin diketahui apakah suatu objek masuk dalam ketegori ketegori dipilih untuk perumahan atau tidak, tidak, maka dengan algoritma Naive Bayes Classifier kita dapat mencari mencari solusi solusi untuk untuk kasus diatas diatas . Untuk menetapkan menetapkan suatu daerah daerah akan dipilih sebagai lokasi l okasi untuk mendirikan perumahan, telah dihimpun 10 aturan. Ada 4 atribut yang digunakan, yaitu: harga tanah per meter persegi (C1), • • jarak daerah tersebut tersebut dari pusat kota (C2), • ada atau tidaknya angkutan umum di daerah tersebut (C3), dan • keputusan untuk memilih daerah tersebut sebagai lokasi perumahan (C4).
a.
Probabilitas kemunculan setiap nilai untuk atribut Harga Tanah (C1)
b.
Probabilitas kemunculan kemunculan setiap nilai untuk atribut Jarak dari dari Pusat Kota (C2)
c.
Probabilitas kemunculan setiap nilai untuk atribut Ada Angkutan Umum (C3)
d.
Probabilitas kemunculan setiap nilai untuk atribut Dipilih untuk perumahan (C4)
e.
Menghitung probabilitas setiap kejadian : • Berdasarkan data tersebut, apabila diketahui suatu daerah dengan harga tanah MAHAL, jarak dari pusat kota SEDANG, dan ADA angkutan umum, maka dapat dihitung: YA =P(Ya| Tanah=MAHAL).P(Ya|Jarak=SEDANG).P(Ya| Angkutan=ADA).P(Ya) = 1/5 x 2/5 x 1/5 x 5/10 = 2/125 = 0,008 TIDAK = P(Tidak| Tanah=MAHAL).P(Tidak|Jarak=SEDANG).P(Tidak| Angkutan=ADA).P(Ya) = 3/5 x 1/5 x 3/5 x 5/10 = 2/125 2/ 125 = 0,036 •
Nilai probabilitas dapat dihitung dengan melakukan normalisasi terhadap likelihood tersebut sehingga sehingga jumlah nilai yang diperoleh = 1 Probabilitas Ya =
0,008
0,008 + 0,036
= 0,182.
Klasifikasi : TIDAK 0,036
Probabilitas Tidak =
0,008 + 0,036
= 0,818.
Untuk jenis data harga tanah dan jarak pusat pusat kota yang kontinue, misalnya :
•
Probabilitas kemunculan setiap nilai untuk atribut Harga Tanah (C1)
1
1
•
Probabilitas kemunculan setiap nilai untuk atribut Jarak dari Pusat Kota (C2)
•
Probabilitas kemunculan setiap nilai untuk atribut Angkutan Umum (C3)
•
Probabilitas kemunculan setiap setiap nilai untuk atribut Dipilih Dipilih untuk Perumahan (C4)
•
Apabila diberikan C1 = 300, C2 = 17, C3 = Tidak, maka: 2
f ( f (C 1 = 300 | ya | ya)) =
2
2π (168,8787) e
f (C 2 = 17 | ya | ya)) =
2(168,8787)
f (C 2 = 17 | tidak ) =
2
2π (6,3008) e
= 0,0013.
)2
2(3.9623)
1
Sehingga : = Likelihood Ya = Likelihood Tidak
2( 261.9637)
− (17 − 4,8
2π (3.9623) e
2
2
2π (261.9637) e 1
= 0,0021.
− (300− 435)
1
f ( f (C 1 = 300 | tidak ) =
•
− (300− 212 )
1
= 0,0009.
− (17 −17,2 2
2( 6,3008)
)2
= 0,0633.
(0,0021) x (0,0009) x 4/5 x 5/10 0,000000756. = (0,0013) x (0,0633) x 2/5 x 5/10 = 0,000016458.
Nilai probabilitas dapat dihitung dengan melakukan normalisasi terhadap likelihood tersebut sehingga jumlah nilai yang diperoleh = 1 00756 • Probabilitas Ya Tidak = 0 0,000000756 + 0,000016458 = ,
•
Probabilitas
0 0 0 0
0,000016458
= 0,0439. = 0,9561.
Klasifikasi : TIDAK
0,000000756 + 0,000016458
Keuntungan Naïve Bayes, diantaranya : 1. Rela Relati tiff muda mudah h untu untuk k diim diimpl plem emet etas asik ikan an kare karena na tida tidak k meng menggu guna naka kan n opti optima masi si nume numeri rik, k, perhitungan matriks dan lainnya. 2. Efisien dalam pelatihan dan penggunaannya. 3. Bisa menggunakan data binary atau polinom. 4. Karena diasumsikan independen maka memungkinkan metode ini diimplementasikan dengan berbagai macam data set. 5. Akurasi yang dihasilkan relatif tinggi. Kelemahan Kelemahan dari Naïve Bayes, 1. Diantaranya karena diasumsikan bahwa Naïve Bayes itu bersifat independen maka memiliki konsekuensi konsekuensi yaitu diantaranya : • •
Perkiraan kemungkinan kelas yang tidak akurat Batasan atau threshold harus ditentukan secara manual dan bukan secara analitis.
Implementasi naïve Bayesian menggunakan php,
Misalkan ada data: Cuaca Cerah Cerah Hujan Cerah Hujan Cerah
Temperatur Normal Normal Tinggi Normal Tinggi Normal
Kecepatan Angin Pelan Pelan Pelan Kencang Kencang Pelan
Olahraga Ya Ya Tidak Ya Tidak Ya
Terlebih dahulu dibuat table dengan variable diatas di database phpmyadmin. phpmyadmin.
Kemudian insert masing – masing dari data nya:
Setelah itu akan kita buat index.php, config.php, answer.php, dan file sql diatas. Pertama, kita buat file index.php
Naive Bayesian Example Data Learning
Harga Tanah | Jarak dari pusat kota | Ada angkutan umum | Dipilih untuk perumahan? |
| | | |
Question
kemudian buat file answer.php, script nya seperti dibawah :
Naive Bayesian Example Jawaban
"; $count[Murah_Ya]/$count[positive]
"; echo "MURAH TIDAK : $count[Murah_Tidak]/$coun $count[Murah_Tidak]/$count[negative]
< t[negative]
"; br>"; 1
//HITUNG SEDANG $q['Sedang_Ya'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Harga_Tanah='Sedang' AND dipilih_untuk_perumahan='Ya';"); $count['Sedang_Ya'] = mysql_num_rows($q['Sedang_Ya']); mysql_num_rows($q['Sedang_Ya']); $q['Sedang_Tidak'] = mysql_query("SELECT mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Harga_Tanah='Sedang' AND dipilih_untuk_perumahan='Tidak';"); $count['Sedang_Tidak'] = mysql_num_rows($q['Sedang_Tidak']); mysql_num_rows($q['Sedang_Tidak']); echo "SEDANG YA : $count[Sedang_Ya]/$count[positive]
"; $count[Sedang_Ya]/$count[positive]
"; echo "SEDANG TIDAK : $count[Sedang_Tidak]/$co $count[Sedang_Tidak]/$count[negative]
"; >"; //HITUNG MAHAL $q['Mahal_Ya'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Harga_Tanah='Sedang' AND dipilih_untuk_perumahan='Ya';"); $count['Mahal_Ya'] = mysql_num_rows($q['Mahal_Ya']); mysql_num_rows($q['Mahal_Ya']); $q['Mahal_Tidak'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Harga_Tanah='Mahal' AND dipilih_untuk_perumahan='Tidak';"); $count['Mahal_Tidak'] = mysql_num_rows($q['Mahal_Tidak']); mysql_num_rows($q['Mahal_Tidak']); echo "MAHAL YA : $count[Mahal_Ya]/$count[positive]
"; echo "MAHAL TIDAK : $count[Mahal_Tidak]/$count[ne $count[Mahal_Tidak]/$count[negative]
"; gative]
"; //HITUNG JARAK DEKAT $q['Dekat_Ya'] = mysql_query("SELECT mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Jarak_dari_pusat_kota='Dekat' Jarak_dari_pusat_kota='Dekat' AND dipilih_untuk_perumahan='Ya';"); $count['Dekat_Ya'] $count['Dekat_Ya'] = mysql_num_rows($q['Dekat_Ya']) mysql_num_rows($q['Dekat_Ya']);; $q['Dekat_Tidak'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Jarak_dari_pusat_kota='Dekat' Jarak_dari_pusat_kota='Dekat' AND dipilih_untuk_perumahan='Tidak';"); $count['Dekat_Tidak'] $count['Dekat_Tidak '] = mysql_num_rows($q['Dekat_Tidak mysql_num_rows($q['Dekat_Tidak']); ']); echo "DEKAT YA : $count[Dekat_Ya]/$count[positive]
"; $count[Dekat_Ya]/$count[positive]
"; echo "DEKAT TIDAK : $count[Dekat_Tidak]/$count[negative]
"; >
"; //HITUNG JARAK SEDANG $q['Sedang_Ya'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Jarak_dari_pusat_kota='Sedang' Jarak_dari_pusat_kota='Sedang' AND dipilih_untuk_perumahan='Ya';"); $count['Sedang_Ya'] = mysql_num_rows($q['Sedang_Ya']); mysql_num_rows($q['Sedang_Ya']); $q['Sedang_Tidak'] = mysql_query("SELECT mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Jarak_dari_pusat_kota='Sedang' Jarak_dari_pusat_kota='Sedang' AND dipilih_untuk_perumahan='Tidak';"); $count['Sedang_Tidak'] = mysql_num_rows($q['Sedang_Tidak']); mysql_num_rows($q['Sedang_Tidak']); echo "SEDANG YA : $count[Sedang_Ya]/$count[positive]
"; $count[Sedang_Ya]/$count[positive]
"; echo "SEDANG TIDAK : $count[Sedang_Tidak]/$co $count[Sedang_Tidak]/$count[negative]
"; >"; //HITUNG JARAK JAUH $q['Jauh_Ya'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Jarak_dari_pusat_kota='Jauh' Jarak_dari_pusat_kota='Jauh' AND dipilih_untuk_perumahan='Ya';"); $count['Jauh_Ya'] = mysql_num_rows($q['Jauh_Ya']); mysql_num_rows($q['Jauh_Ya']); 1
$q['Jauh_Tidak'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE Jarak_dari_pusat_kota='Jauh' Jarak_dari_pusat_kota='Jauh' AND dipilih_untuk_perumahan='Tidak';"); $count['Jauh_Tidak'] = mysql_num_rows($q['Jauh_Tidak']); mysql_num_rows($q['Jauh_Tidak']); echo "JAUH YA : $count[Jauh_Ya]/$count[positive]
"; $count[Jauh_Ya]/$count[positive]
"; echo "JAUH TIDAK : $count[Jauh_Tidak]/$count[ $count[Jauh_Tidak]/$count[negative]
" negative]
";; //HITUNG ADA ANGKUTAN UMUM $q['Ada_Ya'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE ada_angkutan_umum='Ada' AND dipilih_untuk_perumahan='Ya';"); $count['Ada_Ya'] = mysql_num_rows($q['Ada_Ya']); mysql_num_rows($q['Ada_Ya']); $q['Ada_Tidak'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE ada_angkutan_umum='Ada' AND dipilih_untuk_perumahan='Tidak';"); $count['Ada_Tidak'] = mysql_num_rows($q['Ada_Tidak']); mysql_num_rows($q['Ada_Tidak']); echo "ADA YA : $count[Ada_Ya]/$count[positive]
"; $count[Ada_Ya]/$count[positive]
"; echo "ADA TIDAK : $count[Ada_Tidak]/$count[ne $count[Ada_Tidak]/$count[negative]
"; gative]
"; //HITUNG TIDAK ANGKUTAN UMUM $q['Tidak_Ya'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE ada_angkutan_umum='Tidak ada_angkutan_umum='Tidak'' AND dipilih_untuk_perumahan='Ya';"); $count['Tidak_Ya'] = mysql_num_rows($q['Tidak_Ya']); mysql_num_rows($q['Tidak_Ya']); $q['Tidak_Tidak'] = mysql_query("SELECT * FROM sample_dipilih_untuk_perumahan sample_dipilih_untuk_per umahan WHERE ada_angkutan_umum='Tidak ada_angkutan_umum='Tidak'' AND dipilih_untuk_perumahan='Tidak';"); $count['Tidak_Tidak'] = mysql_num_rows($q['Tidak_Tidak']) mysql_num_rows($q['Tidak_Tidak']);; echo "TIDAK YA : $count[Tidak_Ya]/$count[positive]
"; $count[Tidak_Ya]/$count[positive]
"; echo "TIDAK TIDAK : $count[Tidak_Tidak]/$count[negative]
"; $count[Tidak_Tidak]/$count[negative]
"; $Harga_Tanah = $_POST['Harga_Tanah'] $_POST['Harga_Tanah'];; $Jarak_dari_pusat_kota $Jarak_dari_pusat_kota = $_POST['Jarak_dari_pusat_kota']; $_POST['Jarak_dari_pusat_kota']; $ada_angkutan_umum = $_POST['ada_angkutan_um $_POST['ada_angkutan_umum']; um']; $p_Mahal_Ya = $count['Mahal_Ya'] / $count['positive']; $p_Mahal_Tidak = $count['Mahal_Tidak'] / $count['negative']; if($p_Mahal_Ya == 0) $p_Mahal_Ya = 0.2; if($p_Mahal_Tidak == 0) $p_Mahal_Tidak = 0.6; $p_Sedang_Ya = $count['Sedang_Ya'] / $count['positive']; $p_Sedang_Tidak = $count['Sedang_Tidak'] / $count['negative']; if($p_Sedang_Ya == 0) $p_Sedang_Ya = 0.33; if($p_Sedang_Tidak == 0) $p_Sedang_Tidak = 0.2; $p_Ada_Ya = $count['Ada_Ya'] / $count['positive']; $p_Ada_Tidak = $count['Ada_Tidak'] / $count['negative']; $count['negative']; if($p_Ada_Ya == 0) $p_Ada_Ya = 0.2; if($p_Ada_Tidak == 0) $p_Ada_Tidak = 0.6; 1
echo "P(Harga_Tanah = Mahal, dipilih_untuk_perumahan = Ya) = $p_Mahal_Ya
"; echo "P(Jarak_dari_pusat_kota "P(Jarak_dari_pusat_kota = Sedang, dipilih_untuk_perumahan = Ya) = $p_Sedang_Ya
"; echo "P(ada_angkutan_umum = Ada, dipilih_untuk_perumahan = Ya) = $p_Ada_Ya
"; echo "P(Harga_Tanah = Mahal, dipilih_untuk_perumahan = Tidak) = $p_Mahal_Tidak
"; echo "P(Jarak_dari_pusat_kota "P(Jarak_dari_pusat_kota = Sedang, dipilih_untuk_perumahan = Tidak) = $p_Sedang_Tidak
"; echo "P(ada_angkutan_umum = Ada, dipilih_untuk_perumahan = Tidak) = $p_Ada_Tidak
"; if($Harga_Tanah == "Mahal"){ $pos_Harga_Tanah = $p_Mahal_Ya; $neg_Harga_Tanah = $p_Mahal_tidak; }else{ $pos_Harga_Tanah = $p_Mahal_Tidak; $neg_Harga_Tanah = $p_Harga_Ya; } if($Jarak_dari_pusat_kota if($Jarak_dari_pusat_kota == "Sedang"){ $pos_Jarak_dari_pusat_kota $pos_Jarak_dari_pus at_kota = $p_Sedang_Ya; $neg_Jarak_dari_pusat_kota $neg_Jarak_dari_pusat_kota = $p_Sedang_Tidak; }else{ $pos_Jarak_dari_pusat_kota $pos_Jarak_dari_pus at_kota = $p_Sedang_Tidak; $neg_Jarak_dari_pusat_kota $neg_Jarak_dari_pusat_kota = $p_Sedang_Ya; } if($ada_angkutan_umum == "Ada"){ $pos_ada_angkutan_umum $pos_ada_angkutan_umu m = $p_Ada_Ya; $neg_ada_angkutan_umum = $p_Ada_Tidak; }else{ $pos_ada_angkutan_umum $pos_ada_angkutan_umu m = $p_Ada_Tidak; $neg_ada_angkutan_umum = $p_Ada_Ya; } $Ya = ($pos_cuaca * $pos_temp * $pos_angin) * ($count['positive']/ $count['all']); $Tidak = ($neg_cuaca * $neg_temp * $neg_angin) * ($count['negative']/ $count['all']); echo "Ya : $Ya
"; echo "Tidak : $Tidak
"; if($Ya > $Tidak) $answer = "
Ya< style='color:blue;'>Ya"; /span>"; else $answer = "
Tidak"; echo "Jika Harga Tanah =
$Harga_Tanah, Jarak dari pusat kota =
$Jarak_dari_pusat_kota,
$Jarak_dari_pusat _kota, dan kAda angkutan umum = 1
$ada_angkutan_umum, maka dipilih untuk perumahan =
$ada_angkutan_umum,
$answer"; ?> Kemudian untuk yang terakhir buat file config.php sebagai penghubung database ke php, Kemudian sambungkan ke localhost server atau website, maka tampilannya seperti dibawah ini:
Kemudian pilihan diatas anda pilih sesuai masalah yang akan dicari, misalkan pilih cuaca=cerah, Temperatur=Normal, Temperatur=Normal, Kecepatan Angin=Pelan. Lalu Pilih “Temukan Jawaban”.
2
Maka dapat disimpulkan bahwa jika cuaca cerah, temperature normal, dan keadaan angin pelan maka diperbolehkan melakukan olahraga.
BAYESIAN NETWORK 2
Bayes Bayesian ian networ network k adalah adalah sebua sebuah h Dyrec Dyrected ted acycli acyclic c graph graph ( DAG) DAG) dengan dengan sebuah tabel probabilitas untuk setiap node. Node yang terdapat pada Bayesian network merupakan representasi representasi variable proporsional dalam suatu domain dan garis menunjukkan menunjukkan hubungan ketergantungan ketergantungan diantara variable-variabel. variable-variabel. Dalam hal hal ka kait itan anny nya a deng dengan an basi basis s data data , pada pada netw networ ork k Baye Bayesi sian an node node meru merupa paka kan n representasi dari atribut-atribut tabel yang ada pada basis data. Bayesian network dapat dapat dikata dikatakan kan sebaga sebagaii salah salah satu satu pener penerapa apan n metod metode e klasif klasifika ikasi si pada pada fungs fungsii prediktif pada teknologi data mining. •
Bayesian Network atau Belief Network atau Probabilistik Network adalah model grafik untuk merepresentasikan merepresentasikan interaksi antar variabel.
•
Bayesian Network Network digambarkan seperti seperti graf ( gambar 1) yang terdiri dari simpul (node) dan busur (arc). Simpul menunjukkan variabel misal X beserta nilai probabilitasnya P(X) dan busur menunjukkan hubungan antar simpul.
•
Jika ada hubungan dari simpul X ke simpul simpul Y, ini mengindikasikan mengindikasikan bahwa variabel X ada pengaruh terhadap variabel Y. Pengaruh ini dinyatakan dengan peluang bersyarat P(Y|X). X adalah Rain dan Y adalah Wet Grass
Gambar 1 Struktur Bayesian Network
Disamping kondisi independen bersyarat yang dikenakan dengan topologi network , tiap node juga diasosiasikan diasosiasikan dengan dengan tabel peluang. peluang. 1. Jika node X tidak memiliki orangtua, maka tabel hanya berisi peluang prior peluang prior P ( X ) . 2. jika node X hanya hanya memiliki memiliki satu orangtua orangtua,, Y , maka tabel berisi berisi peluang peluang bersyarat bersyarat P ( X Y ) . 3. jika node X memiliki memiliki banyak banyak orangtua orangtua {Y 1 , Y 2 , , Y k } , maka maka tabel tabel berisi berisi pelua peluang ng bersyarat P ( X Y 1 , Y 2 , , Y k ) .
Untuk penggunaan bayesian network digunakan rumus berikut n
P ( X 1 = x1 ,..., X n = xn ) =
∏ P ( X
i
= xi | Parents( X i ))
i =1
Ada dua unsur kunci Bayesian network : network : 1. Directed acyclic graph (dag) mengencode mengencode hubungan dependen antar set variabel. 2. Tabel Tabel peluang peluang mengasos mengasosiasi iasikan kan tiap node node ke node parent parent selanju selanjutnya. tnya.
2
Perhatikan tiga variabel acak, A , B , dan C dengan A dan B variabel independen dan masing-masing memiliki pengaruh langsung pada variabel ketiga C . Hubungan antar variabel dapat diringkas ke dalam directed acyclic graph yang ditunjukkan Tabel 2 (a). Tiap node pada grafik merepresentasikan sebuah variabel, dan tiap panah menyatakan hubungan dependen antara pasangan variabel. Jika arah panah dari a ke c, maka a adalah parent dari c dan c adalah anak dari a.
2
Cara kerja Bayesian network Asumsikan diberikan sebuah data biasa: Variable 1 : memiliki probabilitas 1. Variable 2 : memiliki probabilitas 2. . . . Variabel n : memilki probabilitas n. Untuk Data – data tersebut proses pengolahannya: a. Amat Amatii node node dar darii tiap tiap var variab iable le.. b. Hubungkan tiap node node – node tersebut berdasarkan hubungan sebab akibat jika terdapat hubungan Sebagai contoh misalkan ada struktur Bayesian Bayesian Network seperti Network seperti dibawah ini:
P(C|B)
B
A
P(C|A)
C P(C|B,A) Maka dari graf diatas terlihat bahwa A dan B independen, sementara C terhubungkan oleh A dan juga B dan jika terhubung maka untuk mencari nilai peluangnya kita gunakan peluang bersyarat. c. Ulangi Ulangi proses proses b hingga hingga semua semua node node terhubun terhubungkan gkan satu sama sama lain. lain. d. Estimasi Estimasi peluang peluang dari dari masalah yang akan dicari dicari solusin solusinya ya dengan dengan melihat melihat nilai peluang peluang dari masing-masing node baik yang independen dan bersyarat dan biasanya untuk nilai peluang dari masing-masing node sudah ditentukan ditentukan dari awal . e. Hitung Hitung peluang peluang dari dari masalah yang yang ingin ingin dicari dicari solusinya solusinya dengan dengan melihat melihat nilai nilai peluang peluang dari masing-masing node yang berhubungan dengan node yang ingin dicari solusinya dengan tetap menggunakan kaidah Bayes yang telah dijelaskan pada algoritma Naïve Bayesian sebelumnya dengan rumus n
P ( X 1 = x1 ,..., X n = xn ) =
∏ P ( X
i
= xi | Parents( X i ))
i =1
f. Bandingka Bandingkan n nilai dari hasil hasil node node yang telah dipero diperoleh leh untuk untuk dicari dicari solusiny solusinyaa Misalnya untuk graf C diatas , bandingkan jika nilai C=ya dan jika C= tidak g. Tarik kesimpulan kesimpulan berdasar berdasarkan kan nilai nilai peluang peluang yang yang terting tertinggi gi dari proses proses f. f.
2
Contoh mengambil keputusan menggunakan Bayesian Network Berdasarkan gambar struktur Bayesian network terdiri dari enam variable yang dipresentasikan dalam node-node yaitu : Exercise ( E), Diet (D), Heart Desease ( HD), Heartburn ( Hb), Blood Pressure (BP), Chest Pain (CP), dan terdapat 3 skenario diagnosis untuk menentukan seseorang akan mempunyai penyakit jantung (HD=Yes) atau tidak (HD=No). (HD=No).
Kasus 1 : tidak ada informasi terdahulu Tanpa informasi sebelumnya, dapat ditentukan apakah sesorang memiliki heart disease heart disease dengan menghitung peluang prior peluang prior P P (HD=Yes) HD=Yes) dan P (HD=No). HD=No). Untuk menyederhanakan menyederhanakan notasi, α ∈{Yes, No} melambangkan nilai biner dari Exercise dan β ∈{ Health Healthy y, Unhealthy}
melambangkan melambangkan nilai biner dari Diet. P ( HD = Yes ) = ∑∑ P ( HD = Yes E = α , D = β ) P ( E = α , D = β ) α
β
= ∑∑ P ( HD = Yes E = α , D = β ) P ( E = α ) P ( D = β ) α
β
= 0.25 x 0.7 x 0.25 + 0.45 x 0.7 x 0.75 + 0.55 x 0.3 x 0.25 + 0.75 x 0.3 x 0.75 = 0.49 Karena P (HD=no) HD=no) = 1 - P (HD=yes) HD=yes)=0.51, orang tersebut besar kemungkinan tidak terkena penyakit tersebut. Kasus 2 : tekanan darah tinggi
2
Jika seseorang memiliki tekanan darah tinggi, dapat dilakukan diagnosa penyakit hati dengan membandingkan peluang posterior P (HD = Yes|BP=High) Yes|BP=High) dengan P (HD = No|BP=High). No|BP=High ). Untuk melakukan ini, harus dihitung P (BP=High). BP=High ). P ( BP = High ) = ∑ P ( BP = High HD = γ ) P ( HD = γ ) γ
= 0.85 x 0.49 + 0.2 x 0.51 = 0.5185. dengan
γ ∈{Yes, No} .
Oleh karena itu, peluang posterior peluang posterior seseorang seseorang memiliki penyakit hati
adalah : P ( HD = Yes BP = High) =
=
P ( BP = High High HD = Yes) P ( HD = Yes) P ( BP = High High )
0.85 x0.49
=
0.5185
0.8033 .
Dengan cara yang sama, P (HD = No|BP=High) No|BP=High) = 1 – 0.8033 = 0.1967. Oleh karena itu, ketika seseorang memiliki tekanan darah tinggi, maka resiko terkena penyakit hati akan meningkat. Kasus 3 : tekanan darah tinggi, diet sehat dan olahraga teratur Jika diberitahu bahwa orang tersebut melakukan olahraga teratur dan makan dengan pola diet yang sehat. Bagaimana informasi baru mempengaruhi diagnosa? Dengan informasi baru tersebut, peluang posterior peluang posterior bahwa bahwa seseorang terkena penyakit hati adalah : P ( HD
Yes BP
=
High, D
=
Healthy, E
=
Yes )
=
P ( BP = High High HD = Ye Yes s, D = Health Healthy y, E = Ye Yes s) = = = , = ( ) P BP High Hig h D Health He althy y E Yes Ye s xP ( HD
=
Yes D
=
Healthy , E
=
Yes )
=
P ( BP = High High HD = Ye Yes s) P ( HD = Ye Yes s D = Health Healthy y, E = Ye Yes s) High HD = γ ) P ( HD = γ D = Health Healthy y, E = Yes) ∑ P ( BP = High γ
=
0.85 x0.25 0.85 x0.25 + 0.2 x0.75
= 0.5862 sedang peluang bahwa seseorang tidak terkena penyakit hati adalah : P (HD=No|BP=High, HD=No|BP=High, D=Healthy, E=Yes) E=Yes ) = 1 – 0.5862 = 0.4138.
Model tersebut selanjutnya menyatakan bahwa dengan pola makan sehat dan melakukan olahraga teratur akan mengurangi resiko penyakit hati.
2
Contoh networks bayesian dengan program Genie v2.0. Misalkan ada kausal diagram, berikut probabilitasnya:
Untuk menjawab”Brapa probailitas terjadi hujan jika rumput dalam keadaan basah”? Kita akan menggunakan software Genie untuk menjawab probailitas tersebut. Pertama, buat 3 variabel dulu
Kemudian, buat iconnya dengan meklik icon warna kuning pada toolbar genie, kemudian tarik ke kanvas.
Setelah terbuat, maka langsung diberi nama.
2
Jika variabel telah anda buat, anda bisa klik 2 kali pada variable tersebut, dan diberi nama “rain” atau hujan. Anda buat selanjutnya untuk 2 variabel yang lain dengan nama “sprinkler” dan “grass wet”. Hasilnya adalah seperti dibawah ini:
Kedua, menentukan hubungan setiap variabel. Hubungkan dengan tanda panah tiap node seperti dalam causal loopdiagram atau diagram sebab akibat.
Anda bisa melihat pada gambar gambar diatas, pilih icon bernama bernama “arc”. Lalu klik, tinggal anda arahkan pada gambar dengan klik pada asal panah ke tujuan panah. Maka, hasilnya seperti dibawah ini.
Ketiga, mengisi probabilitasnya. Untuk mengisi probabilitasnya anda mulai dengan titik keluar, atau variabel yang menyebabkan dulu. Dalam hal ini adalah tujuan yaitu “rain”. 2
Maka jika anda mengklik 2 kali variabel “rain” akan keluar windows “node properties rain”, tinggal anda cari tab definition kemudian isi dengan probabilitasnya.
Gambarnya seperti diatas jika anda mengklik 2 kali pada variable, kemudian anda isikan sesuai soal pada studi kasus. Cara mengisinya adalah anda arahkan cursor anda pada kolom yang disediakan. Untuk variabel srinklernya adalah sebagai berikut:
Baris pertama (rain, true, false) menunjukkan kolom untuk hujan, sedangkan baris ke-2 dan ke-3 menunjukkan sprinklernya. Untuk variabel terakhirnya hasilnya seperti dibawah ini:
Keempat, adalah mengkondisikan sesuai soal pada studi kasus. Yaitu “berapa probabilitas terjadi hujan jika rumput dalam keadaan basah?”. Sementara yang perlu anda perhatikan dalam genie adalah2“view as”, “set evidence” dan “update beliefs”.
Untuk letak vies as:
Klik pada icon, kemudian pada menu node lalu view as lalu bar chart. Untuk letak set evidence, yaitu sekarang yang anda lakukan adalah mengeset evidence pada setiap variabel sesuai soalnya. Pada kasus ini yang perlu di set evidence-nya adalah: -
Wet gr grass dis dise et tru true e.
-
Rain dib dibiiarkan sa saja. ja.
-
Spri Sprink nkle lerr juga juga dibi dibiar arka kan n saj saja. a.
Cara mensetnya adalah dengan klik pada “tanda tanya” di pojok kiri setiap icon, jadi yang perlu anda set adalah hanya wet grass, yaitu sebagai berikut:
3
Pada gambar diatas, pilih set evidence lalu pilih true. Untuk update beliefs, klik pada simbol “?” lalu pilih update beliefs. Kemudian otomatis yang tidak di set evidence akan update berdasarkan yang di setn (wet grass)
Kesimpulannya, selain tanda centang adalah set evidence, dalam gambar diatas hanya grass wet yang diset. Kemudian berdasarkan data yang telah di input terdapat nilai 0,413% yang menunjukkan probabilitas hujan jika rumput basah.
3
3