BAB IV IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi Pada bagian ini, akan dijelaskan mengenai lingkungan implementasi dari sistem pakar ini.
4.1.1
Lingkungan Implementasi
Sistem pakar ini dibangun dengan spesifikasi perangkat keras sebagai berikut: 1. Tipe komputer : notebook Toshiba Portege M500 2. Prosesor
: Intel Core 2 Duo T5300
3. Memori
: 2 GB DDR2
4. Harddisk
: 80 GB
Lingkungan pengembangan tersebut memiliki spesifikasi perangkat lunak sebagai berikut: 1. Sistem operasi Microsoft Windows Vista 32-bit 2. NetBeans 6.1 IDE 3. Notepad++ 4. Microsoft Excel 2003
4.1.2
Batasan Implementasi
Implementasi sistem pakar ini memiliki beberapa batasan, yaitu: 1. Dataset masukan diasumsikan selalu benar. 2. Masukan pengguna diasumsikan selalu benar. 3. Sebaiknya pengguna sistem pakar adalah pakar sendiri karena ada intervensi langsung dengan basis pengetahuan.
4.1.3
Implementasi Kelas
Implementasi kelas dalam Tugas Akhir ini dapat dilihat pada gambar di bawah ini. Kelas MainFrame merupakan kelas antarmuka dan kelas MainMCRDR adalah kelas utama dalam pembangkitan pengetahuan Induct/MCRDR. Pembagian kelas-kelas tersebut berdasarkan
IV-1
IV-2 package dapat dilihat pada Subbab 3.5.5. Detil implementasi kelas ini dapat dilihat pada Lampiran F.
Node +rule +divider +completeLevel() +completeTree() +traceNode() +tracePath() +traceTree() +printNode() +printNodePath() +printTree()
Rules
Inisialisasi ListAttrb
-parent
-klasid
+Inisialisasi() +run()
TwoDimArrList
+getAtt() +getKelas() +attToCond() +print()
-rows +rowsize +colcount +getRow() +get() +set() +addRow() +addRow()
-rules -cond -concl +Rules() +setRule() +getCond() +getIdConcl() +getConcl() +print()
MainMCRDR
* MainFrame
Condition -cond +listsize +Condition() +add() +addCond() +get() +getAtt() +getMemAtt() +arrToCond() +meetReq() +balanceCond() +combineCond() +combineRule() +print()
*
-main -main2 -main3 -main4 +MainFrame() +inisialisasiFile() +buildTree()
*
* ListData -klasid +ListData() +copy() +getIdTerbanyak() +getTerbanyak() +getIdTarget() +getTarget() +countE() +countQTerbanyak() +countQ() +countS() +countPTerbanyak() +countP() +countCTerbanyak() +countC() +countRTerbanyak() +countR() +sameClass() +filterCov() +filterNotCov() +generateRoot() +generateRuleTerbanyak() +generateRule() +randoming() +breaking() +breakTraining() +breakTest() +print()
-listAtt -listData +stoprule +idnode +root +solusi +solusiDiagnosis +solusiObat +nbchild +MainMCRDR() +preprocessData() +generateTree() +printSummary() +printStatTraining() +printStatCross() +buildMCRDR() +Diagnosis() +Obat() +tulisDiagnosis() +tulisObat() +validasi() +isWanita() +cekKeluhanDiagnosis() +optimasi() +hitungKemunculanKelas()
Gambar IV-1 Diagram kelas sistem pakar kesehatan
4.1.4
Implementasi Antarmuka
Pembangunan antarmuka pada tugas akhir ini menggunakan IDE Netbeans 6.1. Berikut ini adalah tabel objek pada antarmuka yang diimplementasikan:
Tabel IV-1 Deskripsi objek pada layar utama No Kelas Objek 1.
JMenuBar
jMenuBar1
Keterangan Menubar pada jendela utama
IV-3 2.
JFrame
mainframe
Jendela layar utama
panelDiagnosis
Panel untuk menampung objek hasil diagnosis
3.
JPanel
panelObat
Panel untuk menampung objek hasil terapi
panelInput
Panel untuk menampung objek untuk input data pasien
tomboldiagnosis
Tombol untuk melakukan diagnosis berdasarkan input data pengguna
4.
JButton
tombolulangi
Tombol untuk membersihkan semua pilihan pengguna dan solusi yang dihasilkan
6.
7.
JRadioButton
JLabel
kelaminlaki
Pilihan kelamin laki-laki
kelaminperempuan
Pilihan kelamin perempuan
umuranak
Pilihan umur anak-anak
umurdewasa
Pilihan umur dewasa
suhurendah
Pilihan suhu tubuh rendah
suhunormal
Pilihan suhu tubuh normal
suhutinggi
Pilihan suhu tubuh tinggi
tekananrendah
Pilihan tekanan darah rendah
tekanannormal
Pilihan tekanan darah normal
tekanantinggi
Pilihan tekanan darah tinggi
riwayatNone
Pilihan tidak ada riwayat penyakit
riwayatYes
Pilihan ada riwayat penyakit
labelKelamin
Label untuk menuliskan kelamin
labelUmur
Label untuk menuliskan umur
labelSuhu
Label untuk menuliskan suhu tubuh
labelTekanan
Label untuk menuliskan tekanan darah
labelRiwayat
Label untuk menuliskan riwayat penyakit
labelKeluhan
Label untuk menuliskan keluhan
labelStatus
Label untuk menuliskan status sistem pakar
8.
JList
listriwayat
List yang menampung kemunculan riwayat penyakit dari dataset
listkeluhan
List yang menampung kemunculan keluhan dari dataset
9.
JSeparator
listdiagnosis
List yang menampung hasil diagnosis
listobat
List yang menampung anjuran terapi
jSeparator1
Pemisah
IV-4 Rincian objek pada layar utama dapat dilihat pada gambar berikut:
Gambar IV-2 Antarmuka utama sistem pakar kesehatan Tabel IV-2 Deskripsi objek pada layar validasi No Kelas Objek 1.
2.
JFrame
JPanel
Keterangan
jFrame1
Jendela layar validasi
panelscreen
Panel untuk menampung layar validasi
panelValidasi
Panel untuk menampung objek validasi
panelClrScr
Panel untuk menampung komponen yang berhubungan dengan layar validasi
3.
JTextField
3.
JTextArea
jumlahFold
Input jumlah fold untuk validasi cross
mainscreen
Area untuk menampilkan pohon pengetahuan dan hasil validasi
tombolValidasi 4.
6.
JButton
JRadioButton
Tombol untuk menjalankan validasi terhadap pengetahuan
tombolClrScr
Tombol untuk membersihkan layar
radioValDataset
Pilihan validasi dataset
radioValCross
Pilihan validasi cross
IV-5
Gambar IV-3 Antarmuka validasi sistem pakar
4.2 Pengujian Subbab ini akan membahas hal-hal yang berkaitan dengan pengujian dari sistem pakar kesehatan ini, termasuk analisis terhadap hasil pengujian.
4.2.1
Lingkungan Pengujian
Lingkungan pengujian dalam pengujian sistem pakar ini sama dengan lingkungan implementasi pada Subbab 4.1.1. Proses pengujian ini menggunakan perangkat lunak WEKA (Waikato Environment for Knowledge Analysis) versi 3.6.0.
4.2.2
Tujuan Pengujian
Pengujian sistem pakar kesehatan ini mempunyai tujuan: 1. Memeriksa apakah hasil implementasi sistem pakar kesehatan ini berjalan dengan baik dan sesuai dengan hasil analisis dan perancangan. Pengujian ini merupakan pengujian fitur-fitur sistem pakar. 2. Memeriksa akurasi basis pengetahuan dari sistem pakar. 3. Memeriksa apakah ranah masalah dalam Tugas Akhir ini lebih cocok diakuisisi oleh Induct/MCRDR atau Induct/RDR.
IV-6 4.2.3
Bahan Pengujian
Bahan pengujian yang digunakan adalah file dataset diagnosis dan file dataset obat. Kedua file ini merupakan dataset yang digunakan untuk membentuk basis pengetahuan, dan diperoleh dari pakar melalui kartu pasien.
4.2.4
Skenario dan Kriteria Pengujian
Pengujian sistem pakar kesehatan ini dibagi dalam dua bagian, yaitu: 1. Pengujian fitur sistem pakar, terdiri dari pengujian implementasi kelas. Pengujian ini dilakukan untuk memenuhi poin nomor 1 pada Subbab 4.2.2. 2. Eksperimen pembentukan model data, meliputi pengujian akurasi basis pengetahuan dan perbandingan pengujian antara Induct/MCRDR dengan Ridor pada WEKA. Eksperimen ini dilakukan untuk memenuhi poin nomor 2 dan 3 pada Subbab 4.2.2.
Pengujian akurasi pengetahuan oleh sistem meliputi dua metode pengujian, yaitu pengujian akurasi pelatihan dan pengujian k-fold cross validation, di mana validasi dilakukan dengan iterasi sebanyak k kali. Selain itu, pada pengujian k-fold cross validation juga dilakukan pengacakan baris-baris dataset. Kedua pengujian ini dilakukan masing-masing pada pohon diagnosis penyakit dan pada pohon pemberian terapi.
4.2.5
Metode Pengukuran
Metode pengukuran yang digunakan dalam pengujian ini adalah sebagai berikut: 1.
Pengujian implementasi kelas Pengujian implementasi kelas dilakukan dengan melihat apakah semua fitur yang dimiliki oleh sistem dapat berjalan dengan baik tanpa ada kesalahan.
2.
Pengujian akurasi basis pengetahuan Induct/MCRDR Metode pengukuran yang digunakan dalam pengujian akurasi basis pengetahuan Induct/MCRDR adalah menggunakan precision, recall, dan F-measure [SIE05]. Rumus dari ketiga metode pengukuran adalah sebagai berikut:
precision = recall =
correct correct + falsePositive
correct correct + falseNegative
F − measure =
2 × precision × recall precision + recall
(4.1)
(4.2)
(4.3)
IV-7 dengan correct adalah jumlah slot yang terisi benar, falsePositive adalah jumlah slot yang terisi namun salah, dan falseNegative adalah jumlah slot yang tidak terisi. Ketiga metode tersebut digunakan untuk menghitung akurasi dari setiap baris dataset (jika digunakan 100 baris dataset, maka akan terdapat 100 nilai precision, recall, dan F-measure).
Untuk menggabungkan nilai-nilai precision, recall, dan, F-measure dari sekumpulan dataset yang digunakan dalam pengujian ini ke dalam sebuah nilai tunggal, digunakan metode microaverage dan macroaverage. Pada microaverage, semua correct, falsePositive, dan falseNegative untuk setiap dataset dijumlahkan, kemudian precision, recall, dan F-measure dihitung berdasarkan penjumlahan tersebut. Pada macroaverage, nilai F-measure dihitung dengan merata-rata nilai F-measure setiap baris dataset.
Pada pengujian k-fold cross validation, nilai microaverage dan macroaverage dihitung dengan menghitung nilai rata-rata microaverage dan macroaverage dari setiap iterasi.
Contoh perhitungan akurasi microaverage dan macroaverage dapat dilihat pada perhitungan di bawah ini:
Tabel IV-3 Contoh kasus dan perhitungan akurasinya Solusi yang Solusi False False Correct Diharapkan Sistem Positive Negative [a, b,c]
[d, e, f]
3
0
0
[a, b, c]
[-]
[-]
[a, b, e,
2
2
1
f]
[e, f]
[a,b]
[d]
0
0
0
[0]
[-]
[-]
0
2
2
[-]
[a, b]
[c, d]
[a, b, c]
[a, b]
[-]
[c, d]
[a, b]
F-
Precision
Recall
3 3
3 3
1
2 4
2 3
4 7
0
0
0
0
0
0
Measure
Nilai microaverage dihitung dengan menjumlahkan setiap kolom correct, falsePositive, dan falseNegative. Berdasarkan tabel di atas, maka nilai dari ketiga atribut tersebut berturut-turut adalah 5, 4, dan 3. Dengan demikian, didapatkan nilai precisionmicro sebesar
5 5 , recallmicro sebesar , dan F-measuremicro sebesar 9 8
IV-8 10 = 58.8% . Nilai F-measuremicro ini digunakan sebagai nilai dari microaverage. 17 Perhitungan nilai macroaverage dilakukan dengan merata-rata nilai F-measure dari
1+ setiap dataset, yaitu:
4.2.6
4 +0+0 11 7 = = 39,28% . 4 28
Hasil Pengujian
Berikut adalah hasil pengujian dari sistem pakar ini: 1. Pengujian fitur sistem pakar Secara umum, pengujian fitur sistem pakar berhasil. Sistem pakar dapat memenuhi spesifikasi kebutuhan sistem pada Subbab 3.1.1. Detil dari pengujian dapat dilihat pada Lampiran G. 2. Eksperimen pembentukan model data a. Pengujian akurasi basis pengetahuan Induct/MCRDR oleh sistem. Hasil dan detil dari pengujian ini dapat dilihat pada Lampiran H. b. Perbandingan
pengujian
akurasi
basis
pengetahuan
antara
Ridor
dan
Induct/MCRDR. Hasil dan detil lampiran ini dapat dilihat pada Lampiran I.
4.2.7
Analisis Hasil Pengujian
Subbab ini akan menjelaskan analisis hasil pengujian pada Subbab 4.2.4.
4.2.7.1 Analisis Hasil Pengujian Akurasi Basis Pengetahuan Induct/MCRDR Oleh Sistem Basis pengetahuan yang terbentuk menggunakan Induct/MCRDR dapat dilihat pada lampiran H. Dari 150 dataset masukan, terbentuk dua buah pohon MCRDR, yaitu pohon diagnosis penyakit dan pohon pemberian terapi. Pohon diagnosis penyakit merupakan pohon 2 level yang mempunyai 99 buah rule, sedangkan pohon pemberian terapi merupakan pohon 3 level yang mempunyai 130 buah rule.
Pada lampiran H, dapat dilihat bahwa Induct/MCRDR dapat mengklasifikasikan dataset diagnosis penyakit dengan cukup baik. Hal ini terlihat dari akurasi microaverage sebesar 78.65% dan akurasi macroaverage sebesar 82.98%. Untuk klasifikasi dataset pemberian
IV-9 terapi, performa Induct/MCRDR masih kurang. Hal ini terlihat dari akurasi microaverage sebesar 48.46% dan akurasi macroaverage sebesar 53.05%. Pada pengujian cross validation, akurasi microaverage dan macroaverage selalu berubahubah. Hal ini dikarenakan adanya pengacakan dataset dan kemunculan data yang sedikit pada dataset. Jika data yang kemunculannya sedikit termasuk pada partisi data uji dan tidak ada yang berada pada partisi data latih, maka akurasinya akan kecil karena pada pohon pengetahuannya yang terbentuk, tidak terdapat data uji tersebut. Berikut adalah ringkasan hasil akurasi dari pengujian cross validation:
Tabel IV-4 Akurasi kedua basis pengetahuan pada pengujian 10-fold cross validation
Basis pengetahuan
microaverage (%)
macroaverage (%)
diagnosis penyakit
55.34
57.12
pemberian terapi
24.83
25.06
Selanjutnya, untuk memastikan bahwa Induct/MCRDR sudah berjalan dengan baik, setiap kelas diagnosis pada dataset diagnosis penyakit yang kemunculannya hanya berjumlah satu akan dihapus beserta baris datanya. Dataset pemberian terapi mengikuti dataset diagnosis penyakit, yaitu menghapus baris data yang dihapus pada dataset diagnosis penyakit. Hal ini bertujuan untuk meningkatkan kemungkinan terpilihnya sebuah kelas solusi minimal 1 buah pada data latih dan data uji di saat yang bersamaan. Dengan demikian, diharapkan akurasi cross validation ini menjadi lebih baik.
Berikut ini adalah hasil pengujiannya:
Tabel IV-5 Akurasi kedua basis pengetahuan pada pengujian 10-fold cross validation sesudah dilakukan penghapusan pada dataset
Basis pengetahuan
microaverage (%)
macroaverage (%)
diagnosis penyakit
53.51
56.21
pemberian terapi
27.40
27.75
Akurasi pengujian di atas tetap rendah, karena masih banyak data yang jumlah kemunculannya tidak banyak. Hal ini membuat pembelajaran Induct/MCRDR menjadi kurang baik. Untuk itu, dilakukan pengujian pada dua kelas tertinggi pada dataset diagnosis penyakit. Kelas solusi yang bukan dua kelas tertinggi dianggap menjadi satu kelas solusi negatif. Data pada dataset pemberian terapi mengikuti dataset diagnosis penyakit. Berikut adalah hasil pengujiannya:
IV-10 Tabel IV-6 Hasil pengujian dengan dataset pada dua kelas tertinggi pada dataset diagnosis penyakit
Basis pengetahuan
microaverage (%)
macroaverage (%)
diagnosis penyakit
98.34
98.44
pemberian terapi
48.36
52.99
Tabel IV-7 Hasil pengujian 10-fold cross validation diagnosis penyakit
Basis pengetahuan
pada dua kelas tertinggi pada dataset
microaverage (%)
macroaverage (%)
diagnosis penyakit
90.39
90.44
pemberian terapi
25.64
25.38
Dari hasil eksperimen tersebut, dapat dilihat bahwa dataset masukan sangat mempengaruhi akurasi pengujian. Berikut ini adalah analisis dari dataset masukan: 1. Jumlah rule berbanding lurus dengan kelas solusi. Semakin beragam nilai kelas solusi (contoh dalam diagnosis penyakit: ispa, rheumatism, tendinitis, dll), maka jumlah rule yang dihasilkan sistem pakar akan semakin banyak pula. Hal ini terjadi karena proses pembelajaran dilakukan terhadap masing-masing kelas solusi dan akan menghasilkan minimal satu buah rule untuk setiap nilai kelas solusi. Oleh sebab itu, jumlah rule akan bertambah jika nilai kelas solusi semakin beragam. Dalam Tugas Akhir ini, kelas solusi pada dataset cukup beragam sehingga rule yang dihasilkan relatif banyak jika dibandingkan dengan jumlah data pada dataset. 2. Kualitas dataset ditentukan dari distribusi kemunculan kelas solusi. Sebuah dataset yang baik adalah sebuah dataset yang memiliki ketersebaran data yang baik dan kuantitas yang mencukupi untuk proses pembelajaran. Ketersebaran data yang baik dapat dilihat dari jumlah kemunculan kelas solusi yang merata dan banyak (lebih besar dari 30 kemunculan untuk setiap kelas solusi). Misalnya, sebuah dataset yang mengandung 100 buah data memiliki kelas solusi A, B, dan C. Dataset tersebut dapat dikatakan baik jika kemunculan A, B, dan C merata, seperti 32, 33, dan 35. 3. Kualitas pengetahuan yang dihasilkan ditentukan dari kualitas dataset Karena proses pembelajaran Induct/MCRDR ini merupakan proses generalisasi dari kasus-kasus yang spesifik, maka kemunculan setiap kelas solusi yang banyak dan merata akan memudahkan Induct/MCRDR untuk mendapatkan pola pembelajaran. Kemunculan kelas solusi yang sedikit dapat menyebabkan kesalahan dalam
IV-11 mendapatkan pola pembelajaran. Hal ini dikarenakan kelas solusi yang sedikit dianggap tidak dapat mewakili keseluruhan data untuk kelas solusi tersebut. Dari
pengujian
yang
dilakukan,
pengetahuan
terbaik
yang
dihasilkan
Induct/MCRDR terdapat pada pengujian dua kelas yang terbanyak kemunculannya. Dari sini dapat disimpulkan bahwa akurasi atau kualitas pengetahuan ditentukan dari kualitas dataset. Kualitas dataset yang baik akan menghasilkan pengetahuan yang baik pula. Dataset yang digunakan dalam Tugas Akhir ini belum memenuhi kriteria sebagai dataset yang baik karena kemunculan kelas solusinya tidak merata dan masih banyak kemunculan kelas solusi yang berjumlah satu. Dengan demikian, kualitas pengetahuan yang terbentuk masih kurang baik.
4.2.7.2 Analisis
Hasil
Perbandingan
Pengujian
Antara
Ridor
dan
Induct/MCRDR Perbandingan pengujian antara Ridor dan Induct/MCRDR ditujukan untuk membuktikan apakah Induct/MCRDR memiliki performansi yang lebih baik daripada Induct/RDR untuk permasalahan klasifikasi majemuk yang dijadikan klasifikasi tunggal. Ridor merupakan implementasi dari Induct/RDR yang menangani permasalahan klasifikasi tunggal. Dataset yang digunakan adalah dataset diagnosis penyakit dan dataset pemberian terapi yang telah diubah. Perubahan dataset ini terletak pada kelas solusi majemuk yang diubah menjadi kelas solusi tunggal dengan menggabungkan dua solusi atau lebih menjadi satu solusi. Contoh: “rheumatism, ispa” menjadi “rheumatism-dan-ispa”. Detil dari pengujian ini dapat dilihat pada Lampiran I.
Berikut ini adalah ringkasan perbandingan akurasi pengujian antara Ridor dan Induct/MCRDR:
Tabel IV-8 Akurasi Ridor dan Induct/MCRDR pada pengujian menggunakan dataset
Basis pengetahuan diagnosis penyakit pemberian terapi
Ridor
Induct/MCRDR
28%
60.67%
15.33%
53.33%
Tabel IV-9 Akurasi Ridor dan Induct/MCRDR pada pengujian 10-fold cross validation
Basis pengetahuan diagnosis penyakit pemberian terapi
Ridor
Induct/MCRDR
27.33%
35.42%
12%
15.87%
IV-12 Dari kedua tabel di atas, dapat dilihat bahwa Induct/MCRDR memiliki akurasi yang lebih baik daripada Ridor. Dengan demikian dapat disimpulkan bahwa pengetahuan lebih baik diakuisisi dengan Induct/MCRDR.
4.2.8
Kesimpulan Pengujian
Dari hasil pengujian di atas, dapat disimpulkan beberapa poin berikut: 1. Fungsi dasar sistem pakar ini sudah berjalan dengan baik dan siap digunakan. 2. Kualitas dataset menentukan tingkat akurasi yang dihasilkan oleh sistem pakar. 3. Akurasi dataset diagnosis penyakit secara umum jauh lebih baik daripada akurasi dataset pemberian terapi. 4. Penghapusan kelas diagnosis yang berjumlah satu beserta baris datanya tidak menaikkan akurasi pengujian. 5. Akurasi pengujian pada data diagnosis penyakit yang kelas kemunculannya dua terbesar cukup tinggi. Hal ini menunjukkan pembelajaran Induct/MCRDR dapat berjalan dengan baik jika kemunculan kelas solusi pada dataset merata dan banyak. 6. Pengetahuan diagnosis penyakit dan pemberian terapi lebih baik diakuisisi dengan Induct/MCRDR daripada Induct/RDR.