EXPERT SYSTEMS
Dr. Widodo Budiharto
wbudiharto@binus.edu
Sistem Pakar merupakan cabang dari ilmu kecerdasan buatan yang mampu mensimulasikan perilaku dan kecerdasan manusia. Artikel ini memberikan overview konsep Sistem Pakar dan Penerapannya untuk aplikasi Pemberian Kredit menggunakan bahasa Visual C# .Net.
Pendahuluan
Sistem pakar adalah program komputer yang mensimulasikan penilaian dan perilaku manusia atau organisasi yang memiliki pengetahuan dan pengalaman ahli dalam bidang tertentu. Biasanya, sistem seperti ini berisi basis pengetahuan yang berisi akumulasi pengalaman dan satu set aturan untuk menerapkan pengetahuan dasar untuk setiap situasi tertentu. Sistem pakar canggih dapat ditingkatkan dengan penambahan basis pengetahuan atau set aturan. Di antara yang paling terkenal sistem pakar yaitu aplikasi bermain catur dan system diagnosis medis. Sedangkan definisi yang paling dikenal yaitu :
- Sebuah model dan prosedur terkait yang memaparkan, dalam satu domain tertentu, derajat keahlian dalam pemecahan masalah yang sebanding dengan seorang pakar manusia (Ignizio)
- Sistem pakar adalah sistem komputer yang mengemulasi kemampuan pengambilan keputusan seorang ahli manusia. (Giarrantano)
Pemrosesan yang dilakukan oleh system pakar merupakan pemrosesan pengetahuan, bukan pemrosesan data pada system komputer konvensional. Pengetahuan (knowledge) adalah pemahaman secara praktis maupun teoritis terhadap suatu obyek atau domain tertentu. Pengetahuan yang digunakan pada sistem pakar merupakan serangkaian informasi mengenai gejala-diagnosa, sebab-akibat, aksi reaksi tentang suatu domain tertentu (misalnya domain diagnosa medis). Beberapa model representasi pengetahuan yang penting adalah :
- Jaringan semantic (Semantic Nets)
- Bingkai (frame)
- Kaidah Produksi (Production Rule)
- Logika Predikat (Predicate Logic)
Secara umum, definisi tradisional sebuah program komputer biasanya:
Dalam sistem pakar, definisi berubah menjadi:
Mesin inferensi + Pengetahuan = SISTEM PAKAR
Dengan system pakar, permasalahan yang seharusnya hanya bisa diselesaikan oleh para pakar/ahli, dapat diselesaikan oleh orang biasa/awam. Sedangkan, untuk para ahli, sistem pakar juga akan membantu aktivitas mereka sebagai asisten yang seolah-olah sudah mempunyai banyak pengalaman.
Gambar 2.1 Model Sistem Pakar
Menurut Turban [3], Sistem Pakar dapat ditampilkan dengan dua lingkungan, yaitu lingkungan pengembangan dan lingkungan konsultasi (runtime). Lingkungan pengembangan digunakan oleh ES builder untuk membangun komponen dan memasukkan pengetahuan ke dalam basis pengetahuan. Lingkungan konsultasi digunakan oleh user nonpakar untuk memperoleh pengetahuan dan nasihat pakar. Lingkungan ini dapat dipisahkan setelah sistem lengkap.
Tiga komponen utama yang tampak secara virtual di setiap sistem pakar adalah :
- Basis pengetahuan
Merupakan representasi pengetahuan dari seorang pakar yang diperlukan untuk memahami, memformulasikan dan memecahkan masalah. Terdiri dari 2 elemen dasar yaitu :
- Fakta yang berupa informasi tentang situasi permasalahan, teori dari area permasalahan atau informasi tentang objek.
- Spesial heuristik yang merupakan informasi tentang cara bagaimana membangkitkan fakta.
- Mesin inferensi
Membuat inferensi yang memutuskan rule-rule mana yang akan digunakan.
- antarmuka pengguna.
Merupakan bagian dari sistem pakar yang berfungsi sebagai pengendali masukan dan keluaran. User interface melayani user selama proses konsultasi mulai dari tanya-jawab untuk mendapatkan fakta-fakta yang dibutuhkan oleh inference engine sampai menampilkan output yang merupakan kesimpulan dan solusi.
Informasi dari pakar harus dijadikan pengetahuan bagi system pakar yang akan kita kembangkan. Pengetahuan dari system pakar selanjutnya dapat direpresentasikan dengan beberapa cara. Salah satu yang paling umum untuk merepresentasikan pengetahuan dalam bentuk aturan IF-THEN, misalnya :
IF the car doesn’t run and The fuel gauge reads empty
THEN fill the gas tank
Tabel di bawah menggambarkan persentase sistem pakar yang dikembangkan pada area tertentu:
Area |
Percentase |
Produksi/manajemen operasi | 48% |
Keuangan | 17% |
Sistem Informasi | 12% |
Pemasaran | 10% |
AKuntansi | 5% |
Bisnis Internasional | 3% |
Sumber daya Manusia | 2% |
lainnya | 2% |
Kelebihan dan karakteristik Sistem Pakar
Sistem pakar banyak digunakan pada aplikasi terkini dan komplek karena :
- Sistem pakar dapat bertindak sebagai konsultan, instruktur, atau pasangan / rekan.
- Meningkatkan availability, kepakarran tersedia pada semua perangkat computer.
- Mengurangi biasa
- permanen
- Pengetahuan dapat tidak lengkap – namun keahlian dapat diperluas sesuai kebutuhan. Program konvensional harus “lengkap” sebelum mereka dapat digunakan.
- Database yang cerdas, system pakar dapat digunakan untuk mengakses databsaesecara cerdas, misalnya data mining.
Sistem pakar biasanya didesai untukmemiliki karakteristik berikut :
- High performance
- Adequate response time
- Good reliability
- understandable
Membangun Sistem Pakar
Pada dasarnya ada 4 langkah untuk membangun sebuah sistem pakar:
1. Analisis
2. Spesifikasi
3. Pengembangan
4. Penyebaran
Model spiral biasanya digunakan untuk pengembangan software dan sangat umum untuk menerapkan pendekatan ini. Penjelasannya dari 4 langkah pengembangan sebagai berikut :
Analisis
Tujuan analisis adalah untuk mengidentifikasi aplikasi yang potensial . Aplikasi yang mungkin termasuk diagnostik, controller, dll. Selama analisis pengembang juga harus menilai kesesuaian pengetahuan rekayasa teknologi untuk aplikasi ini. Anda harus yakin dan bertanya apakah system ini dapat bekerja lebih baik? Hal ini berlaku untuk menerapkan semua jenis kecerdasan buatan untuk memecahkan masalah.
Spesifikasi
Langkah spesifikasi adalah tempat pengembang mendefinisikan apa yang sistem pakar dapat dilakukan. Para pengembang juga harus bekerja dengan para pakar untuk belajar dan merencanakan pengembangan sistem. Ahli adalah manusia yang diidentifikasi sebagai ahli di domain bidang tertentu, seperti psikolog, dokter dan ilmuwan. Pengembang harus membiasakan diri dengan masalah sehingga pengembangan sistem dapat dilakukan. Pengembang akan menghabiskan sejumlah besar waktu dalam fase memperoleh pengetahuan.
Mendefinisikan apakah yang mampu dilakukan oleh sebuah system pakar adalah sesuatu yang sangat menantang. Para ahli bisa jadi mengatasi masalah dengan cara yang berbeda. Beberapa ahli mungkin membayangkan fungsionalitas yang berbeda pada sebuah system daripada seorang pengembang yang lebih memahami keterbatasan dari software. Hal ini juga penting untuk meyakinkan pada para pakar bahwa tujuan dari sistem pakar adalah bukan untuk menggantikan para ahli, tetapi untuk menumbuhkembangkan pengetahuan dan keahlian di seluruh organisasi.
Pengembangan
Di sini, pengembang harus belajar bagaimana ahli melakukan tugas (akuisisi pengetahuan) dalam berbagai kasus. Pada dasarnya ada tiga jenis kasus pengembang harus mendiskusikan dengan ahli: saat ini, historis, dan hipotetis. Kasus saat ini dapat diperoleh dengan mengamatai ahli melakukan tugas. Kasus sebelumnya (historis) dapat dibahas dengan berdiskusi dengan ahli tugas yang dilakukan di masa lalu. Dan, kasus hipotetis dapat diperoleh dengan memintai ahli menjelaskan bagaimana tugas harus dilakukan dalam situasi hipotetis (hypothetical situation).
Berikut ini contoh hasil pengembangan system pakar dan sesi pertanyaan untuk diagnosa penyakit secara online [6].
Gambar 2.2 Diagnosa penyakti kulit secara online [6]
Case Study : Aplikasi Sistem Pakar Menggunakan Visual C# .Net
Sistem pakar dapat digunakan untuk membangun Aplikasi Loan Evaluation berdasarkan input income, employment, education dan referensi seseorang. Gambar di bawah merupakan contoh sederhana decision rule yang dapat digunakan yang dikembangkan dari [5]:
Gambar 2.3 Decision rule untuk Loan Evaluation Expert System
Buatlah aplikasi Sistem pakar tersebut menggunakan Visual C# 2010 Express edition. Dengan langkah –langkahnya:
- Buat proyek baru dengan nama ExpertSystemDemo
Gambar 2.4 Membuat proyek baru di Visual C# .Net
- Buat form Utama yang terdiri dari label, button dan picturebox dengan desain sebagai berikut :
Gambar 2.5. Form utama aplikasi
Aksi yang dilakukan ketika button Proceed diklik adalah menampilkan form income, dengan kode sebagai brikut :
private void btnProceed_Click(object sender, EventArgs e)
{
frmIncome i = new frmIncome();//buat objek form Income
this.Hide(); //sembunyikan form utama
i.Show();//tampilkan form Income
}
- Pada form income memiliki radio button,yang jika button Evaluate diklik akan menentukan status sebagai berikut :
Gambar 2.6. Form income dan tampilan hasil jika income High
private void btnEvaluate_Click(object sender, EventArgs e)
{
frmEmployment frmemp = new frmEmployment();//buat obyek
frmReferences frmref = new frmReferences();
if (this.rbHigh.Checked==true) //jika radio button dengan income High dipilih
{
MessageBox.Show(“Grant the Loan”, “Result”); // Dapat pinjaman
}
else if (this.rbMed.Checked == true) //jika menengah
{
this.Hide();
frmemp.Show(); //cek status Employment
}
else
{
this.Hide();
frmref.Show(); //cek dulu status referensi
}
}
- Jika income medium, maka akan dicek status Employment sebagai berikut, dimana memanfaatkan variable global yang dibuat pada suatu kelas.
namespace ExpertSystemDemo
{
class Employment
{
public static string strEmployed=”No”;
public static string strUnEmployed=”No”;
}
}
Variabel global ini akan digunakan untuk identifikasi penilain selanjutnya pada form Education
Gambar 2.7 . Form Employment
private void btnEvaluateEmployment_Click(object sender, EventArgs e)
{
frmEducation frmed = new frmEducation();
if (this.rbEmployed.Checked == true)
{
ExpertSystemDemo.Employment.strEmployed = “Yes”;
ExpertSystemDemo.Employment.strUnEmployed = “No”;
}
else
{
ExpertSystemDemo.Employment.strEmployed = “No”;
ExpertSystemDemo.Employment.strUnEmployed = “Yes”;
}
this.Hide();
frmed.Show();
}
- Form education akan mengecek apakah status employment dan pendidikan untuk menentukan status pemberian loan
Gambar 2.8. Form utama aplikasi
private void btnEvaluateEducation_Click(object sender, EventArgs e) {
frmReferences frmref = new frmReferences();
frmFinal frmfin = new frmFinal();
if (ExpertSystemDemo.Employment.strEmployed == “Yes”)
{
//jika bekerja dan pendidikan tinggi
if (this.rbHigh.Checked == true)
{
MessageBox.Show(“Grant the Loan”, “Recomendation”);
}
else
{
MessageBox.Show(“Investigate further”, “Result”);
}
}
else
if (this.rbHigh.Checked==true )
{
MessageBox.Show(“Investigate further”, “Recomendation”);
}
else
{
MessageBox.Show(“Refuse the Loan”, “Recomendation”);
}
this.Hide();
frmfin.Show();
}
Jika sudah selesai, maka user dapat rerun atau keluar dari aplikasi. Aplikasi yang komplek akan semakin cerdas jika basis data pengetahuan dari para pakar lebih banyak. Untuk pengembangan selanjutnya, Anda dapat mengembangkan system mobile Medical Expert System sebagai berikut ;
Gambar 2.9. Mobile Medical Expert System [4].
Referensi :
[1]. Introduction to Expert Systems: The Development and Implementation of Rule-Based Expert Systems, James P. Ignizio, McGraw-Hill, Inc., 1991.
[2]. Expert Systems: Principles and Programming, Joseph Giarratano and Gary Riley, PWS-Kent Publishing Co, 2005.
[3]. E. Turban, Decision Support and Expert Systems, 1995
[4]. Nana Yaw Asabere , mMES: A Mobile Medical Expert System for Health Institutions in Ghana, International Journal of Science and Technology, vol. 2(6),pp. 333-340, 2012. Diakses pada 10 Februari 2012 di http://ejournalofsciences.org/archive/vol2no6/vol2no6_1.pdf
[5]. http://info.cba.ksu.edu/bkovar/VBproject.pdf
[6]. Muhammad Zubair et.al, Diagnosis of Skin Diseases using Online Expert System, International Journal of Computer Science and Information Security, VOl. 9(6), pp. 323-329, 2011.