Anda di halaman 1dari 13

Algoritma K-Medoids

Clustering
Entri ini telah di terbitkan di Algortima Pengelompokan / Klasifikasi Data dan telah ditandai algoritmaclusteringk-
medoidsmatlabpengelompokan on 23 November 2015 sebesar pip

Algoritma K-Medoids Clustering adalah salah satu algoritma yang digunakan


untuk klasifikasi atau pengelompokan data. Contoh yang dibahas kali ini adalah
mengenai penentuan jurusan siswa berdasarkan nilai skor siswa.
Algoritma ini memiliki kemiripan dengan Algoritma K-Means Clustering, tetapi
terdapat beberapa perbedaan utama, dimana apabila pada Algoritma K-Means
Clustering, nilai tengah dihitung dengan rata-rata (mean) dan perhitungan jarak
dihitung dari data pada masing-masing mean, sedangkan pada algoritma ini, data
akan digunakan sebagai nilai tengah / disebut dengan medoid, dan perhitungan
jarak dihitung dari jarak antar masing-masing data.

Diasumsikan ada 20 orang siswa, yaitu siswa A sampai dengan T


Masing-masing siswa memiliki rata-rata nilai IPA, IPS, dan Bahasa yang berbeda-
beda
Maka tentukan semua siswa tersebut akan masuk ke dalam jurusan apa
berdasarkan nilai skor yang dimiliki
Diasumsikan data awal nilai siswa adalah sebagai berikut

Nama Siswa Nilai IPA Nilai IPS Nilai Bahasa

Siswa A 50 60 70

Siswa B 65 80 73

Siswa C 72 70 65

Siswa D 83 65 80
Nama Siswa Nilai IPA Nilai IPS Nilai Bahasa

Siswa E 40 82 73

Siswa F 95 71 85

Siswa G 60 74 96

Siswa H 75 75 92

Siswa I 83 55 70

Siswa J 91 60 65

Siswa K 92 91 55

Siswa L 76 80 59

Siswa M 75 65 74

Siswa N 74 76 89

Siswa O 63 79 69

Siswa P 58 93 76

Siswa Q 82 50 80

Siswa R 81 65 88

Siswa S 76 74 70
Nama Siswa Nilai IPA Nilai IPS Nilai Bahasa

Siswa T 77 71 55

Langkah pertama adalah memasukkan data-data yang digunakan.


Contoh data awal adalah sebagai berikut:

1 data=[50, 60, 70; ...

2 65, 80, 73; ...

3 72, 70, 65; ...

4 83, 65, 80; ...

5 40, 82, 73; ...

6 95, 71, 85; ...

7 60, 74, 96; ...

8 75, 75, 92; ...

9 83, 55, 70; ...

1 91, 60, 65; ...

0 92, 91, 55; ...

1 76, 80, 59; ...

1 75, 65, 74; ...

1 74, 76, 89; ...

2 63, 79, 69; ...

1 58, 93, 76; ...

3 82, 50, 80; ...

1 81, 65, 88; ...

4 76, 74, 70; ...

1 77, 71, 55]';

5
1

Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa


konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan Jumlah Cluster
Jumlah Cluster adalah jumlah dari pengelompokan data yang ingin dilakukan
Jumlah Cluster nilainya harus diantara 2 dan jumlah data
Diasumsikan dalam kasus ini, jumlah pengelompokan data ada 3 kelompok, yaitu
jurusan IPA, jurusan IPS, jurusan Bahasa

1 jumlahCluster = 3;

Langkah-langkah penggunaan algoritma ini adalah


* Lakukan proses pengelompokan dengan metode K-Medoids Clustering
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin
1 – 6)

1 daftarCluster = kMedoids(data,jumlahCluster);
Memasuki perhitungan utama pada fungsi kMedoids
1. Hitung jumlah data pada matriks data

1 jumlahData = size(data,2);
2. Hitung matriks v
Lakukan perkalian matriks data dengan dirinya sendiri
dan jumlahkah nilai yang terdapat dalam masing-masing dimensi untuk setiap
data

1 v = dot(data,data,1);
3. Hitung matriks jarak, yang disimbolkan dengan D
Lakukan penjumlahan nilai baris matriks v dengan nilai kolom dari transpos
matriks v
Kemudian kurangkan dengan 2 kali dari matriks data dikali dengan transpos
matriks data

1 D = bsxfun(@plus,v,v')-2*(data'*data);

3 for i=1:jumlahData,

4 D(i,i) = 0;

5 end
4. Tentukan medoid awal mula, yang diisi dengan nilai acak dari angka 1 sampai
jumlah data, sebanyak jumlah cluster
Ambil semua nilai dari masing-masing baris data pada nilai acak tersebut
Kemudian bandingkan nilai minimal dari masing-masing data untuk membentuk
daftar cluster mula-mula
1 [~, daftarCluster] = min(D(randsample(jumlahData,jumlahCluster),:),[],1);
5. lakukan perhitungan selama masih ada data yang berpindah cluster (poin 5a
-5c)

1 daftarClusterTerakhir = 0;

2 while any(daftarCluster ~= daftarClusterTerakhir)

3 ...
5a. Ambil daftar cluster lama sebagai daftar cluster terakhir

