Anda di halaman 1dari 6

LVQ (learning vector quantization)

Komputasi nonlinear - kecerdasan buatan


Oleh: mulkan.ms@gmail.com
http://softscients.blogspot.com
Bidang kecerdasan buatan telah mengenalkan algoritma LVQ yang merupakan
algoritma untuk melakukan teknik klasifikasi yang terbimbing (untuk versi tidak
terbimbing yaitu kohonen). Lain kata LVQ melakukan klasifikasi input secara
berkelompok kedalam kelas yang sudah didefinisikan melalui jaringan yang telah
dilatih yaitu mendapatkan n input dan mengelompokan kedalam m output. Contoh
kasus dari matematika nonlinear yaitu algoritma Boolean OR
Param a
Param b
Result
1
1
1
0
0
0
0
1
1
1
0
1
Penulis menggunakan java sebagai toolsnya (bila anda ingin mencoba menggunakan
nya silahkan download JImage library di http://softscients.blogspot.com versi
JImageV.11.03.13) atau kirim email ke mulkan.ms@gmail.com. Berikut potongan
kode nya.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

/* demo kasus LVQ untuk logica booelan


*/
LVQ lvq = new LVQ(); //instance class LVQ
//sampel
double [][]sampel =new double[][]{
{1,1},
{0,0},
{0,1},
{1,0}
};
int [][]target=new int [][]{
{2}, //artinya true
{1}, //artinya false
{2},
{2}
};
double [][]bobot=new double[][]{
{Math.random(),Math.random()},
{Math.random(),Math.random()}
};
lvq.setSampel(sampel);
lvq.setTarget(target);
lvq.setBobot(bobot);
lvq.setAlfa(0.1); //nilai learning rate

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

lvq.setDecAlfa(0.001);// decreasing rate


lvq.setMakEpoch(2000); //maksimal epoch
//lvq.setMomentum(true);
System.out.println("sample awal");
util.Print.print(lvq.getSampel());
System.out.println("bobot awal");
util.Print.print(lvq.getBobot());
System.out.println("target awal");
util.Print.print(lvq.getTarget());
System.out.println("======== training ===========");
lvq.processTrain();
System.out.println("======== testing =============");
lvq.processTest(lvq.getSampel(), lvq.getBobot());
System.out.println("bobot akhir");
util.Print.print(lvq.getBobot());
System.out.println("target akhir");
util.Print.print(lvq.getHasil());
System.out.println("epoch terakhir nya");
System.out.println(lvq.getEpoch());

Hasilnya
sample awal
1.0 1.0
0.0 0.0
0.0 1.0
1.0 0.0
bobot awal
0.4225259882188299 0.1665614588212595
0.4164443699236845 0.5338319989262157
target awal
2
1
2
2
======== training ===========
======== testing =============
bobot akhir
0.2151177210532752 0.16324688579071645
0.4361291511069294 0.6941471744954901
target akhir
2
1
2
2

epoch terakhir nya


2

Terlihat bahwa target awal == target akhir dicapai dalam 2 epoch saja!

Kasus lain
Tidak hanya kasus diatas saja yang bisa ditangani oleh LVQ, berikut adalah salah
satu kasus yakni menggunakan 4 paramater sekaligus!

*note:
Tentunya catatan kecil diatas belum membahas faktor -faktor apa sajakah yang
mempercepat dan ketepatan hasil dari proses training? Bila anda masih tertarik,
silahkan
untuk
diskusi
ke
mulkan.ms@gmail.com
atau
http://softscients.blogspot.com. Selain itu Source code diatas telah ditranslate
kedalam bahasa C#, C/C++, dan Matlab sehingga memudahkan bagi u ser bila ingin
mengembangkan kedalam bahasa yang dikuasai tersebut.

Anda mungkin juga menyukai