Anda di halaman 1dari 6

[NEURAL NETWORK]

November 17, 2011

Memanfaatkan JST-LVQ Untuk Deteksi Jenis Penyakit Jantung Berdasar Isyarat ECG
LVQ dikembangkan oleh Teuvo Kohonen. Algoritma LVQ merupakan algoritma terawasi (supervised) yang merupakan penurunan dari algoritma kohonen yang sifatnya tak terawasi (Unsupervised). Algoritma ini berdasar dari teori VQ (Vector Quantization). SOM(Self-Organizing Map) merupakan teknik yang digunakan untuk memetakan vektor input (x) dari ruang kontinyu ke ruang diskret. Mengapa diskret? Karena ruang diskret ini terdiri dari neuron-neuron yang tersusun dalam bentuk grid. Vektor input (x) yang jumlah elemennya banyak atau bahkan bisa sangat banyak akan dipetakan pada peta ciri (feature map) pada SOM. Pada dasarnya, SOM digunakan untuk mencari Neuron (dari grid) yang memiliki bobot dengan nilai jarak terdekat ke vektor input (x). Nah jika sudah ditemukan, maka neuron tersebut bisa dianggap sebagai representasi dari vektor input (x). Tentu saja jumlah elemen yang mewakili dari vektor input ini akan menjadi lebih sedikit. Fakta tersebut mendasari lahirnya teori VQ yang bertujuan untuk kompresi data. Karena vektor input (x) yang jumlahnya banyak itu akan diwakili degan membentuk prototipe atau bisa dibilang code book nya. Nah, lalu lahirlah LVQ dengan dasar dari VQ tapi tujuannya untuk klasifikasi atau pelabelan vektor input. Mengapa bisa dijadikan klasifikasi? Bisa anda lihat bahwa SOM sendiri sebenarnya mewakilkan vektor input ke dalam bobot tertentu. Sementara tiap vektor input dengan ciri berbeda akan memiliki neuron pemenang yang berbeda pula, sehingga mereka bisa dipisahkan untuk tujuan klasifikasi. Sifat LVQ yang terawasi menandakan bahwa dia membutuhkan nilai target atau kelas yang harus didefinisikan di awal. Kelas-kelas atau target tersebut merupakan representasi dari vektor input. Dengan kehadiran dari target tersebut maka LVQ akan mengubah nilai-nilai bobot agar mampu mengklasifikasi vektor input baru (yang belum memiliki kelas) ke dalam kelaskelas atau target yang sudah didefiniskan sebelumnya. Lebih lanjut, LVQ ini dikatakan berguna dalam pengenalan pola dari vektor input. Beberapa aplikasi yang bisa menggunakan LVQ adalah klasifikasi, kompresi data seperti pengenalan suara, pengolahan citra digital, komunikasi dan lainnya. LVQ sendiri memiliki banyak variant atau turunan. Saya hanya tau sampai LVQ4 dengan LVQ1 merupakan teori awal (yang digunakan pada artikel ini). Pada artikel yang lain saya telah membahas tentang klusterisasi menggunakan K-Means. K-means merupakan jenis jaringan tak terawasi (unsupervised) karena tidak ditentukan kelas atau label. Langkah-langkah algoritma LVQ adalah: 1. Inisialisasi vektor bobot yang diambil dari M buah vektor input pelatihan (yang memiliki ciri-ciri atau feature M buah kelas). 2. Tentukan pesat belajar awal (Alpha). 3. Selama syarat penghentian belum terpenuhi, kerjakan langkah 3 sampai 7. 4. Untuk setiap vektor input pelatihan P, kerjakan langkah 5-6. 5. Hitung jarak antara wj dan P untuk j=1,2....M. Untuk jarak J minimum maka j=J. 6. Sesuaikan nilai vektor bobot pemenang yj atau neuron pemenang, dengan ketentuan: o Bila T = Cj maka = + ( )
[{EE UGM, Indonesia} Budi S (bs_jogja@yahoo.com )and Jans H (jans.hendry@gmail.com)]

[NEURAL NETWORK]

November 17, 2011

Artinya kita mendekatkan bobot neurong pemenang WJ ke input. o Bila T Cj maka = ( )

Artinya kita mendekatkan bobot neurong pemenang WJ ke input. 7. Sesuaikan pesat belajar (alpha) untuk masing-masing epoh pelatihan. 8. Ada beberapa stopping condition yang dapat kita gunakan yakni memenuhi jumlah iterasi maksimum atau nilai pesat belajar (alpha) sudah cukup kecil sesuai dengan batas yang kita berikan. Pada artikel ini, saya akan menggunakan data spektrum ECG hasil pengolahan menggunakan wavelet. Data ini saya dapat dari seorang rekan dimana kita bersama-sama mencoba membuat sistem untuk mengklasifikasikan jenis penyakit berdasarkan spektrum isyarat dari ECG. Bahwasanya beberapa penelitian yang kita pelajari, klasifikasi ini banyak melibatkan nilai statistik sebagai ciri dalam klasifikasi. Sementara itu, kami mencoba untuk mempelajari kemungkinan untuk menggunakan spektrum hasil dekomposisi dari wavelet sebagai cirinya. Data yang digunakan disini tidak diberikan kepada anda, tapi anda bisa mencari atau menggunakan data lain. Karena kami hanya mencoba untuk mencari tahu jenis klasifikasi apa yang bisa digunakan untuk permasalahan ini. Dalam hal ini kami menggunakan dua jenis klasifikasi ter awasi yakni LVQ dan BP. Khusus untuk BP akan dijelaskan pada artikel lainnya. Program yang kita buat ada 3 m.file yakni: - Bacadata.m - LVQlatih.m - LVQuji.m LVQlatih.m merupakan sebuah program fungsi untuk membuat jaringan LVQ dan menghasilkan bobot akhir yang akan kita gunakan pada pengujian. Jadi program ini berjalan ketika dipanggil oleh bacadata.m. Sementara itu program LVQuji.m merupakan program yang berdiri sendiri sebagai tempat kita menguji jaringan dengan menggunakan input yang lain, dalam hal ini vektor input yang benar-benar berbeda dari pola pelatihan. Tapi perlu diingat bahwa asumsi awal input baru tersebut memiliki pola yang mirip atau sama dengan salah satu pola pada pelatihan. Bacadata.m
clear all; close all; clc; %% Memanggil semua vektor input jum_data=4; for k = 1:jum_data load(sprintf('A%d.mat',k)); X1(k,:) = tipe1'; load(sprintf('B%d.mat',k));
[{EE UGM, Indonesia} Budi S (bs_jogja@yahoo.com )and Jans H (jans.hendry@gmail.com)]

[NEURAL NETWORK]
X2(k,:) = tipe1'; load(sprintf('C%d.mat',k)); X3(k,:) = tipe1'; load(sprintf('D%d.mat',k)); X4(k,:) = tipe1'; end P=[X1;X2;X3;X4]; T=[1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4]; w=LVQlatih(P,T); disp('Bobot Akhir Jaringan'); disp(w);

November 17, 2011

LVQlatih.m

function w=LVQlatih(P,T) Platih=[P(3:4,:);P(7:8,:);P(11:12,:);P(15:16,:)]; Tlatih=[T(:,3:4) T(:,7:8) T(:,11:12) T(:,15:16)]; w=[P(1,:);P(5,:);P(9,:);P(13,:)]; [x,y]=size(Platih); z=size(w,1); % nilai awal alpha = 0.01; decAlpha = 0.1; minAlpha = 0.001; maksEpoh = 200; % algoritma LVQ epoh=1; while (epoh<=maksEpoh) || (alpha>=minAlpha) for ii=1:x for jj=1:z J(jj)=0; for k=1:y J(jj)=J(jj)+(w(jj,k)-Platih(ii,k))^2; end; J(jj)=sqrt(J(jj)); end; [Jmin idx] = min(J); if idx==Tlatih(ii), w(idx,:)=w(idx,:)+alpha*(Platih(ii,:)-w(idx,:));
[{EE UGM, Indonesia} Budi S (bs_jogja@yahoo.com )and Jans H (jans.hendry@gmail.com)]

