PENERAPAN CASE BASED REASONING DALAM MENDUKUNG PENYELESAIAN KASUS
Emha Taufiq Luthfi
STMIK AMIKOM Yogyakarta
Jl. Ring Road Utara Condong Catur Depok Sleman Yogyakarta E-mail : [email protected]
ABSTRAKSI
Rule Based System dengan database konvensional memiliki kekurangan dalam mendukung penyelesaian kasus/permasalahan yang bersifat samar atau dengan level kemiripan yang tidak 100% terhadap informasi tersimpan. Untuk itu diperlukan sistem yang lebih fleksibel yang dapat mendukung hal tersebut. Dalam tulisan ini diterapkan model Case Based Reasoning dengan Algoritma Nearest Neighbor untuk mendukung penyelesaian kasus/permasalahan berdasar kasus/permasalahan terdahulu yang telah diketahui statusnya.
Kata Kunci : Case Based Reasoning, Nearest Neighbor
1. PENDAHULUAN
Tehnologi database sepertinya tampak ideal dalam proses pencarian solusi yang diketahui untuk suatu masalah. Database dapat menyimpan informasi dengan jumlah besar, menjaga relasi antar item dan mengakses informasi dengan cepat. Akan tetapi tidak sesederhana itu. Untuk dapat mengambil solusi yang tepat, harus diidentifikasi apa permasalahannya. Hal tersebutlah yang belum sepenuhnya dapat dilakukan dengan sistem database konvensional.
Untuk mengenali masalah dengan tepat dan selanjutnya mengetahui solusinya, harus dilakukan pengecekan kemiripan permasalahan baru yang muncul dengan permasalahan yang terdapat di database. Permasalahan nyata yang muncul seringkali sangat kompleks dengan berbagai faktor, sehingga permasalahan yang muncul tidak sama persis dengan permasalahan yang telah tersimpan
dalam database. Database sangat bagus dalam pencarian informasi yang memiliki kesamaan akan tetapi memiliki kekurangan untuk pencarian informasi yang memiliki kemiripan atau bernilai samar.
Dalam kasus tersebut dibutuhkan metode pencarian yang lebih fleksibel dengan kemampuan (1) Memberikan fleksibilitas dalam mendeskripsikan permasalahan yang dilihat, bahkan menggunakan bahasa yang natural, (2) Mencari permasalahan/ informasi yang memiliki dekripsi mirip dalam database atau bahkan sekumpulan permasalahan/informasi yang mirip, (3) Menanyakan beberapa pertanyaan untuk mengkonfirmasikan permasalahan yang mirip atau fokus pada yang paling mirip, (4) Memberikan solusi dikenali berdasar permasalahan yang paling mirip (5) Mengadaptasikan solusi dengan permasalahan yang baru. Keseluruhan kemampuan yang diharapkan tersebut merupakan karakteristik dari
Case Based Reasoning (CBR) yang membedakan dengan model Rule Based System.
2. LANDASAN TEORI
Case Based Reasoning (CBR) suatu model penalaran yang
penggabungkan pemecahan masalah, pemahaman dan pembelajaran serta memadukan keseluruhannya dengan pemrosesan memori. Tugas tersebut dilakukan dengan memanfaatkan kasus yang pernah dialami oleh sistem, yang mana kasus merupakan pengetahuan dalam konteks tertentu yang mewakili suatu pengalaman yang menjadi dasar pembelajaran untuk mencapai tujuan sistem [1]. Atau dalam definisi lain CBR merupakan metode pemecahan masalah/kasus baru dengan melakukan adaptasi terhadap metode yang digunakan untuk memecahkan masalah/kasus lama [2].
Alur proses CBR dalam memecahkan masalah didefinisikan dalam 4 langkah RE, yaitu [2] :
1. REtrive, mengambil masalah/kasus yang paling serupa.
2. REuse, menggunakan kembali masalah/kasus untuk mencoba memecahkan masalah/kasus.
4. REtain, mempertahankan/menyimpan solusi baru sebagai bagian
dari masalah/kasus baru.
Gambar 1 Alur Proses CBR
Masalah/kasus baru akan dicocokkan dengan kasus-kasus dalam CBR sistem, dan satu atau lebih kasus serupa yang akan diambil. Solusi yang disarankan berdasar kasus yang serupa kemudian digunakan dan diujikan terhadap kasus baru. Kecuali jika kasus disarankan sangat cocok dengan kasus baru, maka kemungkinan akan diperlukan revisi terhadap solusi, dan menghasilkan kasus baru untuk dipertahankan/disimpan. Keseluruhan proses CBR tersebut dijalankan tanpa intervensi manusia atau dengan kata lain secara otomatis.
R e u s e Case‐base Problem Retrieve Confirmed solution Proposed solution Revise Retain
Contoh proses CBR adalah dalam proses persetujuan pemberian pinjaman kepada seseorang oleh bank. Pihak bank harus memastikan untuk tidak meminjamkan uang kepada orang yang tidak akan bisa mengembalikan. Keputusan harus dibuat hati-hati karena bank mengambil keuntungan dari bunga pembayaran pinjaman. Salah satu cara untuk pemecahan masalah tersebut adalah dengan membandingkan permohonan pinjaman baru dengan permohonan-permohonan pinjaman sebelumnya. Jika kondisi permohonan-permohonan sama dengan permohonan sebelumnya yang berjalan baik, maka permohonan akan disetujui. Sebaliknya jika permohonan serupa dengan permohonan sebelumnya yang gagal, maka permohonan akan ditolak. Proses yang dilakukan untuk kasus tersebut kemungkinan adalah :
1. Pihak bank mencari dalam permohonan sebelumnya dan menaksir kesamaan dengan pemohonan baru.
2. Pihak bank akan memberikan kesimpulan berdasar pinjaman sebelumnya yang paling mirip dan dapat dibandingkan
3. Pihak bank kemungkinan harus melakukan penyesuaian terhadap perubahan kondisi kasus lama dengan kondisi saat ini.
4. Jika permohonan disetujui, pihak bank akan memantau dan mencatat proses pinjaman untuk kebutuhan mendatang.
Proses dalam CBR dapat menggunakan berbagai teknik, diantaranya adalah algoritma nearest neighbor. Nearest Neighbor menghitung tingkat kemiripan (jarak) suatu kasus terhadap kasus lain berdasarkan beberapa atribut yang didefinisikan berdasar pembobotan tertentu dan kemudian tingkat kemiripan (jarak) dari keseluruhan atribut akan dijumlahkan. Nearest Neighbor didefinsikan berdasar bersamaan sebagai berikut [2] :
T : Kasus target / baru
S : Kasus sumber / lama / pembanding n : Jumlah atribut dalam setiap kasus i : Atribut individu dari 1 sampai n
f : Fungsi kemiripan untuk atribut I dalam kasus T dan S w : Bobot atribut i
3. PENGEMBANGAN APLIKASI 3.1. Perancangan
Gambar 2 Flowchart CBR dirancang Mulai Ambil data kasus lama Konfigurasi Bobot Atribut Input Data Kasus Baru Hitung Level Kemiripan Kasus Baru
dengan data kasus-kasus lama Cari Kasus Lama dengan level kemiripan
terkecil dan tampilkan
3.2. Pengkodean
package cbr1;
public class CBR1GUI extends javax.swing.JFrame { // data sekunder - kasus pinjaman
String []atributDataKasus =
{"status","jml pinjaman","status peminjam","pembayaran"}; Object [][]dataKasus = {
{"good", 2000, "salaried", 200}, {"very bad", 4000, "salaried", 600}, {"very good", 3000, "waged", 300}, {"bad", 1500, "salaried", 400}};
Object []kasusBaru = {3500,"salaried",400}; Object []bobotAtribut = {4, 2.5, 3.5}; /** Creates new form CBR1GUI */
public CBR1GUI() { initComponents(); setSize(700, 400); CBR(); } public void CBR() { /** konversikan * salaried = 2 * waged = 1 */
for (int j=0;j<atributDataKasus.length;j++) { txtDataPinjaman.append(atributDataKasus[j]
+"\t"); }
String ldataPinjaman = "\n";
for (int i=0;i<dataKasus.length;i++) {
for (int j=0;j<atributDataKasus.length;j++) { ldataPinjaman += dataKasus[i][j] + "\t"; if (j==2) ldataPinjaman += "\t";
}
ldataPinjaman = "\n"; dataKasus[i][2] = (dataKasus[i][2].toString().trim().equals("salaried") ? 2 : 1); } } void proses() {
// ambil input baru
kasusBaru[0] = txtInputJmlPinjaman.getText(); kasusBaru[1] = cbInputStatusPeminjam.getModel().getSelectedItem().toStri ng(); kasusBaru[1] = (kasusBaru[1].toString().trim().equals("salaried") ? 2 : 1); kasusBaru[2] = txtInputPembayaran.getText(); bobotAtribut[0] = txtBobotJmlPinjaman.getText(); bobotAtribut[1] = txtBobotStatusPeminjam.getText(); bobotAtribut[2] = txtBobotPembayaran.getText(); // hitung
double []jarak = new double[dataKasus.length]; for (int i=0;i<dataKasus.length;i++) {
jarak[i] = 0; for (int j=1;j<=3;j++) { jarak[i] += (Math.abs(Double.parseDouble(kasusBaru[j-1].toString()) - Double.parseDouble(dataKasus[i][j].toString())) * Double.parseDouble(bobotAtribut[j-1].toString())); } }
// cari jarak terkecil txtHasil.setText(""); int idxTerkecil = 0;
for (int i=0;i<jarak.length;i++) {
txtHasil.append("Jarak kasus baru dengan kasus ke-" + (i + 1) + " adalah " + jarak[i] + "\n");
for (int j=i+1;j<jarak.length;j++) {
idxTerkecil = (jarak[i]<jarak[j]? i: j); }
}
txtHasil.append("\n");
txtHasil.append("Jarak terkecil kasus baru dengan kasus ke-" + (idxTerkecil + 1) + " yaitu " +
jarak[idxTerkecil]);
txtHasil.append("\n");
txtHasil.append("Dengan status pinjaman kasus lama (kasus ke-"+ (idxTerkecil + 1) +") : " +
dataKasus[idxTerkecil][0]);
}
private void btnProsesActionPerformed (java.awt.event.ActionEvent evt) { proses();
}
public static void main(String args[]) { new CBR1GUI().setVisible(true);
} }
4. HASIL
Gambar 4 Konfigurasi Bobot dan Input Data Pinjaman Baru
Gambar 5 Hasil Proses : Level Kemiripan Kasus Baru
Dengan menganalisa data hasil CBR, pihak bank memiliki acuan untuk pengambilan keputusan persetujuan terhadap pinjaman baru. Yaitu bahwa untuk kondisi pinjaman serupa pada kasus yang terdahulu didapatkan kondisi pinjaman adalah sangat baik (very good) sehingga kemungkinan pinjaman baru dapat direkomendasikan untuk disetujui.
5. KESIMPULAN
CBR merupakan proses penalaran terhadap suatu kasus dengan memanfaatkan memori terhadap kasus serupa yang terdahulu. Dalam percobaan dibuktikan penggunaan CBR dengan algoritma nearest
neighbor untuk mencari level kedekatan data kasus baru dengan
data-data kasus lama untuk di acuan pengambilan keputusan terhadap kasus baru.
6. DAFTAR PUSTAKA
[1] Sankar, K.P dan Simon, C.K, 2004, Foundation Of Soft
Case-Based Reasoning, Wiley Publishing, New Jersey
[2] Watson, I.D, 1997, Applying Case-Based Reasoning: Technique
for Enterprise Systems, Morgan Kaufmann Publishing, San