LAMPIRAN A
KLUSTER SOM DAN VALIDASI RMSSTD
A. Algoritma SOM
Berikut ini merupakan source code algoritma SOM kluster 3 – kluster 6:
B. Perhitungan Kluster
Berikut ini merupakan source code untuk kluster B, yang hasilnya memiliki 3 kluster
Source Code Kluster 3 SOM % inisialisasi
data ht=0.6;
% melakukan random weight
weight1=[0.1875 0.7690 0.3960 0.4600]; weight2=[0.2729 0.4517 0.6099 0.7421]; weight3=[0.0594 0.1253 0.1302 0.4574]; for i=1:4000; a=(weight1(1,1)-data(i,1))^2+(weight1(1,2)-data(i,2))^2+(weight1(1,3)-data(i,3))^2; b=(weight2(1,1)-data(i,1))^2+(weight2(1,2)-data(i,2))^2+(weight2(1,3)-data(i,3))^2; c=(weight3(1,1)-data(i,1))^2+(weight3(1,2)-data(i,2))^2+(weight3(1,3)-data(i,3))^2; if a<b && a<c
z=data(i,:)-weight1(1,:); weight1=weight1(1,:)+(ht*z); weight2=weight2(1,:); weight3=weight3(1,:); i
C. Kluster C else if b<c && b<a
z=data(i,:)-weight2(1,:); weight2=weight2(1,:)+(ht*z); weight1=weight1(1,:); weight3=weight3(1,:); i else z=data(i,:)-weight3(1,:); weight3=weight3(1,:)+(ht*z); weight1=weight1(1,:); weight2=weight2(1,:); i end; end; end;
disp('update weight berhasil') weight1 weight2 weight3 for j=1:4000; a=(weight1(1,1)-data(j,1))^2+(weight1(1,2)-data(j,2))^2+(weight1(1,3)-data(j,3))^2; b=(weight2(1,1)-data(j,1))^2+(weight2(1,2)-data(j,2))^2+(weight2(1,3)-data(j,3))^2; c=(weight3(1,1)-data(j,1))^2+(weight3(1,2)-data(j,2))^2+(weight3(1,3)-data(j,3))^2;
if a<b && a<c disp ('1')
else if b<c && b<a disp ('2') else disp ('3') end; end;
Berikut ini merupakan source code kluster c, yang memiliki hasil 4 kluster
Source Code Kluster 4 % inisialisasi
Data ht=0.6;
%melakukan random weight
weight1=[0.1875 0.7690 0.3960 0.4600]; weight2=[0.2729 0.4517 0.6099 0.7421]; weight3=[0.0594 0.1253 0.1302 0.4574]; weight4=[0.0924 0.7229 0.5312 0.4327]; for i=1:4000; a=(weight1(1,1)-Data(i,1))^2+(weight1(1,2)- Data(i,2))^2+(weight1(1,3)-Data(i,3))^2+(weight1(1,4)-Data(i,4))^2; b=(weight2(1,1)-Data(i,1))^2+(weight2(1,2)- Data(i,2))^2+(weight2(1,3)-Data(i,3))^2+(weight1(1,4)-Data(i,4))^2; c=(weight3(1,1)-Data(i,1))^2+(weight3(1,2)- Data(i,2))^2+(weight3(1,3)-Data(i,3))^2+(weight1(1,4)-Data(i,4))^2; d=(weight4(1,1)-Data(i,1))^2+(weight4(1,2)- Data(i,2))^2+(weight4(1,3)-Data(i,3))^2+(weight1(1,4)-Data(i,4))^2;
else if b<c && b<d && b<a z=Data(i,:)-weight2(1,:); weight2=weight2(1,:)+(ht*z); weight1=weight1(1,:); weight3=weight3(1,:); weight4=weight4(1,:); i
else if c<d && c<a && c<b z=Data(i,:)-weight3(1,:); weight3=weight3(1,:)+(ht*z); weight1=weight1(1,:); weight2=weight2(1,:); weight4=weight4(1,:); i else z=Data(i,:)-weight4(1,:); weight4=weight4(1,:)+(ht*z); weight1=weight1(1,:); weight2=weight2(1,:); weight3=weight3(1,:); i end; end; end; end;
weight1 weight2 weight3 weight4 for j=1:4000; a=(weight1(1,1)-Data(j,1))^2+(weight1(1,2)- Data(j,2))^2+(weight1(1,3)-Data(j,3))^2+(weight1(1,4)-Data(j,4))^2; b=(weight2(1,1)-Data(j,1))^2+(weight2(1,2)- Data(j,2))^2+(weight2(1,3)-Data(j,3))^2+(weight1(1,4)-Data(j,4))^2; c=(weight3(1,1)-Data(j,1))^2+(weight3(1,2)- Data(j,2))^2+(weight3(1,3)-Data(j,3))^2+(weight1(1,4)-Data(j,4))^2; d=(weight4(1,1)-Data(j,1))^2+(weight4(1,2)- Data(j,2))^2+(weight4(1,3)-Data(j,3))^2+(weight1(1,4)-Data(j,4))^2;
if a<b && a<c && a<d disp ('1')
else if b<c && b<d && b<a disp ('2')
else if c<d && c<a && c<b disp ('3') else disp ('4') end; end; end;
D. Kluster D
Berikut ini merupakan source code kluster d, yang meimliki hasil 5 kluster
Source Code Kluster d data
ht=0.6;
%melakukan random weight
weight1=[0.1875 0.7690 0.3960 0.4600]; weight2=[0.2729 0.4517 0.6099 0.7421]; weight3=[0.0594 0.1253 0.1302 0.4574]; weight4=[0.0924 0.7229 0.5312 0.8327]; weight5=[0.1088 0.0986 0.1420 0.7521]; for i=1:4000; a=(weight1(1,1)-data(i,1))^2+(weight1(1,2)- data(i,2))^2+(weight1(1,2)-data(i,2))^2+(weight1(1,2)-data(i,2))^2; b=(weight2(1,1)-data(i,1))^2+(weight2(1,2)- data(i,2))^2+(weight1(1,2)-data(i,2))^2+(weight1(1,2)-data(i,2))^2; c=(weight3(1,1)-data(i,1))^2+(weight3(1,2)- data(i,2))^2+(weight1(1,2)-data(i,2))^2+(weight1(1,2)-data(i,2))^2; d=(weight4(1,1)-data(i,1))^2+(weight4(1,2)- data(i,2))^2+(weight1(1,2)-data(i,2))^2+(weight1(1,2)-data(i,2))^2; e=(weight5(1,1)-data(i,1))^2+(weight5(1,2)- data(i,2))^2+(weight1(1,2)-data(i,2))^2+(weight1(1,2)-data(i,2))^2; data_temp = [a b c d e];
if min(data_temp)==a; z=data(i,:)-weight1(1,:); weight1=weight1(1,:)+(ht*z); weight2=weight2(1,:); weight3=weight3(1,:); weight4=weight4(1,:); weight5=weight5(1,:); i else if min(data_temp)==b; z=data(i,:)-weight2(1,:); weight2=weight2(1,:)+(ht*z); weight1=weight1(1,:); weight3=weight3(1,:); weight4=weight4(1,:); weight5=weight5(1,:); i else if min(data_temp)==c; z=data(i,:)-weight3(1,:); weight3=weight3(1,:)+(ht*z); weight1=weight1(1,:); weight2=weight2(1,:); weight4=weight4(1,:); weight5=weight5(1,:); i else if min(data_temp)==d; z=data(i,:)-weight4(1,:); weight4=weight4(1,:)+(ht*z); weight5=weight5(1,:); weight1=weight1(1,:); weight2=weight2(1,:); weight3=weight3(1,:); i else if min(data_temp)==e; z=data(i,:)-weight5(1,:); weight5=weight5(1,:)+(ht*z); weight4=weight4(1,:); weight1=weight1(1,:); weight2=weight2(1,:); weight3=weight3(1,:); i
end end end end end end
disp('update weight berhasil') weight1 weight2 weight3 weight4 weight5 for j=1:4000; a=(weight1(1,1)-data(j,1))^2+(weight1(1,2)- data(j,2))^2+(weight1(1,3)-data(j,3))^2+(weight1(1,4)-data(j,4))^2; b=(weight2(1,1)-data(j,1))^2+(weight2(1,2)- data(j,2))^2+(weight1(1,3)-data(j,3))^2+(weight1(1,4)-data(j,4))^2; c=(weight3(1,1)-data(j,1))^2+(weight3(1,2)- data(j,2))^2+(weight1(1,3)-data(j,3))^2+(weight1(1,4)-data(j,4))^2; d=(weight4(1,1)-data(j,1))^2+(weight4(1,2)- data(j,2))^2+(weight1(1,3)-data(j,3))^2+(weight1(1,4)-data(j,4))^2; e=(weight5(1,1)-data(j,1))^2+(weight5(1,2)- data(j,2))^2+(weight1(1,3)-data(j,3))^2+(weight1(1,4)-data(j,4))^2;
if (a<b && a<c && a<d && a<e) disp ('1')
else if (b<c && b<d && b<e && b<a) disp ('2')
else if (c<d && c<e && c<a && c<b) disp ('3')
else if (d<e && d<a && d<b && d<c) disp ('4') else disp ('5') end; end; end; end; end;
E. Kluster E Source Code Kluster 6
% inisialisasi data
ht=0.6;
% melakukan random weight
weight1=[0.1875 0.7690 0.3960 0.4600]; weight2=[0.2729 0.4517 0.6099 0.7421]; weight3=[0.0594 0.1253 0.1302 0.4574]; weight4=[0.0924 0.7229 0.5312 0.8327]; weight5=[0.1088 0.0986 0.1420 0.7521]; weight6=[0.1683 0.2176 0.2510 0.8472]; for i=1:4000; a=(weight1(1,1)-data(i,1))^2+(weight1(1,2)- data(i,2))^2+(weight1(1,3)-data(i,3))^2+(weight1(1,4)-data(i,4))^2; b=(weight2(1,1)-data(i,1))^2+(weight2(1,2)- data(i,2))^2+(weight2(1,3)-data(i,3))^2+(weight1(1,4)-data(i,4))^2; c=(weight3(1,1)-data(i,1))^2+(weight3(1,2)- data(i,2))^2+(weight3(1,3)-data(i,3))^2+(weight1(1,4)-data(i,4))^2; d=(weight4(1,1)-data(i,1))^2+(weight4(1,2)- data(i,2))^2+(weight4(1,3)-data(i,3))^2+(weight1(1,4)-data(i,4))^2; e=(weight5(1,1)-data(i,1))^2+(weight5(1,2)- data(i,2))^2+(weight5(1,3)-data(i,3))^2+(weight1(1,4)-data(i,4))^2; f=(weight6(1,1)-data(i,1))^2+(weight6(1,2)- data(i,2))^2+(weight6(1,3)-data(i,3))^2+(weight1(1,4)-data(i,4))^2; data_temp = [a b c d e f];
if min(data_temp)==a; z=data(i,:)-weight1(1,:); weight1=weight1(1,:)+(ht*z); weight2=weight2(1,:); weight3=weight3(1,:); weight4=weight4(1,:); weight5=weight5(1,:); weight6=weight6(1,:); i else if min(data_temp)==b; z=data(i,:)-weight2(1,:); weight2=weight2(1,:)+(ht*z); weight1=weight1(1,:); weight3=weight3(1,:); weight4=weight4(1,:); weight5=weight5(1,:); weight6=weight6(1,:); i else if min(data_temp)==c; z=data(i,:)-weight3(1,:); weight3=weight3(1,:)+(ht*z); weight1=weight1(1,:); weight2=weight2(1,:); weight4=weight4(1,:); weight5=weight5(1,:); weight6=weight6(1,:); i else if min(data_temp)==d; z=data(i,:)-weight4(1,:); weight4=weight4(1,:)+(ht*z); weight5=weight5(1,:); weight6=weight6(1,:); weight1=weight1(1,:); weight2=weight2(1,:); weight3=weight3(1,:); i
else if min(data_temp)==e; z=data(i,:)-weight5(1,:); weight5=weight5(1,:)+(ht*z); weight6=weight6(1,:); weight4=weight4(1,:); weight1=weight1(1,:); weight2=weight2(1,:); weight3=weight3(1,:); i else if min(data_temp)==f; z=data(i,:)-weight6(1,:); weight6=weight6(1,:)+(ht*z); weight5=weight5(1,:); weight4=weight4(1,:); weight1=weight1(1,:); weight2=weight2(1,:); weight3=weight3(1,:); i end; end; end; end; end; end; end;
weight1 weight2 weight3 weight4 weight5 weight6 for j=1:4000; a=(weight1(1,1)-data(j,1))^2+(weight1(1,2)-data(j,2))^2+(weight1(1,3)-data(j,3))^2+(weight1(1,4)-data(j,4))^2; b=(weight2(1,1)-data(j,1))^2+(weight2(1,2)-data(j,2))^2+(weight2(1,3)-data(j,3))^2+(weight2(1,4)-data(j,4))^2; c=(weight3(1,1)-data(j,1))^2+(weight3(1,2)-data(j,2))^2+(weight3(1,3)-data(j,3))^2+(weight3(1,4)-data(j,4))^2; d=(weight4(1,1)-data(j,1))^2+(weight4(1,2)-data(j,2))^2+(weight4(1,3)-data(j,3))^2+(weight4(1,4)-data(j,4))^2; e=(weight5(1,1)-data(j,1))^2+(weight5(1,2)-data(j,2))^2+(weight5(1,3)-data(j,3))^2+(weight5(1,4)-data(j,4))^2; f=(weight6(1,1)-data(j,1))^2+(weight6(1,2)-data(j,2))^2+(weight6(1,3)-data(j,3))^2+(weight6(1,4)-data(j,4))^2; if a<b && a<c && a<d && a<e && a<f
disp ('1')
else if b<c && b<d && b<e && b<f && b<a disp ('2')
else if c<d && c<e && c<f && c<a && c<b disp ('3')
else if d<e && d<f && d<a && d<b && d<c disp ('4')
else if e<f && e<a && e<b && e<c && e<d disp ('5') else disp ('6') end; end; end; end; end;
Hasil Algoritma SOM : Kluster
2 Kluster 3 Kluster 4 Kluster 5 Kluster 6 Jumlah Kluster 2 1823 1801 1801 0 0 Jumlah Kluster 3 2177 1699 1699 1699 1699 Jumlah Kluster 4 500 500 1801 1801 Jumlah Kluster 5 0 0 0 Jumlah Kluster 6 500 500 F. Validasi RMSSTD Perhitungan validasi RMSSTD:
Tabel Perhitungan RMSSTD Kluster A Rata2 (Kluster 1) 1.0272254 0.377964 1.026148 0.812861 Rata2 (kluster 2) -0.860188 -0.3165 -0.85929 -0.68068 jumlah(xi-x) pd kluster 1 2662.426 jumlah(xi-x) pd kluster 2 3584.401
Tabel Perhitungan RMSSTD Kluster B Rata2 (kluster 1) -0.82968 0.377964 -0.85929 -0.59349 Rata2 (kluster 2) 1.16275 0.377964 1.163755 0.881045 Rata2 (kluster 3) -0.96251 -2.64575 -0.85929 -0.85606 jumlah(xi-x) pd kluster 1 65.90982833 jumlah(xi-x) pd kluster 2 1614.10295 jumlah(xi-x) pd kluster 3 0.379604129 nij pada kluster 1
dimensi ... 1801 1801 1801 1801 7204
nij pada kluster 2
dimensi ... 1699 1699 1699 1699 6796
nij pada kluster 3
dimensi ... 500 500 500 500 2000 RMSSTD 0.3241053 nij pada kluster 1 dimensi ... 1823 1823 1823 1823 7292 nij pada kluster 2 dimensi ... 2177 2177 2177 2177 8708 RMSSTD 0.6248804
Tabel Perhitungan RMSSTD Kluster C Rata2 (kluster1 ) -0.82968 0.377964 -0.85929 -0.59349 Rata2 (kluster 2) 1.16275 0.377964 1.163755 0.881045 Rata2 (kluster 3) -0.96251 -2.64575 -0.85929 -0.85606 Rata2 (kluster 4) 0 0 0 0 jumlah(xi-x) pd kluster 1 65.90982833 jumlah(xi-x) pd kluster 2 1614.10295 jumlah(xi-x) pd kluster 3 0.379604129 jumlah(xi-x) pd kluster 4 nij pada kluster 1 dimensi ...
1801 1801 1801 1801 7204
nij pada kluster 2 dimensi ...
1699 1699 1699 1699 6796
nij pada kluster 3 dimensi ...
500 500 500 500 2000
nij pada kluster 4 dimensi ...
0 0 0 0 0
Tabel Perhitungan RMSSTD Kluster D Rata2 (kluster 1) 0 0 0 0 Rata2 (kluster 2) 1.16275 0.377964 1.163755 0.88104541 Rata2 (kluster 3) -0.82968 0.377964 -0.85929 -0.5934863 Rata2 (kluster 4) 0 0 0 Rata2 (kluster 5) -0.96251 -2.64575 -0.85929 -0.8560592 jumlah(xi-x) pd kluster 1 0 jumlah(xi-x) pd kluster 2 1614.10295 jumlah(xi-x) pd kluster 3 65.90982833 jumlah(xi-x) pd kluster 4 0 jumlah(xi-x) pd kluster 5 0.379604129
nij pada kluster 1 dimensi ... 0 0 0 0
nij pada kluster 2 dimensi ... 1699 1699 1699 1699 6796 nij pada kluster 3 dimensi ... 1801 1801 1801 1801 7204
nij pada kluster 4 dimensi ... 0 0 0 0 0
nij pada kluster 5 dimensi ... 500 500 500 500 2000
Tabel Perhitungan RMSSTD Kluster E Rata2 (kluster 1) 0 0 0 0 Rata2 (kluster 2) 1.16275 0.377964 1.163755 0.881045 Rata2 (kluster 3) -0.82968 0.377964 -0.85929 -0.59349 Rata2 (kluster 4) 0 0 0 Rata2 (kluster 5) -0.96251 -2.64575 -0.85929 -0.85606 Rata2 (kluster 6) 0 0 0 0 jumlah(xi-x) pd kluster 1 0 jumlah(xi-x) pd kluster 2 1614.035 jumlah(xi-x) pd kluster 3 65.89382 jumlah(xi-x) pd kluster 4 0 jumlah(xi-x) pd kluster 5 0.378869 jumlah(xi-x) pd kluster 6 0
nij pada kluster 1 dimensi ... 0 0 0 0
nij pada kluster 2 dimensi ... 1699 1699 1699 1699 6796 nij pada kluster 3 dimensi ... 1801 1801 1801 1801 7204
nij pada kluster 4 dimensi ... 0 0 0 0 0
nij pada kluster 5 dimensi ... 499 499 499 499 1996
nij pada kluster 6 dimensi ... 0 0 0 0 0
Hasil Validasi RMSSTD A- 1 Tabel Hasil RMSSTD RMSSTD Nilai Kluster a 0.6248804 Kluster b 0.3241053 Kluster c 0.3241154 Kluster d 0.3241255 Kluster e 0.324168 Grafik Hasil RMSSTD A- 2 Grafik Hasil RMSSTD
LAMPIRAN B
Kluster Kmeans beserta Validasi DBI A. Source Code Algoritma Kombinasi SOM dan Kmeans Ketik pada Matlab
Hasil Dari Algoritma Kmeans
Hasil dari Algoritma K-means [klaster, ctrs]=kmeans(data,3)
Hasil Algoritma Kmeans
Tabel Perhitungan algoritma K-means
Kluster 1 Kluster 2 Kluster 3 Hasil Kluster 1 500 Hasil Kluster 2 1801 Hasil Kluster 3 1699
B. Hasil Validasi Davies Bouldin Index Tabel Hasil Validasi DBI
Klaster Nilai DBI
SOM 0.26902