Upload
tuan-cupu-x
View
41
Download
7
Embed Size (px)
DESCRIPTION
Penerapan CBR (Case Based Reasoning) dalam proses pembelian motor honda sesuai kebutuhan
Citation preview
Implementasi Case Based Reasoning
Dalam Merekomendasikan Pembelian Motor Honda
1. Pendahuluan
Case based reasoning merupakan salah satu metode pendekatan berbasis pengetahuan untuk
mempelajari dan memecahkan masalah berdasarkan pengalaman pada masa lalu. Pemanfaatan CBR
dalam bidang otomotif terutama pada bidang pembelian kendaraan bermotor bukanlah hal yang baru.
Dengan adanya implementasi CBR dalam bidang pembelian kendaraan bermotor sangat
membantu konsumen dalam memilih kendaraan bermotor yang tepat. Mengingat faktor usia dan faktor
modal sangat mempengaruhi selera dalam pembelian kendaraan bermotor.
Untuk itu, dalam mini project ini akan coba dibuat implementasi CBR dalam pembelian motor
honda dan juga dapat membantu para konsumen dalam membeli kendaraan bermotor sesuai selera.
2. Landasan Teori
Case Based Reasoning atau penalaran berbasis kasus adalah salah satu metode pendekatan
berbasis pengetahuan untuk mempelajari dan memecahkan masalah berdasarkan pengalaman pada
masa lalu. Pengalaman yang lalu dikumpulkan dan disimpan dalam tempat yang disebut “Basis Kasus”.
Basis Kasus adalah kumpulan kasus-kasus yang pernah terjadi.
Sebuah kasus baru diselesaikan dengan mencari kasus-kasus yang telah tersimpan dalam basis
kasus yang memiliki kemiripan dengan kasus baru tersebut.Apabila tidak ditemukan kasus yang
memiliki kemiripan maka solusi dari kasus tersebut adalah analisa dari pakar atau ahli tentang kasus
tersebut, dan kemudian akan dijadikan suatu kasus baru yang disimpan dalam basis kasus.
2.1 Metodologi CBR
Untuk menghasilkan solusi suatu masalah, CBR harus melakukan beberapa tahap proses
dimana PBK harus mencari kemiripan kasus baru dengan kasus yang tersimpan, atau ketika ada
perubahan terhadap solusi suatu kasus. Tahapan proses yang terjadi dalam CBR dapat dilihat pada
gambar berikut ini.
Gambar 1. Tahapan proses dalam CBR
Pada gambar 1 diatas dijelaskan bahwa dalam proses CBR dibutuhkan empat (4) tahap, yaitu :
• RETRIEVE adalah menemukan kembali kasus yang sama atau yang paling mirip dengan kasus
baru.
• REUSE adalah menggunakan kembali informasi dan pengetahuan dari basis kasus untuk
memecahkan masalah kasus baru.
• REVISE adalah merevisi atau memperbaiki solusi yang diusulkan.
• RETAIN adalah menyimpan pengalaman untuk memecahkan masalah yang akan datang kedalam
basis kasus.
Pada mini project ini sebelum melakukan proses similarity, data terlebih dahulu di
normalisasikan untuk mencegah perbedaan yang sangat signifikan antara data. Dimana rentang data
tiap-tiap atribut berbeda.
2.2 Normalisasi Data
Normalisasi data merupakan salah cara untuk men-tranformasikan data-data antara atribut-
atribut yang memiliki rentang berbeda-beda. Salah satu metode yang digunakan dalam
menormalisasikan data adalah adalah metode Min-Max Normalisation.
Min-Max Normalisation merupakan metode normalisasi dengan melakukan transformasi linier
terhadap data asli. Berikut ini adalah rumusnya :
new value =(old value−min
max−min)∗(1−0)+0 …. pers. (1)
Metode ini akan menormalisasi input dan target sedemikian rupa sehingga hasil normalisasi akan
berada pada interval 0 dan 1. Dimana old_value adalah nilai sebelum transformasi, new_value adalah
nilai hasil tranformasi, min dan max merupakan nilai minimum dan maksimum pada tiap-tiap atribut.
Pada mini project ini nilai-nilai tiap atribut dibuat berada pada rentang antara 0 s/d 1.
2.3 Cosine Coefficient
Prinsip dari fungsi Cosine Coefficient sama dengan tehnik Nearest Neighbour. Dimana ide
dasar dari fungsi ini adalah membandingkan setiap atribut-atribut target case dengan atribut-atribut
setiap source case yang ada dalam case base, kemudian perbandingan tersebut dihitung dengan
menggunakan fungsi similarity.
Fungsi Cosine Coefficient
cos (x , y )=( x , y)∥x∥∥y∥
…. pers. (2)
Dimana :
(x , y )=∑n=1
N
xn y n
∥x∥= √∑n=1
N
xn2 dan ∥y∥=√∑n=1
N
yn2
3. PembahasanDasar dari CBR adalah pemecahan masalah menggunakan informasi yang tersimpan pada kasus
sebelumnya. Berdasarkan tahapan yang ada dalam suatu sistem CBR, diperlukan tiga langkah utama
dalam menentukan solusi, yaitu :
• Membangun basis kasus, yang digunakan sebagai tempat penyimpanan.
• Menentukan fungsi kemiripan (similarity), langkah ini digunakan untuk mengenali kesamaan
atau kemiripan antara kasus-kasus yang tersimpan dalam basis kasus dengan kasus yang baru.
• Pengambilan data, pada langkah ini kasus-kasus yang telah disimpan dalam basis kasus diambil
atau dipilih sebagai sebuah solusi.
Flowchart dalam sistem CBR rekomendasi pembelian motor honda adalah sebagai berikut :
Pada flowchart diatas menunjukkan adanya proses normalisasi data. Proses normalisasi data ini
Data Trainingbelum ternormalisasi
Data Ujibelum ternormalisasi
Normalisasi Data
Proses Similarity
SolusiBasis Kasus
Representasi Data
Normalisasi Data
dibutuhkan karena data-data yang diperoleh memiliki range nilai yang berbeda-beda. Adapun data
yang diperoleh dan akan dijadikan basis kasus adalah sebagai berikut :
Pembelian Umur (tahun)
Harga (Juta) Kekuatan (CC) Kapasitas (km/liter)
Keterangan
1 29 22.150.000 110 50 tipe 1
2 31 17.500.000 125 65 tipe 1
3 19 21.250.000 108 80 tipe 1
4 33 15.750.000 110 60 tipe 1
5 20 11.000.000 110 60 tipe 1
6 25 11.500.000 120 70 tipe 1
7 32 8.625.000 108 55 tipe 1
8 35 20.300.000 250 60 tipe 1
9 24 22.500.000 250 50 tipe 1
10 34 14.750.000 125 65 tipe 2
11 23 20.125.000 108 55 tipe 2
12 32 10.545.000 108 70 tipe 2
13 21 24.250.000 125 80 tipe 2
14 18 24.750.000 250 60 tipe 2
Dimana :
Umur : menyatakan umur pembeli
Harga : menyatakan harga motor saat pembelian
Kekuatan : menyatakan nilai CC dari motor yang dibeli
Kapasitas : menyatakan keiritan penggunaan bensin. Jadi 50 km/liter bermaksud untuk 1
liter bensin dapat menempuh 50 km.
Keterangan :
Tipe 1 = Matic
Tipe 2 = Non-Matic
3.1 Membangun Basis Kasus dan Representasinya
Penalaran berbasis kasus atau CBR bergantung pada struktur dan isi koleksi dari kasus. Suatu
kasus dapat diselesaikan dengan memanggil kembali kasus sebelumnya yang sesuai atau cocok dengan
kasus baru. Sebuah kasus dapat direpresentasikan dalam bentuk :
1. Representasi Frame
2. Representasi Objek
3. Representasi Graph
Pada mini project ini representasi kasus yang digunakan adalah representasi frame. Representasi
frame mengindikasikan tiap-tiap atribut fitur memiliki nilai.
Pembelian Umur (tahun) Harga (Juta) Kekuatan (CC) Kapasitas (km/liter)
1 29 22.150.000 110 50
2 31 17.500.000 125 65
3 19 21.250.000 108 80
4 33 15.750.000 110 60
5 20 11.000.000 110 60
6 25 11.500.000 120 70
7 32 8.625.000 108 55
8 35 20.300.000 250 60
9 24 22.500.000 250 50
10 34 14.750.000 125 65
11 23 20.125.000 108 55
12 32 10.545.000 108 70
13 21 24.250.000 125 80
14 18 24.750.000 250 60
3.2 Normalisasi Data
Karena data pada tiap-tiap atribut memiliki rentang nilai yang berbeda maka perlu di adakan
normalisasi data agar tidak terjadi perbedaan yang sangat siginifikan terhadap data yang satu dengan
data yang lain. Salah satu metode yang digunakan dalam menormalisasikan data adalah adalah metode
Min-Max Normalisation. Salah satu contoh proses normalisasinya adalah sebagai berikut :
Misalnya melihat atribut dengan nama field Umur. Pada atribut ini memiliki nilai Minimum=18
dan nilai Maksimum = 35. Misalnya mengambil data pertama yaitu 29 tahun. Rentang nilai yang
diinginkan adalah 0 s/d 1. Maka berdasarkan persamaan (1), proses normalisasinya adalah sebagai
berikut :
new value = (29−1835−18
)∗(1−0)+0 = 0.647
Pada atribut yang lain, prosesnya sama dengan pada atribut dengan nama field Umur. Yang terpenting
adalah sebelum menormalisasi harus ditentukan terlebih dahulu nilai minimum dan nilai maksimum
tiap-tiap atribut. Tabel berikut menunjukkan hasil normalisasi yang dihasilkan :
Pembelian Umur (tahun) Harga (Juta) Kekuatan (CC) Kapasitas (km/liter)
1 0.647 0.839 0.014 0.000
2 0.765 0.550 0.120 0.500
3 0.059 0.783 0.000 1.000
4 0.882 0.442 0.014 0.333
5 0.118 0.147 0.014 0.333
6 0.412 0.178 0.085 0.667
7 0.824 0.000 0.000 0.167
8 1.000 0.724 1.000 0.333
9 0.353 0.860 1.000 0.000
10 0.941 0.380 0.120 0.500
11 0.294 0.713 0.000 0.167
12 0.824 0.119 0.000 0.667
13 0.176 0.969 0.120 1.000
14 0.000 1.000 1.000 0.333
3.3 Pengukuran kemiripan kasus (Similarity)
Dalam mencari kasus yang memiliki kemiripan dengan kasus baru, setiap kasus baru akan
disamakan dengan semua kasus yang ada pada basis kasus dengan menggunakan atribut-atribut yang
telah ada. Misalnya ada kasus baru yang berisi data sebagai berikut :
Umur pembeli : 30 tahun
Modal yang dimiliki : 18.000.000
Kekuatan (CC) : 110 CC
Kapasitas : 60 km/liter
Maka dari kasus baru yang diatas akan dihitung kemiripannya dengan kasus-kasus lama yang telah
tersimpan dalam basis kasus. Sebelum proses perhitungan similarity kasus baru tersebut terlebih dahulu
dinormalisasikan agar supaya tidak terjadi perbedaan rentang data yang sangat signifikan.
Proses normalisasinya sama dengan proses normalisasi pada kasus-kasus lama, yaitu
menggunakan metode Min-Max Normalisation dan rentang nilai yang digunakan dari 0 s/d 1. Hasil
dari normalisasi kasus baru adalah sebagai berikut :
• Untuk atribut dengan nama field Umur. Nilai minimum = 18 tahun dan Nilai maksimum = 35
tahun.
Pada kasus baru, umur pembeli = 30 tahun
nilainormalisasi =30−1835−18
∗(1−0)+0 = 0.706
Setelah dinormalisasi bernilai 0,706
• Untuk atribut dengan nama field Harga. Nilai minimum = 8.625.000 dan Nilai maksimum =
24.750.000.
Pada kasus baru, modal yang dimiliki = 18.000.000
nilainormalisasi =18000000−862500024750000−8625000
∗(1−0)+0 = 0.581
Setelah dinormalisasi bernilai 0,581.
Pada atribut dengan nama field Harga, untuk kasus baru bermakna modal yang dimiliki.
• Untuk atribut dengan nama field Kekuatan (CC). Nilai minimum = 108 dan Nilai maksimum
= 250.
Pada kasus baru, kekuatan (CC) yang diinginkan = 110 CC
nilainormalisasi =110−108250−108
∗(1−0)+0 = 0.014
Setelah dinormalisasi bernilai 0,014
• Untuk atribut dengan nama field Kapasitas. Nilai minimum = 50 dan Nilai maksimum = 80.
Pada kasus baru, kapasitas yang diinginkan = 60 km/liter
nilainormalisasi =60−5080−50
∗(1−0)+0 = 0.333
Setelah dinormalisasi bernilai = 0,333
Setelah kasus baru telah dinormalisasikan kemudian dilanjutkan proses similarity dengan
menggunakan fungsi Cosine Coefficient pada persamaan (2). Setelah di similarity ternyata kasus baru
memiliki nilai similarity lebih besar dengan Kasus ke-2 dibandingkan dengan kasus-kasus yang lain
yang berada dalam basis kasus (lihat hasil similiraty pada lampiran). Nilai similarity kasus baru
terhadap Kasus ke-2 adalah 0.50223. Oleh karena itu rekomendasi yang diberikan sistem terhadap si
pembeli adalah motor honda dengan tipe 1 atau bertipe Motor Matic.
Model Interface dalam Mini Project ini adalah :
Keterangan :Pada bagian “Masukkan Kriteria Motor” kata “Harga” bermakna besar modal yang dimiliki
oleh si pembeli atau konsumen.
Lampiran
Data kasus-kasus yang telah terjadi dan akan menjadi basis kasus untuk kasus baru : Pembelian Umur
(tahun)Harga (Juta) Kekuatan (CC) Kapasitas
(km/liter)Keterangan
1 29 22.150.000 110 50 tipe 1
2 31 17.500.000 125 65 tipe 1
3 19 21.250.000 108 80 tipe 1
4 33 15.750.000 110 60 tipe 1
5 20 11.000.000 110 60 tipe 1
6 25 11.500.000 120 70 tipe 1
7 32 8.625.000 108 55 tipe 1
8 35 20.300.000 250 60 tipe 1
9 24 22.500.000 250 50 tipe 1
10 34 14.750.000 125 65 tipe 2
11 23 20.125.000 108 55 tipe 2
12 32 10.545.000 108 70 tipe 2
13 21 24.250.000 125 80 tipe 2
14 18 24.750.000 250 60 tipe 2
Data kasus-kasus yang telah terjadi setelah proses normalisasi Pembelian Umur (tahun) Harga (Juta) Kekuatan (CC) Kapasitas (km/liter)
1 0.647 0.839 0.014 0.000
2 0.765 0.550 0.120 0.500
3 0.059 0.783 0.000 1.000
4 0.882 0.442 0.014 0.333
5 0.118 0.147 0.014 0.333
6 0.412 0.178 0.085 0.667
7 0.824 0.000 0.000 0.167
8 1.000 0.724 1.000 0.333
9 0.353 0.860 1.000 0.000
10 0.941 0.380 0.120 0.500
11 0.294 0.713 0.000 0.167
12 0.824 0.119 0.000 0.667
13 0.176 0.969 0.120 1.000
14 0.000 1.000 1.000 0.333
Data kasus baruUmur pembeli : 30 tahunModal yang dimiliki : 18.000.000Kekuatan (CC) : 110 CCKapasitas : 60 km/liter
Data kasus baru setelah ternormalisasiUmur : 0,706Modal yang dimiliki : 0,581Kekuatan : 0,014Kapasitas : 0,333
Hasil proses similarity kasus baru dengan kasus-kasus lama yang ada di basis kasus :Kasus baru terhadap kasus ke-1 : 0.46459Kasus baru terhadap kasus ke-2 : 0.50223Kasus baru terhadap kasus ke-3 : 0.36952Kasus baru terhadap kasus ke-4 : 0.49177Kasus baru terhadap kasus ke-5 : 0.206Kasus baru terhadap kasus ke-6 : 0.34666Kasus baru terhadap kasus ke-7 : 0.35122Kasus baru terhadap kasus ke-8 : 0.48204Kasus baru terhadap kasus ke-9 : 0.32627Kasus baru terhadap kasus ke-10 : 0.49899Kasus baru terhadap kasus ke-11 : 0.38441Kasus baru terhadap kasus ke-12 : 0.4297Kasus baru terhadap kasus ke-13 : 0.42917Kasus baru terhadap kasus ke-14 : 0.29099
Source Code :
Imports System.DataImports System.Data.OleDb
Public Class Form1 ' Deklarasi variabel untuk koneksi database dengan OledDb Dim dbconn As OleDbConnection Dim dbcomm As OleDbCommand Dim dbread As OleDbDataReader Dim dbcomm1 As OleDbCommand Dim dbread1 As OleDbDataReader ' Rutin tombol CARI Private Sub ButtonCari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCari.Click ' Reset label rekomendasi LabelMerk.Text = "..." LabelTipe.Text = "..." LabelKekuatan.Text = "..." LabelKapasitas.Text = "..." LabelHarga.Text = "..." LabelRekomendasi.Text = "Rekomendasi" LabelSimilarity.Text = "" ' Link image untuk ditampilkan pada preview setelah rekomendasi keluar Dim Gambar(14) As String Gambar(1) = "Resources/Matic1.jpg" Gambar(2) = "Resources/Matic2.jpg" Gambar(3) = "Resources/Matic3.jpg" Gambar(4) = "Resources/Matic4.jpg" Gambar(5) = "Resources/Matic5.jpg" Gambar(6) = "Resources/Matic6.jpg" Gambar(7) = "Resources/Matic7.jpg" Gambar(8) = "Resources/Matic8.jpg" Gambar(9) = "Resources/Matic9.jpg" Gambar(10) = "Resources/Matic10.jpg" Gambar(11) = "Resources/Bebek1.jpg" Gambar(12) = "Resources/Bebek1.jpg" Gambar(13) = "Resources/Bebek3.jpg" Gambar(14) = "Resources/Bebek4.jpg" ' Mengatur agar pencarian tidak melampaui database Dim iUmur, iHarga, iKekuatan, iKapasitas As Double Dim iUmurBox, iHargaBox, iKekuatanBox, iKapasitasBox As Double If (UmurBox.Text < 18) Then iUmurBox = 18 ElseIf (UmurBox.Text > 35) Then iUmurBox = 35 Else iUmurBox = UmurBox.Text End If If (HargaBox.Text < 8625000) Then iHargaBox = 8625000 ElseIf (UmurBox.Text > 24750000) Then iHargaBox = 24750000 Else iHargaBox = HargaBox.Text End If If (KekuatanBox.Text < 108) Then iKekuatanBox = 108 ElseIf (KekuatanBox.Text > 250) Then
iKekuatanBox = 250 Else iKekuatanBox = KekuatanBox.Text End If If (KapasitasBox.Text < 50) Then iKapasitasBox = 50 ElseIf (KapasitasBox.Text > 80) Then iKapasitasBox = 80 Else iKapasitasBox = KapasitasBox.Text End If ' Normalisasi setiap fitur dengan Min Max iUmur = (iUmurBox - 18) / (35 - 18) 'umur iHarga = (iHargaBox - 8625000) / (24750000 - 8625000) 'harga iKekuatan = (iKekuatanBox - 108) / (250 - 108) 'kekuatan iKapasitas = (iKapasitasBox - 50) / (80 - 50) 'kapasitas ' Variabel Dim normUmur As Double Dim normKekuatan As Double Dim normKapasitas As Double Dim normHarga As Double Dim sumxy As Double = 0 Dim vektorxy As Double = 0 Dim similarity(14) As Double Dim i As Integer = 1 'Mengakses database access Try dbconn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|sellrecord1.mdb;Persist Security Info=True") dbconn.Open() dbcomm = New OleDbCommand("select [Umur], [Kekuatan], [Kapasitas], [Harga] from [penjualan]", dbconn) dbread = dbcomm.ExecuteReader Do While dbread.HasRows Do While dbread.Read() ' Normalisasi case base fitur dengan min max normUmur = (dbread.GetInt32(0) - 18) / (35 - 18) 'umur normKekuatan = (dbread.GetInt32(1) - 108) / (250 - 108) 'kekuatan normKapasitas = (dbread.GetInt32(2) - 50) / (80 - 50) 'kapasitas normHarga = (dbread.GetInt32(3) - 8625000) / (24750000 - 8625000) 'harga ' similarity dengan cosinus (x,y) = sum(x*y)/sqrt(sum(x^2)+sum(y^2)) sumxy = (iUmur * normUmur) + (iHarga * normHarga) + (iKekuatan * normKekuatan) + (iKapasitas * normKapasitas) vektorxy = Math.Sqrt(iUmur ^ 2 + iHarga ^ 2 + iKekuatan ^ 2 + iKapasitas ^ 2) + Math.Sqrt(normUmur ^ 2 + normKekuatan ^ 2 + normKapasitas ^ 2 + normHarga ^ 2) similarity(i) = sumxy / vektorxy i = i + 1 Loop dbread.NextResult() Loop ' Mencari similarity yang paling tinggi Dim match As Integer = 1 For i = 1 To 13 If (similarity(match) <= similarity(i + 1)) Then
match = i + 1 End If Next i ' Mengakses database untuk dimunculkan di rekomendasi dbcomm1 = New OleDbCommand("select [Kekuatan], [Kapasitas], [Harga], [Tipe] from [penjualan]", dbconn) dbread1 = dbcomm1.ExecuteReader i = 1 Do While dbread1.HasRows 'Or (i <> key(0) - 1) Do While dbread1.Read() If (i = match) Then LabelMerk.Text = "Honda Tipe " & match If (dbread1.GetInt32(3) = 1) Then LabelTipe.Text = "Motor Matic" Else LabelTipe.Text = "Motor Bebek" End If LabelKekuatan.Text = dbread1.GetInt32(0) & " cc" LabelKapasitas.Text = dbread1.GetInt32(1) & " km/liter" LabelHarga.Text = "IDR " & dbread1.GetInt32(2) End If i = i + 1 Loop dbread1.NextResult() Loop LabelSimilarity.Text = "Similarity : " & similarity(match) LabelCase.Text = "Case Nomor " & match PictureBox1.Image = ImageList1.Images(match - 1) LabelRekomendasi.Text = "Rekomendasi untuk " & NamaBox.Text Catch End Try dbread.Close() dbread1.Close() dbconn.Close()
End Sub
Private Sub ButtonTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTest.Click NamaBox.Text = "Yoona" UmurBox.Text = 30 KapasitasBox.Text = 60 KekuatanBox.Text = 110 HargaBox.Text = 18000000 End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PictureBox1.Image = ImageList1.Images(14) End SubEnd Class
Mini Project CBR :
IMPLEMENTASI CASE BASED REASONING
DALAM MEREKOMENDASIKAN PEMBELIAN
MOTOR HONDA
OLEH :
ADHI PRAHARA (324301)
LA ODE HASNUDDIN S. SAGALA (310728)
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2012