klasifikasi data dengan learning vector quantization

6
 Klasifkasi Data dengan Learning Vector Quantization Ol eh:   w w w . s of t s c i e n t s. w e b.id  Learn i n g ve ct orq u an tizati on , S etel ah p en u lis mem b u atversi d i  j a v a, k i n i d i l a k u k anpo r t i ng k e d a l a m p l a t f or m . N et 4 . 0 y a i tu C # kar enaC#u n t u kmel aku kan kom pu t asi ar r aydal am j u ml ah bes ar, l u mayan l ebih cepa t. M engenalL V Q yai t u al gor i t ma n on li n earyang beker j a u n t u k mel aku kan kl asi k asis uper vi sis ehi n gg a ki ta h arus mem pu nyaii np u td an t ar ge tyang t el ah di ke t ah uis ebag ai b ah an u n tuk men ca ri nilai ‘ b ob ot ya n gop ti mal  A tu r a n L V Q a g a rberbedaden g a n bac k p r o p a g a t i on y ai t u l ebi h si m pl e t i da k men ggu n ak an f un gsiakt i f asi ,t ap i  y an g l e b i h p entin g a d a l a h b o b o t a w a l y an g d i g u n a k a n harust epat Misal k an

Upload: mulkan-syarief

Post on 04-Nov-2015

15 views

Category:

Documents


2 download

DESCRIPTION

Klasifikasi Data Dengan Learning Vector Quantization, ahli matlab, softscients, IT Outsourcing service

TRANSCRIPT

Klasifikasi Data dengan Learning Vector QuantizationOleh : www.softscients.web.id Learning vector quantization, Setelah penulis membuat versi di java, kini dilakukan porting kedalam platform .Net 4.0 yaitu C# karena C# untuk melakukan komputasi array dalam jumlah besar, lumayan lebih cepat.Mengenal LVQ yaitu algoritma non linear yang bekerja untuk melakukan klasifikasi supervisi sehingga kita harus mempunyai input dan target yang telah diketahui sebagai bahan untuk mencari nilai bobot yang optimalAturan LVQ agar berbeda dengan backpropagation yaitu lebih simple tidak menggunakan fungsi aktifasi, tapi yang lebih penting adalah bobot awal yang digunakan harus tepatMisalkan

Saya mempunya 6 paramater dengan 16 data sample untuk diklasifikan menjadi

Maka matrix bobot nya yaitu

Kamu bisa melihat plot data berikut, kita akan menggunakan LVQ untuk klasifikasi data!Agar lebih mudah, kita plotkan saja ke versi 2 dimensi yaitu

Terlihat bahwa secara ploting, terdapat 3 pusat data, bagaiamana LVQ dapat membantu kita??

Penggunaan Pustakaprivate static void Test(){ /* kita akan memberikan sebuah contoh LVQ yaitu * menggunakan 2 parameter dengan data 14 */ double[,] sample = new double[,]{ {7,8}, {8,8}, {9,8}, {8,7}, {8,9}, {1,3}, {3,1}, {5,3}, {3,5}, {2,13}, {3,13}, {4,13}, {3,12}, {3,14}

}; Program.Print(sample); /* LVQ hanya support untuk 1 target paramater saja! * dan dimulai dari 1 sampai nilai tertentu! */ int[,] target = new int[,]{ {1}, {1}, {1}, {1}, {1}, {2}, {2}, {2}, {2}, {3}, {3}, {3}, {3}, {3}

}; int jumlahTarget = 3; int jumlahParamater = 2; double[,] bobot = LVQ.initRandomBobot(jumlahTarget,jumlahParamater); //biar mudah, kita menggunakan bobot random saja!

double[] minmax = DataNorm.MinMax(sample); //juga kita butuh normalisasi data! //dengan class DataNorm untuk //menghitung nilai maksimal dan minimal sebuah data!

LVQ lvqPelatihan = new LVQ(); //panggil class LVQ

lvqPelatihan.CreateSample(DataNorm.Normalisasi(sample, minmax[0], minmax[1])); //masukan data sample nya! lvqPelatihan.TARGET = target; //setting target lvqPelatihan.MAX_EPOCH = 1000; //setting ulangan lvqPelatihan.BOBOT = bobot; //setting bobot lvqPelatihan.TARGET_ERROR = 0.0001; //nilai MSE minimum square error nya! lvqPelatihan.MOMENTUM = true; //pakai momentum! lvqPelatihan.Training(); //proses pelatihan dimulai!!! /* untuk mengetahui LVQ berjalan dengan baik! * maka kita bisa cek nilai error nya! * jika nilai error nya = 0 * maka itu tandanya proses pelatihan 100% sukses * kalau tidak! maka mungkin ada yang tidak sesuai antara * target dan result nya */ Console.WriteLine("Cek nilai error : " + lvqPelatihan.CurrentError); //cek nilai error nya! //nilai error itu dihitung dengan cara MSE antara target dan result nya! //jika nilai error != 0, maka ulangi saja proses training! dikarenakan juga inisiasi bobot itu dengan random //terkadang bisa berhasil - juga tidak! Console.WriteLine("Dicapai pada epoch : " + lvqPelatihan.EPOCH); //cek nilai epoch nya! Console.WriteLine("Cek result nya : "); Program.Print(lvqPelatihan.RESULT); Console.WriteLine("Hasil Akhir bobot nya : "); Program.Print(lvqPelatihan.BOBOT); if(lvqPelatihan.CurrentError!=0) { Console.WriteLine("proses pelatihan harus diulangi lagi!, karena error tidak mencapai 0"); return; }

/* kita akan mencoba melakukan proses pengujian! * kita ambil saja 2 baris saja! */ double[,] sample2 = new double[,]{ {7,8}, {8,8} };

LVQ lvqPengujian = new LVQ(); //panggil class LVQ int[,] prediksi = lvqPengujian.Testing(DataNorm.Normalisasi(sample2, minmax[0], minmax[1]),bobot);

Console.WriteLine("Cek prediksi nya : "); Program.Print(prediksi);

}

Menghasilkan

Cukup mudah bukan!Kamu hanya menggunakan beberapa baris saja untuk proses klasifikasi data menggunakan LVQDownloadKunjungi ke www.softscients.web.id