Learning Vector Quantization (LVQ) adalah salah satu jenis jaringan saraf tiruan dimana metode ini melakukan pembelajaran pada lapisan kompetitif yang terawasi. Suatu lapisan kompetitif akan secara otomatis belajar untuk mengklasifikasikan vector vector input. Kelas kelas yang didapat sebagai hasil dari lapisan kompetitif ini hanya tergantung pada jarak antara vector vector input. Jika vector input mendekati sama maka lapisan kompetitif akan meletakkan kedua vector input tersebut kedalam kelas yang sama. berikut ini adalah algoritma dari Learning Vector Quantizarion (LVQ).
Gambar 1. Desain Aplikasi
1. Tetapkan bobot (W) dan maksimum epoch, learning rate, error yang diharapkan
2. Masukan input yang terdiri dari data input x(m,n) dan targetT(1,n)
3. Tetapkan kondisi awal (epoch=0), error yang diharapkan=1
4. kerjakan jika (epocheps)
-epoch=epoch +1
-kerjakan untuk i=1 sampai n
-tentukan j sedemikian rupa sehingga ||x-wj|| minimum sebut dengan Ci
- Perbaiki wj dengan ketentuan
- jika T=C maka
wj(baru)=wj(lama)+learningrate(x-wj(lama))
- jika T!=C maka
wj(baru)=wj(lama)-learningrate(x-wj(lama))
-kurangin learning rate
Oke.. sekarang akan dibuat program untuk mengimplementasikan algoritma diatas (LVQ), seperti biasanya, sebelumnya silahkan siapakan project kososng telebih dahulu, klik file pilih new project pada IDE yang digunakan, pada contoh kasus yang saya gunakan adalah visual studio 2010. Pada kotak project name, silahkan isi nama project sesuai dengan keinginan, tidak ada aturan kusus dalam penamaan project. Setelah itu ikuti langkah demi langkah dibawah ini
langkah 1 : pada project kosong yang telah disiapkan sebelumnya, silahkan tambahkan komponen komponen yang diperlukan seperti textbox, dataGridView maupun label. atur dan tata sedemikian rupa sehingga tampilannya seperti pada gambar diatas
langkah 2 : tambahkan function bernama lvq, source code seperti dibawa ini
private Int16 lvq(double[] bobot1, double[] bobot2, double[] data,int temTarget){
double totalBobot1=0;
double totalBobot2=0;
for (int i = 0; i < bobot1.Length; i++){
totalBobot1 = totalBobot1+Math.Pow((data[i]bobot1[i]),2);
totalBobot2 = totalBobot2+Math.Pow((data[i] - bobot2[i]),2);}
if (Math.Pow(totalBobot1, 0.5) <=Math.Pow(totalBobot2,0.5))
{
if (temTarget == 1)
{ return 1; }
else //target sama dengan 2
{ return 3 ; }
}
else
{
if (temTarget == 2)
{ return 2; }
else { return 4;
}}}
double totalBobot1=0;
double totalBobot2=0;
for (int i = 0; i < bobot1.Length; i++){
totalBobot1 = totalBobot1+Math.Pow((data[i]bobot1[i]),2);
totalBobot2 = totalBobot2+Math.Pow((data[i] - bobot2[i]),2);}
if (Math.Pow(totalBobot1, 0.5) <=Math.Pow(totalBobot2,0.5))
{
if (temTarget == 1)
{ return 1; }
else //target sama dengan 2
{ return 3 ; }
}
else
{
if (temTarget == 2)
{ return 2; }
else { return 4;
}}}
langkah 3 : tambahkan function bernama update bobot, source code lengkap dibawah ini
private double[] updateBobot(double[] bobot, double[] data, double alpha,int statusTarget){
double[] temp = newdouble[bobot.Length];
if (statusTarget == 1)
{
for (int i = 0; i < bobot.Length; i++)
{temp[i] = bobot[i] + (alpha * (data[i] - bobot[i]));}}
else{
for (int i = 0; i < bobot.Length; i++){
temp[i] = bobot[i] - (alpha * (data[i] - bobot[i]));}}
return temp;
}
if (statusTarget == 1)
{
for (int i = 0; i < bobot.Length; i++)
{temp[i] = bobot[i] + (alpha * (data[i] - bobot[i]));}}
else{
for (int i = 0; i < bobot.Length; i++){
temp[i] = bobot[i] - (alpha * (data[i] - bobot[i]));}}
return temp;
}
langkah 4 : sedangka pada button procces tambahkan source code seperti dibawah ini
dataGridView1.Rows.Clear();
loadData();
dataGridView1.Rows.Add(data.GetLength(0));
for (int i = 0; i < data.GetLength(0); i++)
{
dataGridView1.Auto ResizeRowHeadersWidth
(i,dataGridviewRowHeaderswidthSizeMode.AutoSizeToDisplayedHeaders);
dataGridView1.Rows[i].HeaderCell.Value = "Data ke-"+(i + 1).ToString();
dataGridView1.Rows[i].Cells[0].Value = data[i, 0].ToString();
dataGridView1.Rows[i].Cells[1].Value = data[i, 1].ToString();
dataGridView1.Rows[i].Cells[2].Value = data[i, 2].ToString();
dataGridView1.Rows[i].Cells[3].Value = data[i, 3].ToString();
dataGridView1.Rows[i].Cells[4].Value = data[i, 4].ToString();
dataGridView1.Rows[i].Cells[5].Value = data[i, 5].ToString();
}
for (int p = 0; p < 10; p++ )
{
for (int i = 0; i < data.GetLength(0); i++)
{
double[] temp = new double[data.GetLength(1)];
int tempTarget = target[i];
for (int j = 0; j < data.GetLength(1); j++)
{
temp[j] = data[i, j];
}
if (lvq(bobot1, bobot2, temp, tempTarget) == 1)
{
bobot1 = updateBobot(bobot1, temp, alpha, 1);
}
else if (lvq(bobot1, bobot2, temp, tempTarget) == 3)
{
bobot1 = updateBobot(bobot1, temp, alpha, 2);
}
else if (lvq(bobot1, bobot2, temp, tempTarget) == 2)
{
bobot2 = updateBobot(bobot2, temp, alpha, 1);
}
else if (lvq(bobot1, bobot2, temp, tempTarget) == 4)
{
bobot2 = updateBobot(bobot2, temp, alpha, 2);
}
}
alpha = alpha - (0.1 * alpha);
}
loadData();
dataGridView1.Rows.Add(data.GetLength(0));
for (int i = 0; i < data.GetLength(0); i++)
{
dataGridView1.Auto ResizeRowHeadersWidth
(i,dataGridviewRowHeaderswidthSizeMode.AutoSizeToDisplayedHeaders);
dataGridView1.Rows[i].HeaderCell.Value = "Data ke-"+(i + 1).ToString();
dataGridView1.Rows[i].Cells[0].Value = data[i, 0].ToString();
dataGridView1.Rows[i].Cells[1].Value = data[i, 1].ToString();
dataGridView1.Rows[i].Cells[2].Value = data[i, 2].ToString();
dataGridView1.Rows[i].Cells[3].Value = data[i, 3].ToString();
dataGridView1.Rows[i].Cells[4].Value = data[i, 4].ToString();
dataGridView1.Rows[i].Cells[5].Value = data[i, 5].ToString();
}
for (int p = 0; p < 10; p++ )
{
for (int i = 0; i < data.GetLength(0); i++)
{
double[] temp = new double[data.GetLength(1)];
int tempTarget = target[i];
for (int j = 0; j < data.GetLength(1); j++)
{
temp[j] = data[i, j];
}
if (lvq(bobot1, bobot2, temp, tempTarget) == 1)
{
bobot1 = updateBobot(bobot1, temp, alpha, 1);
}
else if (lvq(bobot1, bobot2, temp, tempTarget) == 3)
{
bobot1 = updateBobot(bobot1, temp, alpha, 2);
}
else if (lvq(bobot1, bobot2, temp, tempTarget) == 2)
{
bobot2 = updateBobot(bobot2, temp, alpha, 1);
}
else if (lvq(bobot1, bobot2, temp, tempTarget) == 4)
{
bobot2 = updateBobot(bobot2, temp, alpha, 2);
}
}
alpha = alpha - (0.1 * alpha);
}
langkah 5 : Done, program selesai dibuat. jika langkah langkah diatas dilakukan dengan benar, maka program akan mampu mengimplementasikan algoritma Learning Vector Quantization seperti yang sudah dijelaskan diatas.
berikut ini adalah hasil preview dari program yang telah dirunning
Gambar 2. Hasil preview program LVQ dengan max epoch 10 dan learning rate 0.05
untuk memahami tutorial ini silahkan download contoh programnya disini dan juga download projectnya disini
download program disini
download project disini
for more information contact on informasi@csharp-indonesia.com
pandauan download : klik link download yang disediaan diatas, setelah itu akan muncul halaman adf.ly, tunggu beberapa detik sampai pada pojok kanan atas muncul tulisan skip ad. klik tombol tersebut ,setelah itu akan muncul halaman ziddu, silahkan klik pada button download yang muncul pada halaman ziddu
NB : Dalam tutorial ini program ditulisa menggunakan IDE Visual studio 2010. dengan target framework 3.5. Sehingga minimal komputer harus terinstal windows vista untuk bisa menjalankan program *.exe nya, Atau windows xp yang sudah di instal netFrameWork 4.0. Sedangkan untuk membuka projectnya mau tidak mau harus menginstal microsoft visual studio 2010
Artikel Terkait
bisa minta tolong di kirimkan tutorial lengkap mengenai algoritma LVQ? disertai dengan contoh yang mudah untuk memahaminya.
BalasHapussaya sangat butuh materi ini. terima kasih atas perhatiannya.
Saya juga, boleh minta tutorial lengkap mengenai LVQ? saya cuma punya yg dr bukunya sri kusumadewi. api kurang paham cara perhitungannya, cara pembelajaran dan pelatihannya. mohon bantuannya. kalau source code yg VB ada gag ya?
BalasHapustrimakasih.. salam kenal dan sukses selalu..
gan, uda dapet tentang lvq kah?
BalasHapussalam kenal.. pU2t26@gmail.com
udah dapet belum semua?
BalasHapussalam kenal
febriantura@gmail.com
gan,
BalasHapuskalau udah dapat tolong kirim samakulah,
butuh banget ini masalahnya,
mau tugas akhir,
udah lama tertunda gara2 gak dapat hitung manualnya
chrisnal_smktel@yahoo.com
tolong banget gan :(
Algoritma LVQ sebenarnya untuk proses perhitungannya tidak terlalu rumit, tinggal mengukur jarak satu data dengan data set yang ada setelah itu melakukan update pada bobot.
BalasHapuskalau untuk VB saya tidak punya....
bisa minta tolong di kirimkan tutorial lengkap mengenai algoritma LVQ? disertai dengan contoh yang mudah untuk memahaminya.
BalasHapussaya sangat butuh materi ini. terima kasih atas perhatiannya.
source code yg VB ada gag ya?
trima kasih
qihang1005,christian louboutin
BalasHapuslouboutin
michael kors handbags
supra shoes
cheap uggs
replica watches
nike huarache
cheap versace
longchamp outlet
kobe bryant shoes
soccer shoes
oakley sunglasses
tommy hilfiger outlet
louis vuitton handbags
abercrombie and fitch
sac longchamp pliage
ugg boots outlet
insanity workout
ray ban sunglasses
pandora bracelets
louis vuitton pas cher
true religion outlet
cheap ray ban sunglasses
ghd
coach factory outlet
kate spade outlet
mcm outlet
rolex watches
gucci borse
tod's shoes
jordans for sale
air max 90
ray bans
q
2015-11-24 xiaozhengm
BalasHapuslouis vuitton
michael kors outlet
tommy hilfiger outlet
louis vuitton outlet
jordan 3 infrared
cheap uggs boots
north face
louis vuitton outlet
sac longchamp
rolex replica watches
louboutin pas cher
ralph lauren outlet
michael kors handbags
true religion
ed hardy uk
adidas originals
michael kors outlet
michael kors
uggs outlet
louis vuitton
hermes belt
michael kors outlet
air jordan uk
louis vuitton pas cher
michael kors handbags
ray ban
michael kors outlet online
nike air max uk
ghd
snapbacks wholesale
michael kors
jordan 3
michael kors outlet
louboutin
moncler jackets
oakley sunglasses
louis vuitton
michael kors uk
toms wedges
coach outlet
zhengjx20160326
BalasHapuscoach factory outlet
toms shoes
coach outlet online
kate spade outlet
coach purses on sale
prada outlet
longchamp bags
michael kors outlet
nike blazer
coach outlet store online
burberry outlet canada
canada goose sale
michael kors purses
valentino
coach outlet store online
adidas superstars
adidas gazelle
lululemon outlet store
fitflops outlet
mcm handbags
skechers outlet
coach outlet
fitflop uk
cheap ray ban sunglasses
canada goose jackets
louis vuitton handbags
christian louboutin outlet
oakley sunglasses sale
louboutin outlet
longchamp outlet
canada goose uk
michael kors
ralph lauren
coach outlet
valentino bags
ralph lauren
coach outlet store online
kate spade handbags
canada goose uk
ray bans
zhengjx20160411
BalasHapuscheap jerseys
air max
cheap toms
rolex watches
hollister clothing
ray ban outlet
true religion jeans
toms shoes outlet online
kate spade outlet
christian louboutin shoes
michael kors bags
louis vuitton outlet
louis vuitton purses
ralph lauren outlet
kate spade outlet
nike roshe run
replica rolex watches
louis vuitton outlet
coach factorty outlet online
christian louboutin shoes
nike sb dunks
timberland boots
marc jacobs outlet
michael kors outlet
polo ralph lauren
ray ban sunglasses outlet
michael kors outlet online
burberry outlet
michael kors outlet clearance
rolex watches
true religion outlet
michael kors handbags
louis vuitton handbags
jordan concords
michael kors canada
cheap ray ban sunglasses
nike uk
ray ban wayfarer
concords 11
cheap basketball shoes
bisa minta tolong kirim ke email saya, bang.... terimakasih
BalasHapusdimasfirmansyah021@gmail.com
golden state warriors
BalasHapuslos angeles lakers jerseys
jordan shoes
new york knicks
cheap nike shoes sale
michael kors outlet
jordan shoes
michael kors outlet
kansas city chiefs jerseys
michael kors handbags