Kohonen SOM dan Learning Vector Quantization (LVQ)
-
Upload
petrus-fendiyanto -
Category
Education
-
view
687 -
download
23
description
Transcript of Kohonen SOM dan Learning Vector Quantization (LVQ)
Pascasarjana Matematika/ITS Page 1
Exploratory Data Analysis
JST-Kohonen SOM dan Learning Vector Quantization (LVQ)
Abstrak
Pada makalah ini dibahas aplikasi jaringan syaraf tiruan Kohonen SOM dan Learning
Vector Quantization (LVQ) untuk pengelompokan atau clustering berdasarkan kesamaan
atribut yang dimiliki bersama. Banyaknya atribut yang sama akan menggambarkan kedekatan
kelompok daerah.
Sistem ternyata mampu menghasilkan kelompok daerah yang terbentuk dari kesamaan
dan kemiripan atribut, sehingga dapat diketahui keseesuaian pengalokasian subsidi dan
sumbangan untuk setiap daerah tingkat II.
1. Pendahuluan
Dalam suatu komputasi yang lebih kompeks, sangat tidka mungkin untuk membentuk
suatu model karena kurang mencukupinya pengetahuan eksplisit tentang factor-faktor yang
mempengaruhi time series atau pengetahuan tersebut perlu coast besar dalam memperolehnya.
Dalam keadaan seperti ini metode exploratory data analysis (EDA) masih tetap dapat
digunakan.
Metode EDA dapat digunakan untuk mengilustrasikan struktur dalam sehimpun data
statistik. Tujuan utama dari EDA adalah menampilkan agar mudah dipahami tetapi pada waktu
yang bersamaan menyediakan informasi se-esensial mungkin dari himpunan data aslinya.
Cluster analysis biasanya didasarkan kepada jarak ultrametic yang didefinisikan sepanjang
graph hierarki clustring melalui perbandingan langsung dari simiaritas setiap dua data set yang
terlihat membingungkan.
Algoritma Kohonen-SOM adalah suatu metode yang unik dan dapat
mengkombinasikan proyeksi dan algoritma clustering. Pada saat ang sama Kohonen SOM
dapat digunakan untuk memvisualisasi cluster dalam sehimpunan data set dan untuk
mempresentasikan data set dalam pemetaan dua-dimensi dengan tetap menjaga
kedidaklinearan item-item data.
Learning Vector Quantization (LVQ) adalah sebuah metode klasifikasi dimana setiap
unit output mempresentasikan sebuah kelas. LVQ digunakan untuk pengelompokkan dimana
jumlah kelompok sudah ditentukan arsitekturnya (target/kelas sudah ditentukan).
Pascasarjana Matematika/ITS Page 2
LVQ salah satu jaringan syaraf tiruan yang merupakan algoritma pembelajaran kompetitif
terawasi versi dari algoritma Kohonen Self-Organizing Map (SOM). Tujuan dari algoritma ini
adalah untuk mendekati distribusi kelas vektor untuk meminimalkan kesalahan dalam
pengklasifikasian.
Berikut akan dilakukan pengelompokan atau clustering wilayah jawa timur yang
membaginya ke dalam 4 kelompok berdasarkan kesamaan atribut yang dimiliki bersama
dengan menggunakan algoritma Kohonen SOM dan Learning Vector Quantization (LVQ)
2. Clustering
Analisis Cluster adalah upaya menemukan sekelompok obyek yang mewakili suatu
karakter yang sama atau hampir sama (similar) antar satu obyek dengan obyek lainnya pada
suatu kelompok dan memiliki perbedaan (not similar) dengan obyek–obyek pada kelompok
lainnya. Tentunya persamaan dan perbedaan tersebut diperoleh berdasar informasi yang
diberikan oleh obyek–obyek tersebut beserta hubungan (relationship) antar obyek.
Berdasarkan tipe pembelajarannya, jaringan syaraf tiruan (JST) dapat dibagi menjadi
dua macam tipe JST, JST supervised dan JST unsupervised. Perbedaan kedua macam JST
tersebut didasarkan pada sifat data dan kemampuan pembelajaran JST. Pada JST supervised
data pelatihannya terdapat data masukan dan data pembimbing, proses pembelajaran adalah
penyesuaian bobot JST agar dengan keluaran proses data masukan akan menyerupai data
bimbingan. Sedangkan yang dimaksud JST unsupervised adalah JST yang mempunyai
kemampuan penyesuaian bobot JST hanya didasarkan data masukannya (tanpa data
pembimbing).
3. Algoritma SOM (Self-Organizing Map) Kohonen
Jaringan SOM Kohonen merupakan salah satu model jaringan syaraf yang
menggunakan metode pembelajaran unsupervised.
Gambar 1. Struktur Jaringan Syaraf Tiruan SOM Kohonen
Pascasarjana Matematika/ITS Page 3
Jaringan SOM Kohonen terdiri dari dua layer, yaitu layer input dan layer output. Setiap neuron
dalam lapisan input terhubung dengan setiap neuron pada lapisan output. Setiap neuron dalam
lapisan output merepresentasikan kelas dari input yang diberikan. Berikut ini adalah tahapan
algoritma JST kohonen sebagai berikut:
Langkah 0 Inisialisasi bobot 𝑤𝑖𝑗 dengan nilai random. Atur parameter learning rate
dan parameter tetangga (R)
Langkah 1 Apabila kondisi selesai belum terpenuhi, lakukan langkah 2-8
Langkah 2 Untuk setiap vector input x, lakukan langkah 3-5
Langkah 3 Untuk setiap j, Hitung:
𝐷(𝑗) = ∑(𝑤𝑖𝑗
𝑖
− 𝑥𝑖)2
Langkah 4 Mencari indeks j dengan 𝐷(𝑗) adalah minimum
Langkah 5 Melakukan perbaikan nilai 𝑤𝑖𝑗 dengan nilai tertentu yaitu :
𝑤𝑖𝑗(𝑛𝑒𝑤) = 𝑤𝑖𝑗(𝑜𝑙𝑑)+∝ [𝑥𝑖 − 𝑤𝑖𝑗(𝑜𝑙𝑑)]
Langkah 6 Learning rate diperbarui
Langkah 7 Mereduksi radius dari fungsi tetangga pada waktu tertentu
(epoch).
Langkah 8 Menentukan kondisi STOP
4. Algoritma Learning Vector Quantization (LVQ)
Learning vector quantization (LVQ) adalah metode pengelompokan polayang mana
setiap output mewakili suatu kelas atau kategori. Vector referensi maupun vector pelatihan
dapat berupa data riil biner atau bipolar. Arsitektur dari suatu LVQ neural network ditunjukkan
pada gambar2. Algoritma dari metode ini sebagai berikut:
Langkah 0 Inisialisasi vector referensi dan learning rate
Langkah 1 Selama kondisi berhenti salah, kerjakan langkah 2-6
Langkah 2 Untuk setiap vector input x, kerjakan langkah 3-4
Langkah 3 Dapatkan J sehingga ‖𝑥 − 𝑤𝑗‖ minimum
Langkah 4 Perbaiki wj menurut:
Jika T = Cj, maka
wj (new) = wj (old) + a[x – wj (old)]
if T ≠ Cj, maka
wJ(new) = wJ(old) – _[x – wj(old)]
Pascasarjana Matematika/ITS Page 4
Langkah 5 Reduksi learning rate
Langkah 6 Uji kondisi berhenti
Dapat menggunakan jumlah iterasi yang tetap atau learning rate mendekati nilai yang
sangat kecil.
Keterangan notasi :
x vector training (x1, . . .,xi, . . ., xn)
T kategori yang benar untuk vector training
w vector bobot unit output ke-j (x1j, . . .,xij, . . ., xnj)
Cj kategori yang diwakilkan oleh unit output ke-j.
‖𝑥 − 𝑤𝑗‖ jarak Euclidean antara vector input dan vector bobot untuk unit output ke-j
Gambar 2. LVQ Neural Net
Pascasarjana Matematika/ITS Page 5
5. Data Input
Berikut ini merupakan data input (telah dinormalkan) yang di cluster menjadi 4 kelompok:
Nama_daerah X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 Class
Kdy. Madiun 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Pacitan 0 0 0 0 0 0 0 1 0 1 1 1 0 1
Ponorogo 1 0 0 0 0 0 0 0 1 1 1 0 0 1
Trenggalek 0 0 0 1 0 1 1 1 1 0 1 1 0 2
Tulungagung 1 0 1 0 0 0 0 0 1 0 1 1 0 2
Blitar 1 0 0 0 1 0 0 0 0 0 1 1 0 2
Kediri 1 1 1 0 0 1 0 0 0 0 1 1 0 3
Malang 1 1 1 0 0 1 0 0 0 1 1 1 0 3
Lumajang 1 0 1 0 0 0 0 1 1 0 1 1 0 2
Jember 1 1 1 1 0 1 0 0 0 0 0 1 0 3
Banyuwangi 1 1 1 0 0 1 0 0 0 1 0 1 0 3
Bondowoso 0 0 0 0 0 0 0 1 1 1 1 1 0 1
Situbondo 0 0 0 0 0 0 0 1 0 0 1 1 0 1
Probolinggo 1 0 0 0 0 0 0 0 1 0 1 1 0 2
Pasuruan 1 1 1 0 0 1 0 0 0 0 1 1 0 3
Sidoarjo 1 1 1 1 1 1 0 0 1 0 1 1 0 4
Mojokerto 1 1 0 0 0 0 0 1 1 0 1 1 0 1
Jombang 1 0 0 0 1 0 0 0 1 0 1 1 0 2
Nganjuk 1 0 1 0 0 0 0 0 1 1 1 1 0 2
Madiun 0 0 0 0 0 0 0 0 1 0 1 1 0 1
Magetan 0 0 1 0 1 0 0 0 1 0 1 1 0 2
Ngawi 0 0 0 0 0 0 0 0 1 0 1 1 0 1
Bojonegoro 1 0 1 0 1 0 0 0 1 1 1 1 0 2
Tuban 1 1 1 0 0 1 0 0 0 0 1 1 0 3
Lamongan 1 0 0 0 0 0 0 0 0 0 1 1 0 2
Gresik 1 1 0 0 1 1 0 1 1 0 1 1 0 4
Bangkalan 0 0 1 0 0 0 0 1 1 0 0 1 0 1
Sampang 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Pamekasan 0 0 1 0 0 0 0 0 1 0 1 1 0 2
Sumenep 1 0 0 0 0 1 0 0 0 0 1 1 0 3
Kdy. Kediri 0 0 0 0 1 0 0 1 1 0 1 1 0 1
Kdy. Blitar 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Malang 0 1 1 1 1 1 0 1 1 1 1 1 0 4
Kdy. Probolinggo 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Pasuruan 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Mojokerto 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Batu 0 1 1 1 1 1 1 0 0 1 0 0 0 3
1 Sumber data: Jurnal Exploratory Data Analysis dengan JST - Kohonen SOM: Struktur Tingkat
Kesejahteraan Daerah Tk II se Jawa Timur oleh Prof. Drs, M. Isa Irawan, MT
Pascasarjana Matematika/ITS Page 6
Keterangan :
X1 = Jumlah Penduduk
X2 = Pajak Daerah
X3 = Retribusi Daerah
X4 = Bagian Laba Usaha Daerah
X5 = Penerimaan lain-lain
X6 = Bagi Hasil Pajak
X7 = Bagi Hasil Bukan Pajak
X8 = Subsidi Daerah Otonom
X9 = Bantuan Pembangunan
X10 = Penerimaan Lainnya
X11 = Pinjaman Pemerintah Pusat
X12 = Pinjaman Lembaga Keuangan Dalam Negeri
X13 = Pinjaman Dari Luar Negeri
Data input diatas dinormalisasi berdasarkan acuan sebagai berikut:
𝑓(𝑥) = {1, 𝑥𝑖 ≥ 𝑥𝑟𝑎𝑡𝑎−𝑟𝑎𝑡𝑎
0, 𝑥𝑖 < 𝑥𝑟𝑎𝑡𝑎−𝑟𝑎𝑡𝑎
Kemudian data-data input tersebut diproses oleh sistem JST sehingga menghasilkan output
berupa kelompok daerah tingkat II berdasarkan penerimaan daerah.
Tabel data bobot awal
Nama daerah X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 Class
Kdy. Madiun 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Trenggalek 0 0 0 1 0 1 1 1 1 0 1 1 0 2
Kediri 1 1 1 0 0 1 0 0 0 0 1 1 0 3
Sidoarjo 1 1 1 1 1 1 0 0 1 0 1 1 0 4
Tabel data training
Nama daerah X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 class
Pacitan 0 0 0 0 0 0 0 1 0 1 1 1 0 1
Ponorogo 1 0 0 0 0 0 0 0 1 1 1 0 0 2
Tulungagung 1 0 1 0 0 0 0 0 1 0 1 1 0 2
Blitar 1 0 0 0 1 0 0 0 0 0 1 1 0 2
Malang 1 1 1 0 0 1 0 0 0 1 1 1 0 3
Lumajang 1 0 1 0 0 0 0 1 1 0 1 1 0 2
Jember 1 1 1 1 0 1 0 0 0 0 0 1 0 3
Banyuwangi 1 1 1 0 0 1 0 0 0 1 0 1 0 3
Bondowoso 0 0 0 0 0 0 0 1 1 1 1 1 0 1
Pascasarjana Matematika/ITS Page 7
Situbondo 0 0 0 0 0 0 0 1 0 0 1 1 0 1
Probolinggo 1 0 0 0 0 0 0 0 1 0 1 1 0 2
Mojokerto 1 1 0 0 0 0 0 1 1 0 1 1 0 1
Jombang 1 0 0 0 1 0 0 0 1 0 1 1 0 2
Nganjuk 1 0 1 0 0 0 0 0 1 1 1 1 0 2
Ngawi 0 0 0 0 0 0 0 0 1 0 1 1 0 1
Gresik 1 1 0 0 1 1 0 1 1 0 1 1 0 4
Bangkalan 0 0 1 0 0 0 0 1 1 0 0 1 0 1
Sampang 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Kediri 0 0 0 0 1 0 0 1 1 0 1 1 0 1
kdy.Pasuruan 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Sumenep 1 0 0 0 0 1 0 0 0 0 1 1 0 3
Kdy. Blitar 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Probolinggo 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Pasuruan 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Kdy. Mojokerto 0 0 0 0 0 0 0 1 1 0 1 1 0 1
Magetan 0 0 1 0 1 0 0 0 1 0 1 1 0 2
Bojonegoro 1 0 1 0 1 0 0 0 1 1 1 1 0 2
Lamongan 1 0 0 0 0 0 0 0 0 0 1 1 0 2
Pamekasan 0 0 1 0 0 0 0 0 1 0 1 1 0 2
Pasuruan 1 1 1 0 0 1 0 0 0 0 1 1 0 3
Tuban 1 1 1 0 0 1 0 0 0 0 1 1 0 3
Kdy. Malang 0 1 1 1 1 1 0 1 1 1 1 1 0 4
Batu 0 1 1 1 1 1 1 0 0 1 0 0 0 3
6. Pembahasan
Berikut merupakan Listing Program yang digunakan dalam memproses data input:
a. Kohonen
data=handles.data;
TP=get(handles.edit2, 'String'); Jarak=get(handles.edit3, 'String');
net = newsom(data',[2 2],TP,Jarak);
iterasi=str2num(get(handles.edit7, 'String')); net.trainParam.epochs=iterasi;
net.trainParam.lr =0.01; net.trainParam.nd =1;
net=train(net,data');
output=sim(net,data');
Pascasarjana Matematika/ITS Page 8
Klasifikasi=vec2ind(output);%hasil dr outpu dujadkan vektor 2
dimensi
figure(5) plotsom(net.layers{1}.positions); hold off
figure(3) plotsom(net.iw{1,1},net.layers{1}.distances);%jarak
figure(2) plotsomnd(net);%jaringan
figure(4) plotsomhits(net,data');%
xlswrite('DataJawaTimur.xlsx',Klasifikasi',1,'P2');
[o NamaKota]=xlsread('DataJawaTimur.xlsx',1,'A2:A38');%
delete('DataKelas.xlsx') listKelas=[];
for k=1:4 for i=1:37
if Klasifikasi(i) == k kelas=NamaKota(i);
listKelas=[listKelas kelas]; end end
if isempty(listKelas)%jika kosong dlm kelompok listKelas='kosong'; end
x=[64+k]; Range = char(x);%menentukan di exel kolom A,B,C,D
berdasarkan asci xlswrite('DataKelas.xlsx',listKelas',2,Range); listKelas=[];
end
[o datakelas]=xlsread('DataKelas.xlsx',2,'A1:z37');%plot
pengelompokan set(handles.uitable5,'data',datakelas);
Pascasarjana Matematika/ITS Page 9
Hasil Output
b. LVQ
data=handles.data; input=data';
Tc=(xlsread('datatraining.xlsx',1,'O2:O34'))'; T= ind2vec(Tc); target = full(T);
% Alpha=str2num(get(handles.edit2, 'String')); % Percentage=str2num(get(handles.edit3, 'String'));
net = newlvq(minmax(input),4,[9/37 9/37 9/37 10/37]); %
iterasi=str2num(get(handles.edit7, 'String')); net.trainParam.epochs=iterasi; net.IW{1,1}=[0 0 0 0 0 0 0 1 1 0 1 1
0;...%madiun 0 0 0 1 0 1 1 1 1 0 1 1
0;...%trenggalek 1 1 1 0 0 1 0 0 0 0 1 1
0;...%kediri 1 1 1 1 1 1 0 0 1 0 1 1
0];%sidoarjo
net = train(net,input,target);
output = sim(net,input)
Pascasarjana Matematika/ITS Page 10
Klasifikasi=vec2ind(output); Output=Klasifikasi'
xlswrite('DataJawaTimur.xlsx',Klasifikasi',1,'Q2');
[o NamaKota]=xlsread('datatraining.xlsx',1,'A2:A34');
delete('DataKelas.xlsx') listKelas=[];
for k=1:4 for i=1:33
if Klasifikasi(i) == k kelas=NamaKota(i);
listKelas=[listKelas kelas]; end end
if isempty(listKelas) listKelas='kosong'; end
x=[64+k]; Range = char(x); xlswrite('DataKelas.xlsx',listKelas',3,Range); listKelas=[];
end
[o datakelas]=xlsread('DataKelas.xlsx',3,'A1:z37'); set(handles.uitable5,'data',datakelas);
Pascasarjana Matematika/ITS Page 11