BAB 3 ANALISIS DAN PERANCANGAN
3.1
Analisis Permasalahan Dalam mengembangkan sistem pakar ini diperlukan pengetahuan dan informasi
yang diperoleh dari beberapa sumber, yaitu dari seorang pakar, dan beberapa buku serta pencarian-pencarian materi pendukung yang penulis lakukan melalui internet. Seorang pakar adalah seorang yang ahli dan menguasai dalam bidang tertentu dan mempunyai pengetahuan atau keahlian khusus yang tidak dikuasai dan dimiliki oleh kebanyakan oleh orang lain sehingga dapat memecahkan permasalahan yang tidak dapat dipecahkan oleh kebanyakan orang atau dapat memecahkan masalah dengan cara yang lebih efisien (Giarratano dan Riley, 1998, p2). Masalahnya adalah jumlah pakar sangat terbatas bila dibandingkan dengan yang dibutuhkan. Hal ini wajar karena kepakaran baru dapat diperoleh dari pengalaman bertahun-tahun bahkan puluhan tahun. Untuk mengatasi hal itu perlu dipikirkan suatu metode untuk menyebarkan kepakaran yang dimiliki oleh pakar tersebut. Dengan memindahkan kepakaran yang dimiliki seorang pakar ke dalam suatu program komputer yang dinamakan dengan sistem pakar dan dengan penerapan sistem pakar untuk mengdiagnosa penyakit yang melibatkan sistem penyakit umum ini diharapkan dapat membantu masyarakat untuk mengenali gejala-gejala yang timbul sebelum pergi berobat. Sehingga pada akhirnya akan ditemukan obat apa yang dapat digunakan. Selain itu, juga memungkinkan setiap individu untuk menghemat waktu, biaya dan tenaga dalam mendapatkan pelayanan kesehatan dan pengobatan. 32
33 Dari beberapa keunggulan sistem pakar online maka user mungkin saja ingin mengetahui bagaimana sejarah kesehatan yang terjadi pada dirinya dan menyimpannya sebagai rujukan sebelum ia berobat pada dokter yang sebenarnya. Karena alasan-alasan itulah kemudian penulis ingin membuat sebuah sistem pakar yang menggunakan cara atau teknik yang lebih dapat diandalkan dan lebih memuaskan. Sistem pakar online merupakan jawaban dari permasalahan tersebut. Dengan sistem ini maka sistem pakar bisa digunakan oleh banyak user sekaligus dengan sistem yang sama dan knowledgebase yang sama. Kemudian, proses peng-update-an knowledgebase tentu akan lebih mudah dilakukan. Certainty Factor adalah suatu teknik yang sangat menjanjikan untuk pengembangan sistem pakar saat ini. Selain itu CF dirasakan lebih sesuai diaplikasikan pada sistem ini bila dibandingkan dengan metode lain. Hal lain yang menyebabkan kenapa kami memilih Certainty Factor sebagai teknik pengambilan keputusan adalah karena CF sudah tebukti akurat, hal ini dibuktikan dengan keampuhan MYCIN, dimana MYCIN juga menggunakan CF sebagai metodanya. Kelebihan lain yang penulis tawarkan pada sistem pakar ini adalah bahwa sistem pakar ini akan bersifat fleksibel. Sistem pakar ini berbentuk engine yang dapat di-install pada server yang diinginkan. Jadi, sistem pakar ini tidak tertutup untuk sebagian kelompok jenis penyakit saja. Siapa saja yang memiliki knowledge base sendiri bisa menggunakan engine ini bekerja sebagai sistem pakarnya. Pada sistem pakar ini, penulis menggunakan penyakit umum untuk menunjukkan bagaimana sistem pakar ini bekerja, walaupun sebenarnya sistem pakar ini dapat digunakan untuk pendiagnosaan penyakit-penyakit yang lain, atau bahkan semuanya berjalan pada sistem yang sama. Hal itu hanya tergantung pada knowledge base yang
34 dimiliki. Jadi sistem pakar untuk mendiagnosa penyakit secara online ini menawarkan sebuah sistem dan teknik sistem pakar yang lebih fleksibel dan optimal baik dari segi kualitas maupun kemudahan serta jangkauan yang lebih luas dibandingkan dengan sistem pakar lain yang digunakan saat ini, terutama yang ada di Indonesia.
3.2 Akuisisi Pengetahuan
Dalam perancangan sistem pakar harus memperhatikan beberapa faktor antara lain akuisisi pengetahuan, representasi pengetahuan, perancangan basis pengetahuan, perancangan data dan perancangan layar.
3.2.1 Akuisisi Pengetahuan
Dalam perancangan aplikasi sistem pakar ini, terlebih dahulu melakukan proses akuisisi pengetahuan terhadap seorang pakar. Karena penulis menggunakan penyakit umum sebagai subject pada percobaan sistem pakar ini, maka penulis memilih seorang dokter umum. Pakar yang dimaksudkan adalah dokter Eddie Mufthi yang melakukan praktek di klinik keluarga Jl. KH. Hasyim Ashari, No. 44, Pedurenan – Ciledug Tangerang. Dalam proses ini dilakukan wawancara mengenai bagaimana mendiagnosa penyakit yang sering terjangkit di kawasan ini dan beberapa penyakit lainnya berdasarkan gejala – gejala dan keluhan dari pasien. Pendiagnosaan dibuat menyerupai alur diagnosa seorang pakar dan juga diberikan rekomendasi mengenai daftar pustaka tentang penyakit pada lambung dari pakar tersebut. Selain melakukan wawancara, penulis juga memberikan formulir yang nantinya akan diisi oleh dokter tersebut.
35 3.2.2 Tabel Diagnosa Penyakit
Dari tabel ini, penulis ingin mengumpulkan data-data gejala penyakit yang dialami pasien yang sedang terjangkit penyakit asma atau diare, seorang pakar memberikan data dan nilai Measure Belive (MB) dan Measure Disbelieve (MD) dari beberapa penyakit yang kami sertakan. Selanjutnya untuk pengisian persentase terjadinya penyakit yang tertulis akan dihitung menggunakan rumus Certainty Factor (CF).
Tabel 3.1 Nama Penyakit Diare (Entritis)
No
Gejala
Ya
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Mual
10
60
60
50
2
Perut Mules
10
80
70
40
3
BAB > 6 kali sehari
10
30
60
20
4
Mencret
70
10
80
20
5
Badan Lemas
90
10
40
20
36 Tabel 3.2 Nama Penyakit Disentri
No
Gejala
Ya
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Perut Mules
50
50
50
50
2
BAB berupa lendir
10
50
10
0
3
Feses Berdarah
10
10
40
10
4
Tidak nafsu makan
50
50
50
50
Tabel 3.3 Nama Penyakit Maag
No
Gejala
Ya
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Mual
30
10
50
50
2
Nyeri di ulu hati
30
30
40
10
3
Perut Mules
50
50
50
50
4
Begah
80
50
20
10
5
Perut perih di malam hari
10
80
30
0
37 Tabel 3.4 Nama Penyakit Cacar Air (Farisela)
No
1
Gejala
Ya
Badan terasa panas Ada
bisul
kecil
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
10
10
50
50
berisi
2
cairan bening
90
10
50
50
3
Kulit gatal
90
10
30
80
100
0
30
10
Bisul 4
kecil
dikulit
menyebar
Tabel 3.5 Nama Penyakit Cacar Api (Herpes Zoster)
No
Ya
Gejala
Ada
bisul
kecil
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
berisi
1
cairan bening
90
10
0
80
2
Bisul kecil berkelompok
100
0
0
100
3
Kulit terasa terbakar
100
20
10
90
38 Tabel 3.6 Nama Penyakit Campak Jerman (Morbili)
No
1
Gejala
Ya
Badan panas Bercak
seperti
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
10
10
50
50
ruam
2
diseluruh tubuh
90
10
10
90
3
Ruam berwarna cokelat
70
10
50
90
100
0
0
100
Tubuh 4
mengerluarkan
cairan berlebihan
Tabe 3.7 Nama Penyakit Campak Kelenjar (Rubela)
No
1
Ya
Gejala
Badan panas Bercak
seperti
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
10
10
50
50
ruam
2
diseluruh tubuh
80
10
20
80
3
Ruam berwarna cokelat
90
10
10
90
100
0
0
100
Belakang 4
sakit
telinga
terasa
39 Tabel 3.8 Nama Penyakit Demam Berdarah
No
Gejala
Ya
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Badan panas
10
10
50
50
2
Bintik merah ditubuh
70
30
20
80
3
Sakit kepala
60
40
20
70
4
Nyeri sendi
80
20
20
20
5
Nyeri di ulu hati
80
20
20
80
6
Badan terasa lemas
50
40
20
70
7
Mimisan
90
10
10
90
Tabel 3.9 Nama Penyakit Tipes
No
Ya
Gejala
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Badan meriang
10
10
50
50
2
Sakit kepala
60
40
20
80
3
Perut mual
80
20
40
60
4
BAB tidak lancar
90
50
10
90
5
Mencret
60
30
30
70
100
0
0
100
Lidah 6
putih
kotor
berwarna
40 Tabel 3.10 Nama Penyakit Sinusitis Maxilaris
No
Gejala
Ya
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Pilek
70
30
20
80
2
Kelopak mata bengkak
80
10
10
80
Selalu mencium bau tidak 3
sedap
90
50
10
80
4
Kepala pusing
60
40
40
60
Tabel 3.11 Nama Penyakit Rhinitis
No
Ya
Gejala
Tidak
MB (%)
MD (%)
MB (%)
MD (%)
1
Pilek
70
30
20
80
2
Badan lemas
70
20
30
70
3
Sering bersin di pagi hari
100
0
0
100
4
Hidung mampet
80
10
10
80
5
Hidung gatal
70
20
30
30
41 3.2.3 Representasi Pengetahuan
Dalam representasi pengetahuan, dilakukan pengumpulan dari informasi yang diperoleh dari pakar. Untuk membantu pengembangan aplikasi sistem pakar ini, maka pengetahuan yang diperoleh dalam bentuk wawancara akan diubah ke dalam tabel penyakit. Tabel ini berupa gejala penyakit yang telah berisi nilai MB dan MD pada tiap gejalanya. Dengan adanya nilai MB dan MD maka data akan dapat diaplikasikan ke dalam sistem yang sedang dibuat.
3.3
Perancangan Sistem Pakar Sistem pakar teridiri-dari 2 bagian pokok, yaitu : lingkungan pengembangan
(development environment) dan lingkungan konsultasi (consultation environment). Lingkungan pengembangan digunakan sebagai pembangunan sistem pakar baik dari segi pembangunan komponen maupun basis pengetahuan. Lingkungan konsultasi digunakan oleh seorang yang bukan ahli untuk berkonsultasi. Pada lingkungan pengembangan (development environment) penulis sebagai knowledge engineer (user) akan bekerja sama dengan pakar (domain expert) dalam membangun sistem. Pakar berfungsi sebagai suber pengetahuan yang akan disimpan dalam knowledgebase. Sedangkan knowledge engineer bertugas membuat inference engine sekaligus melengkapinya dengan antarmuka (user interface). Knowledge engineer juga bertugas menghubungkan komponen komponen tersebut menjadi sebuah kesatuan yang dapat berfungsi sebagaimana layaknya sistem pakar.
42 Sedangkan pada lingkungan konsultasi (consultation environment), user akan berkonsultasi melalui antarmuka antarmuka (user interface) yang telah dibuat oleh knowledge engineer. Data yang dimasukkan dari user kemudian dihitung dalam inference engine, inference engine menyesuaikan dengan knowledgebase yang disediakan untuk menghasilkan keputusan yang nantinya akan ditampilkan pada antarmuka (user interface) yang bisa dilihat oleh pengguna. Dari inference engine, data keputusan juga akan dikirm ke database user untuk disimpan sebagai arsip yang nantinya mungkin akan dipergunakan lagi oleh pengguna (user) tersebut. Diagram bagaimana sistem pakar kami dirancang dapat dilihat pada gambar berikut: USER
Lingkungan konsultasi USER INTERFACE
KNOWLEDGE BASE
INFERENCE ENGINE
EXPERT SISTEM BUILDING TOOLS
KNOWLEDGE ENGINEER
DOMAIN EXPERT
Gambar 3.1 Flowchart kerja sistem
DATABASE USER
Lingkungan pengembangan
43 3.3.1
Pseudocode Program Berikut merupakan pseudocode pada program kami, untuk mengetahui beberapa fungsi dari program yang ada. Untuk lebih jelas nya bisa dilihat dalam halaman lampiran. Fungsi checkup BEGIN IF NOT member BEGIN REDIRECT to ERROR END IF startup_form_submitted BEGIN INSERT session_info INTO DATABASE VAR result = DATABASE result_rows FROM session_info INSERT initial_answer INTO DATABASE END VAR result = DATABASE result_rows FROM session_info IF result_is_null BEGIN REDIRECT to initial_question END ELSE BEGIN VAR tree = tree(ANSWERS) IF tree_is_not_null BEGIN FOREACH tree BEGIN CREATE SQL penyakit_data END VAR result = DATABASE result_rows FROM penyakit_data FOREACH result BEGIN IF key_exist_in_result BEGIN END
44 END PASS output_to_external_variable LOAD answer_list PASS answer_list_to_external_variable LOAD question_list PASS question_list_to_external_variable END LOAD disease_list PASS disease_list_to_external_variable END END FUNGSI tree BEGIN IF NOT member BEGIN REDIRECT to ERROR END LOAD disease_list PARSE disease_list TO array disease LOAD answered_question PARSE answered_question TO array question PARSE input_array INSERT input_array TO DATABASE FOREACH answer BEGIN FOREACH disease BEGIN VAR data = engine(data, mb, md) ARRAY list = filtered disease and answer END END VAR a2q = DATABASE result_rows FROM answer to question data //Data relasi setiap jawaban untuk merujuk ke pertanyaan FOREACH a2q BEGIN ARRAY tree = filtered extra question END RETURN MERGE list AND tree END
45 Fungsi engine(arr(oldMB,oldMD), mb, md) BEGIN newMB = oldMB + ( mb/100 * ( 1 - oldMB)) newMD = oldMD + ( md/100 * ( 1 - oldMD)) newCF = newMB – newMD RETURN newMB,newMD,newCF END
3.3.2 Perancangan Database Pada sistem pakar ini, knowledgebase sebenarnya disimpan dalam bentuk database yaitu berupa tabel penyakit, question dan bobot, sedangkan yang lainnya merupakan bgian dari database user. Bentuk ERD dari database yang kami rancang dapat dilihat pada gambar berikut :
Gambar 3.2 ERD
46 3.3.3
Pendekatan yang Digunakan
3.3.3.1 Perhitungan dengan Certanty Factor (Faktor Kepastian) Definisi asli dari CF adalah : CF[h,e] = MB[h,e] – MD[h,e] Dengan: CF[h,e]
= faktor kepastian.
MB[h,e]
= ukuran kepercayaan terhadap hipotesis h, jika diberikan
evidence e . MD[h,e] = ukuran ketidakpercayaan terhadap hipotesis h, jika diberikan evidence e. Ada tiga hal yang mungkin terjadi pada perhitungan ini. 1. Kemungkinkan pertama: Beberapa evidence dikombinasikan untuk menentukan CF dari suatu hipotesis. Jika e1 dan e2 adalah observasi maka: MB[h,e1 ^ e2] = MD[h,e1 ^ e2] = Contoh : Andaikan suatu observasi memberikan kepercayaan terhadap h dengan MB[h,e1] = 0,3 dan MD[h,e1] = 0. Sehingga CF[h,e1] = 0,3 – 0 = 0,3. Jika ada observasi baru dengan dengan MB[h,e2] = 0,2 dan MD[h,e2] = 0, maka: MB[h,e1 ^ e2] = 0,3 + 0,2 * (1 - 0,3) = 0,44 MD[h,e1 ^ e2] = 0 CF[h,e1 ^ e2] = 0,44 – 0 = 0,44
47 2. CF dihitung dari kombinasi beberapa hipotesis. Jika h1 dan h2 adalah hipotesis, maka: MB[h1 ^ h2,e] = min(MB[h1,e], MB[h2,e]) MB[h1 v h2,e] = max(MB[h1,e], MB[h2,e])
MD[h1 ^ h2,e] = min(MD[h1,e], MD[h2,e]) MD[h1 v h2,e] = max(MD[h1,e], MD[h2,e])
Contoh : Andaikan suatu observasi memberikan kepercayaan terhadap h1 dengan MB[h1,e] = 0,5 dan MD[h1,e] = 0,2. Maka : CF[h1,e] = 0,5 – 0,2 = 0,3. Jika observasi tersebut juga memberikan kepercayaan terhadap h2 dengan MB[h2,e] = 0,8 dan MD[h2,e] = 0,1. Maka : CF[h2,e] = 0,8 – 0,1 = 0,7. Untuk mencari CF[h1 ^ h2,e] dapat diperoleh dari : MB[h1 ^ h2,e] = min(0,5; 0,8)
= 0,5
MD[h1 ^ h2,e] = min(0,2; 0,1)
= 0,1
CF[h1 ^ h2,e] = 0,5 – 0,1 = 0,4 Untuk mencari CF[h1 v h2,e] dapat diperoleh dari : MB[h1 v h2,e] = max(0,5; 0,8)
= 0,8
MD[h1 v h2,e] = max(0,2; 0,1)
= 0,2
CF[h1 v h2,e] = 0,8 – 0,2 = 0,6
48 3. Beberapa aturan saling bergandengan, ketidakpastian dari suatu aturan menjadi input untuk aturan yang lainnya maka: MB[h,s] = MB’[h,s] * max(0,CF[s,e]) Dengan MB’[h,s] adalah ukuran kepercayaan h berdasarkan keyakinan penuh terhadap validitas s. Contoh : Sariawan
= sakit sariawan
Sakit tenggorokan
= ada gejala sakit tenggorokan
Panas dalam
= ada gejala panas dalam
Aturan : /1/ IF sakit sariawan THEN ada gejala sakit tenggorokan (CF [sakit tenggorokan, sariawan] = 0,9)
/2/ IF ada gejala sakit tenggorokan THEN ada gejala sakit panas dalam (MB [panas dalam, sakit tenggorokan] = 0,7)
Maka: MB[panas dalam, sakit tenggorokan] = (0,7) * (0,9) = 0,63