[NEURAL NETWORK]
else w(idx,:)=w(idx,:)-alpha*(Platih(ii,:)-w(idx,:)); end; end; alpha=alpha-decAlpha*alpha; epoh=epoh+1;

November 17, 2011

end; disp(strcat('Stop pada Epoh ke- ',num2str(epoh-1),' dgn alpha = ',num2str(alpha))); bbtakhr=w; save lvq.mat P T bbtakhr

LVQuji
%Pengujian dengan data testing kiri clear all; close all; clc; load lvq.mat % X=P(2,:); % X=P(6,:); % X=P(10,:); X=P(11,:); w=bbtakhr; [x,y]=size(X); z=size(w,1); Diag=zeros(x,1); J=zeros(z,1); for k=1:x for ii=1:z J(ii)=0; for jj=1:y, J(ii)=J(ii)+(w(ii,jj)-X(k,jj))^2; end; J(ii)=sqrt(J(ii)); end [Jmin idx] = min(J); Diag(k,:) = idx; end Diagnosis=Diag; disp('Diagnosis:'); if Diagnosis==1 disp('Kondisi Jantung Normal Sinus') elseif Diagnosis==2
[{EE UGM, Indonesia} Budi S (bs_jogja@yahoo.com )and Jans H (jans.hendry@gmail.com)]

[NEURAL NETWORK]
disp('Kondisi Jantung Malignant Ventricular Ectopy') elseif Diagnosis==3 disp('Kondisi Jantung Supraventricular Arrhytmia') elseif Diagnosis==4 disp('Kondisi Jantung Polysomnographic') end

November 17, 2011

Hasil dari program Ketika kita menjalankan program bacadata.m maka akan dihasilkan nilai bobot akhir dari jaringan:

Lalu nilai-nilai bobot tersebut disimpan dalam file *.mat dengan nama LVQ.mat. Begitu juga dengan variabel-variabel lainnya, sehingga nantinya akan mudah untuk dipanggil lagi demi kepentingan pengujian jaringan terhadap input yang benar-benar baru. Ketika LVQuji.m dijalankan untuk input-input yang berbeda, dihasilkan:
X=P(2,:);

% X=P(6,:);

[{EE UGM, Indonesia} Budi S (bs_jogja@yahoo.com )and Jans H (jans.hendry@gmail.com)]

[NEURAL NETWORK]
% X=P(10,:);

November 17, 2011

X=P(11,:);

Berdasarkan pengamatan kami, bahwa untuk input vektor 1-3, jaringan dapat melakukan klasifikasi dengan sangat baik. Namun untuk input yang ke 4 jaringan gagal melakukan klasifikasi. Dugaan awal kami adalah data input memang keliru, bisa saja ketika ektraksi ciri menggunakan wavelet atau memang data mentah yang kami dapat tidak valid untuk kasus yang kami tentukan. Untuk itu kami masih mencari data baru sebagai pembanding, dan tentu belum bisa diberikan keputusan bahwa jaringan LVQ tidak kompeten melakukan tugasnya dalam klasifikasi. Tapi jaringan BP telah kami rancang dan di uji cobakan dengan input yang sama. Artikel selanjutnya akan menjelaskan apa yang mungkin keliru dalam penelitian ini.

@ thanks Budi Jans


Dengan mencantumkan nama kami sebagai bentuk originalitas saja, sudah cukup termasuk untuk artikel saya yang lain... thanks

[{EE UGM, Indonesia} Budi S (bs_jogja@yahoo.com )and Jans H (jans.hendry@gmail.com)]