32
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.
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
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.
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)
Ya Tidak No Gejala
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
Tabel 3.2 Nama Penyakit Disentri
Ya Tidak No Gejala
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
Ya Tidak No Gejala
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
Tabel 3.4 Nama Penyakit Cacar Air (Farisela)
Ya Tidak No Gejala
MB (%) MD (%) MB (%) MD (%)
1 Badan terasa panas 10 10 50 50
2
Ada bisul kecil berisi
cairan bening 90 10 50 50
3 Kulit gatal 90 10 30 80
4
Bisul kecil dikulit
menyebar 100 0 30 10
Tabel 3.5 Nama Penyakit Cacar Api (Herpes Zoster)
Ya Tidak No Gejala
MB (%) MD (%) MB (%) MD (%)
1
Ada bisul kecil berisi
cairan bening 90 10 0 80
2 Bisul kecil berkelompok 100 0 0 100 3 Kulit terasa terbakar 100 20 10 90
Tabel 3.6 Nama Penyakit Campak Jerman (Morbili) Ya Tidak No Gejala MB (%) MD (%) MB (%) MD (%) 1 Badan panas 10 10 50 50 2
Bercak seperti ruam
diseluruh tubuh 90 10 10 90
3 Ruam berwarna cokelat 70 10 50 90
4
Tubuh mengerluarkan
cairan berlebihan 100 0 0 100
Tabe 3.7 Nama Penyakit Campak Kelenjar (Rubela)
Ya Tidak No Gejala
MB (%) MD (%) MB (%) MD (%)
1 Badan panas 10 10 50 50
2
Bercak seperti ruam
diseluruh tubuh 80 10 20 80
3 Ruam berwarna cokelat 90 10 10 90
4
Belakang telinga terasa
Tabel 3.8 Nama Penyakit Demam Berdarah
Ya Tidak No Gejala
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
Ya Tidak No Gejala 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
6
Lidah kotor berwarna
Tabel 3.10 Nama Penyakit Sinusitis Maxilaris
Ya Tidak No Gejala
MB (%) MD (%) MB (%) MD (%)
1 Pilek 70 30 20 80
2 Kelopak mata bengkak 80 10 10 80
3
Selalu mencium bau tidak
sedap 90 50 10 80
4 Kepala pusing 60 40 40 60
Tabel 3.11 Nama Penyakit Rhinitis
Ya Tidak No Gejala
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
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.
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:
Gambar 3.1 Flowchart kerja sistem USER
KNOWLEDGE BASE
EXPERT SISTEM BUILDING TOOLS
USER INTERFACE INFERENCE ENGINE DOMAIN EXPERT KNOWLEDGE ENGINEER DATABASE USER Lingkungan konsultasi Lingkungan pengembangan
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
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
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 :
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
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
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: