Self Organizing Maps Tim Asprak Metkuan http://bit.ly/UjMoLI
What is it SOM? Salah satu model NN yang menggunakan metode competitive unsupervised learning Solusi untuk merepresentasikan data multidimensi ke dalam ruang dimensi yang lebih kecil (1 atau 2 dimensi) Cluster direpresentasikan oleh bobot cluster Menghitung jarak objek ke cluster
Architecture Terdapat satu vektor bobot dengan panjang n, yang dihubungkan dengan setiap unit ouput
Uses
Uses (cont) A map of the world where countries have been colored with the color describing their poverty type (the color was obtained with the SOM in the previous figure):
Algorithm Buat topologi jaringan (node input & output) Inisialisasi bobot dari input ke output (midpoint/ random). Panjang vektor bobot sepanjang node input untuk setiap node output. Inisialisasi learning rate (α), penurunan learning rate (Ɵ), dimana 0 < α,Ɵ < 1 Inisialisasi jumlah tetangga (R)
Algorithm (cont) Untuk setiap vektor sampel x, hitung jarak terhadap vektor bobot cluster (Euclidean distance). Cluster dari x adalah cluster dengan jarak minimum. Update bobot cluster pemenang Update α dan R 4. Ulangi langkah 1 hingga kondisi berhenti terpenuhi Kondisi berhenti: Jumlah iterasi tercapai (bisa ditentukan) Learning rate (alpha) = 0
SOM in Matlab net = newsom(P,[D1,D2,...],TFCN,DFCN,OLR,OSTEPS,TLR,TNS) P : matrik RxQ dari sejumlah Q vektor input Di : ukuran dimensi layer TFCN : fungsi topologi, default = ‘hextop’ DFCN : fungsi jarak, default = ‘linkdist ‘, euclidean = ‘dist’ OLR : learning rate awal, default = 0.9 OSTEPS : jumlah langkah ketetanggaan untuk menyusutkan menjadi 1, default =100 TLR : penurunan learning rate, default = 0.02 IN : inisialisasi ketetanggaan, default = 3
Davies-Bouldin Index Davies-Bouldin Index digunakan untuk memaksimalkan jarak inter cluster di antara cluster Ci dan Cj, pada saat yang sama juga mencoba meminimalkan jarak antara titik dalam cluster. C = {C1,.., Ck} merupakan clustering dari N objek Dengan: Keterangan: Ci : cluster ke i ci : centroid cluster ke i
Example Pelatihan menggunakan data nilai (nilai.xls) Inisialisasi: Learning rate = 0,3, penurunan learning rate = 0,5, R=0 Bobot awal: W = 25 50 30 50
Matlab code %Komentar rand('seed',8353); echo on; %echo untuk menampilkan di matlab %contoh echocardiogram %hit any hey pause Q = load('data.mat'); P = Q.data(:,:); P = P'; %ada 35 instance dengan 2 atribut --> uts,uas figure, plot(P(1,:),P(2,:), '.'); %plot untuk menampilkan baris pertama untuk semua kolom %hit any key net = newsom(P,[2 1],'hextop','dist',0.3,100,0.5,1); % setting parameter
Matlab code (cont) %hit any key pause net.trainParam.epochs = 25; %banyak iterasi = 25 net.IW{1,1} =[25 30;50 50]; %inisialisasi bobot awal net = train(net,P); figure, plot(P(1,:),P(2,:), '.'); hold on plot(net.iw{1,1}(:,1),net.iw{1,1}(:,2),'rx') hold off
Matlab code (cont) tes = net.iw{1,1} %hit any key pause result = sim(net,P); %clustering similarity result = vec2ind(result); xlswrite('bobot_akhir',tes,'result'); echo off disp('end of SOM')
Exercise Menggunakan data nilai uts dan uas, lakukan pembentukan cluster dengan SOM 1 iterasi menggunakan excel (latihan.xls) Inisialisasi: Learning rate = 0,3, penurunan learning rate = 0,5, R=0 Bobot awal: W = 25 50 30 50