1 daftarClusterTerakhir = daftarCluster;
5b. Tentukan data acak selain medoid lama untuk menggantikan nilai medoid
lama
Lakukan pencatatan indeks cluster yang lama
Lakukan perkalian indeks tersebut dengan matriks D
Kemudian cari indeks data yang nilai minimal pada masing-masing cluster

1 [~, idxD] = min(D*sparse(1:jumlahData,daftarCluster,1,jumlahData,jumlahCluster,jumlahData),[],1);


5c. Ambil semua nilai dari masing-masing baris data pada indeks yang telah
ditentukan sebelumnya
Kemudian hitung nilai minimal dari matriks indeks D untuk mendapatkan nilai
minimal dan daftar cluster yang baru
1 [nilaiMinimal, daftarCluster] = min(D(idxD,:),[],1);
6. Jika diperlukan, hitung penjumlahan nilai minimal yang didapatkan pada
matriks D akhir

1 nilaiEnergi = sum(nilaiMinimal);
* Tampilkan semua data yang sudah dimasukan ke dalam cluster
Hitung nilai skornya untuk masing-masing kriteria dalam cluster tersebut
Ambil nilai skor tertinggi sebagai jawaban jurusan yang seharusnya diambil

1 data = data';

2 jumlahCluster = size(daftarCentroid,2);

3 st = zeros(1,size(data,2),'uint8');

5 for k = 1:jumlahCluster

6 if cellfun('length',daftarDataPerCluster(k)) > 1,

7 skor = zeros(1,size(data,2),'double');

8 for i = 1:size(data,1)

9 s = '';

1 if daftarCluster(i) == k,

0 s = strcat([s, 'Siswa ', char(i + 64), ' ']);

1 for j = 1:size(data,2)

1 s = strcat([s, ' ', num2str(data(i,j)), ' ']);


1

2 if st(j) == 0, skor(j) = skor(j) + data(i,j); end;

1 end

3 disp(s);

1 end;

4 end;

5 maks = -inf;

1 idxmaks = -1;

6 for i = 1:size(data,2)

1 if maks < skor(i),

7 maks = skor(i);

1 idxmaks = i;

8 end

1 end

2 disp(['Kelompok ini memiliki skor terbanyak pada kolom ke ' , num2str(idxmaks + 1) , ...

0 ' , -> kelompok data ' , char(atribut(idxmaks))]);

2 disp('------------------------------');

2 st(idxmaks) = 1;

2 end;

2 end;

2
7

Hasil akhir adalah:

1 Algoritma K-Medoids Clustering

2 Contoh: Penentuan jurusan siswa berdasarkan nilai skor siswa

3 Diasumsikan ada 20 orang siswa, yaitu siswa A sampai dengan T

4 Masing-masing siswa memiliki rata-rata nilai IPA, IPS, dan Bahasa yang berbeda-beda

5 Maka tentukan semua siswa tersebut akan masuk ke dalam jurusan apa berdasarkan nilai skor yang

6 dimiliki
7 Diasumsikan data awal nilai siswa adalah sebagai berikut

8 Nama Siswa, Nilai IPA, Nilai IPS, Nilai Bahasa

9 Siswa A , 50, 60, 70

1 Siswa B , 65, 80, 73

0 Siswa C , 72, 70, 65

1 Siswa D , 83, 65, 80

1 Siswa E , 40, 82, 73

1 Siswa F , 95, 71, 85

2 Siswa G , 60, 74, 96

1 Siswa H , 75, 75, 92

3 Siswa I , 83, 55, 70

1 Siswa J , 91, 60, 65

4 Siswa K , 92, 91, 55

1 Siswa L , 76, 80, 59

5 Siswa M , 75, 65, 74

1 Siswa N , 74, 76, 89

6 Siswa O , 63, 79, 69

1 Siswa P , 58, 93, 76

7 Siswa Q , 82, 50, 80

1 Siswa R , 81, 65, 88

8 Siswa S , 76, 74, 70

1 Siswa T , 77, 71, 55

0 Jumlah Cluster = 3

2 Data yang sudah dikelompokkan:

2 ------------------------------

2 Siswa C 72 70 65

3 Siswa J 91 60 65
2 Siswa K 92 91 55

4 Siswa L 76 80 59

2 Siswa T 77 71 55

5 Kelompok ini memiliki skor terbanyak pada kolom ke 1 , -> kelompok data IPA

2 ------------------------------

6 Siswa D 83 65 80

2 Siswa F 95 71 85

7 Siswa G 60 74 96

2 Siswa H 75 75 92

8 Siswa I 83 55 70

2 Siswa M 75 65 74

9 Siswa N 74 76 89

3 Siswa Q 82 50 80

0 Siswa R 81 65 88

3 Kelompok ini memiliki skor terbanyak pada kolom ke 3 , -> kelompok data Bahasa

1 ------------------------------

3 Siswa A 50 60 70

2 Siswa B 65 80 73

3 Siswa E 40 82 73

3 Siswa O 63 79 69

3 Siswa P 58 93 76

4 Siswa S 76 74 70

3 Kelompok ini memiliki skor terbanyak pada kolom ke 2 , -> kelompok data IPS

5 ------------------------------

3
9

4
5