Escolar Documentos
Profissional Documentos
Cultura Documentos
ANALISISALGORITMAKMEANSCLUSTERING
DENGANMENGGUNAKANOPENMP
(StudiKasus:DataSurveiSosialEkonomiNasionalBPS)
DisusunDalamRangkamemenuhiTugasAkhir
MataKuliahEL6210KomputasiParalel
ProgramStudiPascaSarjanaInformatika
SekolahTeknikElektrodanInformasi
InstitutTeknologiBandung
2013
DAFTARPUSTAKA
DAFTARPUSTAKA......................................................................................................................................i
DAFTARTABEL..........................................................................................................................................ii
DAFTARGAMBAR....................................................................................................................................iii
1.
PENDAHULUAN................................................................................................................................1
1.1. KMeansClustering...........................................................................................................................1
1.2. AlgoritmaKMeansClustering..........................................................................................................1
1.3. CaraKerjaAlgoritmaKMeanClustering:.........................................................................................3
2.
STUDIKASUSKMEANSCLUSTERING...............................................................................................4
2.1. StudiKasus.......................................................................................................................................4
2.2. TahapanIterasiKMeansClustering.................................................................................................4
3. IMPLEMENTASIALGORITMAKMEANSCLUSTERING.......................................................................8
3.1. SpesifikasidanTools.........................................................................................................................8
3.2. SerialProgramming..........................................................................................................................9
3.3. ParalelProgramming......................................................................................................................12
4.
ANALISISPROGRAMPARALELKMEANSCLUSTERING...................................................................15
4.1. WaktuEksekusiProgramSerial......................................................................................................15
4.2. WaktuEksekusiProgramParalel....................................................................................................16
4.3. SebaranObjekDataBerdasarkanCluster.......................................................................................18
5.
KESIMPULAN..................................................................................................................................21
DAFTARPUSTAKA...................................................................................................................................22
LAMPIRAN..............................................................................................................................................23
DAFTARTABEL
Tabel1.StrukturObjekData....................................................................................................................4
Tabel2.HasilPengelompokkanGroupObjekData..................................................................................8
Tabel3.WaktuEksekusiProgramSerial................................................................................................15
Tabel4.WaktuEksekusiProgramParalel..............................................................................................16
Tabel5.Selisihrataratawaktueksekusiantaraprogramparaleldenganserial...................................18
ii
DAFTARGAMBAR
Gambar1.FlowchartKMeansClustering................................................................................................2
Gambar2.Skema3matrixdenganvariabelvariabelnya........................................................................3
Gambar3.SebaranobjekdatakecentroidawalpadaIterasi0...............................................................4
Gambar4.SebaranobjekdatakecentroidbarupadaIterasi1...............................................................6
Gambar5.SebaranobjekdatakecentroidbarupadaIterasi2...............................................................7
Gambar6.KodeProgramSerialKMeansClustering.............................................................................11
Gambar7.KodeProgramParalelKMeansClustering...........................................................................14
Gambar8.PenerapanParalelPadaKodeProgram................................................................................15
Gambar9.GrafikRataRataWaktuEksekusiProgramSerial.................................................................16
Gambar10.GrafikRataRataWaktuEksekusiProgramSerialdanParalel............................................17
Gambar11.GrafikSebaranObjekDataBerdasarkanClusteruntukN:10RT.......................................18
Gambar12.GrafikSebaranObjekDataBerdasarkanClusteruntukN:100RT....................................19
Gambar13.GrafikSebaranObjekDataBerdasarkanClusteruntukN:1.000RT..................................19
Gambar14.GrafikSebaranObjekDataBerdasarkanClusteruntukN:10.000RT................................20
Gambar15.GrafikSebaranObjekDataBerdasarkanClusteruntukN:100.000RT..............................20
iii
ANALISISALGORITMAKMEANSCLUSTERING
DENGANMENGGUNAKANOPENMP
1. PENDAHULUAN
1.1. KMeansClustering
objekobjek (data) ke dalam Kgroup (cluster) berdasarkan atribut tertentu. Pengelompokkan data
dilakukandenganmemperhitungkanjarakterdekatantaradatadata(objekobservasi)denganpusat
cluster (centroid). Prinsip utama dari metode ini adalah menyusun K buah centroid atau ratarata
(mean)darisekumpulandataberdimensiN,dimanametodeinimensyaratkannilaiKsudahdiketahui
sebelumnya (apriori). Algoritma Kmeans dimulai dengan pembentukan prototipe cluster diawal
kemudian secara iteratif prototipe cluster tersebut diperbaiki sehingga tercapai kondisi konvergen,
yaitu kondisi dimana tidak terjadi perubahan yang signifikan pada prototipe cluster. Perubahan ini
diukurdenganmenggunakanfungsiobjektifDyangumumnyadidefinisikansebagaijumlahataurata
ratajaraktiapitemdatadengancentroidgroupnya.
1.2. AlgoritmaKMeansClustering
Algoritma KMeans Clustering merupakan metode clustering berbasis jarak yang membagi
datadata ke dalam sejumlah cluster dimana proses clustering tersebut dilakukan dengan
memperhatikankumpulandaridatadatayangakandikelompokkan.Padaalgoritmaini,pusatcluster
ataucentroiddipilihpadatahapawalsecaraacakdarisekumpulankoleksi(populasi)data.Kemudian
KMeans menguji masingmasing komponen didalam populasi data dan menandai komponen
tersebut ke salah satu centroid yang telah didefinisikan sebelumnya berdasarkan jarak minimum
antara komponen (data) dengan masingmasing centroid. Posisi centroid akan dihitung kembali
sampaisemuakomponendatadikelompokkankesetiapcentroiddanterakhirakanterbentukposisi
centroidbaru.Iterasiiniakanterusdilakukansampaiterciptakondisikonvergen.Secaralebihdetail,
algoritmaKmeansClusteringadalahsebagaiberikut:
1. DefinisikanjumlahKcluster.
2. InisialisasiKpusatcluster(centroid)sebagaiseedpoints(prototipeclusterawal).Centroidini
dapatdiperolehsecaraacakataudipilihdariKobjekdatapertama.
3. Untuk setiap komponen data, hitung dan tandai jarak (distance) ke centroid awal kemudian
masukkandatatersebutkecentroidyangpalingdekatjaraknya
4. Hitung dan ubah kembali centroid tiap cluster sebagai ratarata dari seluruh anggota
kelompok(group)clustertersebut.
5. Cek semua data kembali dan taruh setiap data yang terdekat dengan centroid baru. Jika
anggota tiap cluster tidak berubah (konvergen), maka langkah berhenti dan jika masih
berubah,kembalikelangkah2.
BerikutiniflowchartdarialgoritmaKMeans:
Begin
DefinisikanJumlah
clusterK
Tentukancentroid
Adaobjek
yang
berpindah
kelompok?
Hitungjarakobjekdata
kecentroid
End
Kelompokkanobjekdataberdasarkan
jarakminimumkecentroid
Gambar1.FlowchartKMeansClustering
Berdasarkan uraian tersebut, maka algoritma KMeans Clustering akan melakukan proses
iterasi atau pengulangan langkahlangkah berikut sampai terjadi kestabilan (konvergen) atau tidak
adaobyekdatayangberpindahcentroid:
1.
Menentukankoordinatsetiapcentroid
2.
Menentukanjaraksetiapobyekdatakecentroid
3.
1.3. CaraKerjaAlgoritmaKMeanClustering:
Jika jumlah data (N) lebih kecil dari jumlah cluster (K) maka kita masukkan setiap data
menjadi centroid dari cluster. Setiap centroid memiliki sebuah nomor cluster. Jika jumlah data lebih
besardarijumlahcluster,makauntuksetiapdatakitahitungjarakterhadapseluruhcentroidhingga
mendapatkan jarak minimum (terdekat). Jika kita tidak yakin mengenai lokasi centroid, lakukan
pendekatan mengenai letak centroid berdasarkan data terkini. Lalu masukkan semua data pada
centroidbarutersebut.Prosesiniberulangsampaitidakadalagidatayangdipindahkanpadacluster
lainnya.Secaramatematisperulanganinidapatdibuktikansecarakonvergen.
Data
....
TotalData
NomorCluster
....
NomorCluster
SumXY 1
1
Banyakdatadalamcluster
Centroid 1
....
NomorCluster
Gambar2.Skema3matrixdenganvariabelvariabelnya
2. STUDIKASUSKMEANSCLUSTERING
2.1. StudiKasus
Studi Kasus yang digunakan pada KMeans Clustering ini adalah Data Survei Sosial Ekonomi
Nasional (SUSENAS) Tahun 2012 BPS Provinsi Bali. Objek data yang digunakan disini adalah Rumah
Tangga (RT) dengan atribut (komponen) objek data yang diambil sebanyak 2 (dua) variabel, yaitu X
(Pengeluaran)danY(Pendapatan).Berikutcontohlayoutsederhanadariobjekdatatersebut:
Tabel1.StrukturObjekData
X:Pengeluaran
(ribuan)
1
2
4
5
ObjekData
RumahTanggaA
RumahTanggaB
RumahTanggaC
RumahTanggaD
Y:Pendapatan
(ribuan)
1
1
3
4
UntukimplementasialgoritmaKMeansClustering,jumlahobjekdatayangdigunakanadalah
maksimal sebanyak 100.000 Rumah Tangga, dimana koleksi objek data tersebut digunakan secara
bertahap dengan interval log n, sehingga ada 5 (lima) kali training set untuk mencapai jumlah
populasiobjekdatatersebut,meliputi10,100,1.000,10.000dan100.000RumahTangga.
2.2. TahapanIterasiKMeansClustering
iteration
0
Iterasi0
4.5
Pendapatan(Y)
attribute
2 (Y): pH
4
3.5
3
2.5
2
1.5
1
0.5
0
0
attribute Pengeluaran(X)
1 (X): weight index
Gambar3.SebaranobjekdatakecentroidawalpadaIterasi0
BerikutinitahapantahapaniterasialgoritmaKMeansClustering:
1. JumlahKCluster
JumlahclusteryangdiinginkanadalahsebanyakK,misalnyasebanyak2cluster(group),sehingga
jumlahcentroidyangharusdidefinisikandiawaljugasebanyak2(dua)centroid.
2. Iterasi0:Setnilaiawalcentroid
Misalkan nilai awal centroid adalah 2 nilai atribut pertama pada objek data : Rumah Tangga A
danB,dinotasikandenganC1danC2,dimanaC1=(1,1)danC2=(2,1)
3. Iterasi0:Jarakdarisetiapobjekdatakecentroid
?
?
Hitung jarak (D) setiap objek data tersebut?ke centroid
cluster
dengan
menggunakan Euclidean
?
Distance,sehinggadidapatkanmatriksjaraksebagaiberikut:
c1 ? (1,1)? group / 1
5
0 1 3.61
D0 ? ?
1 0 2.83 4.24
A B C
D
1 2 4
1 1 3
c 2? (2,1)? group / 2
= 3.61
!
!
JarakobjekRumahTanggaCkeC
?
/ - /2: (4
? 2) + (3 1) = 2.83
4. Iterasi0:ClusteringObjekData
?
/
- /
?
Selanjutnyamelakukanpengelompokkan(G)objekdatatersebutkecluster(group1ataugroup
2)berdasarkanjarakminimum(terdekat)dengancentroid.
element
of Group matrix below
/ is 1 if and o
?
0
1
0
0
group
/1
/
0
G ?
0 1 1 1
group / 2
Dari matrik G tersebut, terlihat bahwa Rumah Tangga A masuk kedalam group 1, sedangkan
RumahTanggaB,CdanDmasukkedalamgroup2
5. Iterasi1:Tentukancentroidbaru
Setelah mengetahui anggota setiap group, langkah selanjutnya adalah menghitung kembali
centroid baru untuk setiap group tersebut. Group 1 hanya mempunyai 1 (satu) anggota, yaitu
RumahTanggaAdengancentroidbarusamadengancentroidawalC1=(1,1),sedangkanGroup2
mempunyai3(tiga)anggota,yaituRumahTanggaB,CdanD,sehinggacentroidbaruadalahrata
ratajarakdariseluruhanggotaobjekdatayangmasukdalamkelompok(group)2.
! =
2+4+5 1+3+4
11 10
,
= ( , )
3
3
3 3
- -
- -
iteration
1
Iterasi1
4.5
Pendapatan(Y)
attribute 2 (Y): pH
? 3.5
3
2.5
- -
- -
- -
- -
?
?
2
1.5
1
0.5
0
0
attributePengeluaran(X)
1 (X): weight index
5.Gambar4.SebaranobjekdatakecentroidbarupadaIterasi1
Iteration-1, Objects-Centroids distances: The next step is to comp
?
6. Iterasi1:JarakObjekDatakeCentroid
Langkahinimerupakanprosespenghitunganjaraksetiapobjekdatakecentroidbarutersebut
denganformulayangsamapadaStep3.
/1
c1 ? (1,1) group
1
3.61 5
0
D1 ?
8
11
3.14 2.36 0.47 1.89 c 2 ? ( 3 , 3 ) group / 2
?
/
A
B
C
D
?
/
1
X ?
2
4? 5
/
1
1
3 4 Y
6. Iteration-1,
Objects clustering: Similar to step 3, we assign each obj
7. Iterasi1:ClusteringObjekData
Selanjutnyamelakukanpengelompokkan(G)objekdatatersebutkecluster(group1ataugroup
/
?
?
?
?
?
2)berdasarkanjarakminimum(terdekat)dengancentroidbaruhasilIterasi1
group / 1
1 1 0 0
G1 ?
0 0 1 1 group / 2
? centroids: Now
? we
Iteration 2, determine
1
A
7.
Dari matriks G tersebut terlihat bahwa anggota group 1 mengalami perubahan yaitu menjadi
- 2 menjadi
Rumah Tangga A ?dan- B, sedangkan
anggota ?
group
? Rumah Tangga C dan D.
?
Dikarenakanterjadiperubahananggotadalamgroupmakadilakukanprosesiterasikembali.
/
8. Iterasi2:Tentukancentroidbaru
UlangiStep5untukmenentukancentroidbarudengancaramenghitungnilairataratajarakdari
seluruhanggotaobjekdatauntukmeasingmasinggroup.
1- 2 1-1
4-5 3- 4
,
) ? (1 12 ,1) and c 2 ? (
,
) ? (4 12 ,3 12 )
2
2
2
2
on the clustering of previous iteration. Group1 and group 2 both has two members
ntroids are c1 ? (
iteration
2
Iterasi2
4.5
Pendapatan(Y)
attribute
2 (Y): pH
4
3.5
3
2.5
2
1.5
1
0.5
0
0
attributePengeluaran(X)
1 (X): weight index
?
9. Iterasi2:JarakObjekDatakeCentroid
?
?
UlangiStep3untukmenghitungkembalijaraksetiapobjekdatadengancentroidbaru
c1 ? (1 12 ,1) group / 1
0.5 0.5 3.20 4.61
D ?
c ? (4 1 ,3 1 ) group
/2
4.30
3.54
0.71
0.71
2
2
2
A
B
C
/
D
?
X
2
4
1
/
5
1
1
3
4 Y
roup / 1
1 1 0 0
?
10. Iterasi2:ClusteringObjekData/
iteration 2 as
2
Selanjutnyamelakukanpengelompokkan(G)objekdatatersebutkecluster(group1ataugroup
2)berdasarkanjarakminimum(terdekat)dengancentroidbaruhasilIterasi2
?
group / 1
group / 2
1 1 0 0
G2 ?
0 0 1 1
9.
? G . Comparing
Dari matriks G2 tersebut terlihat tidak ada perubahan anggota untuk group 1 dan group 2,
sehinggasudahtercapaikondisikonvergen.Prosesiterasitidakperludilakukanlagidanrankaian
prosesclusteringselesai.Hasilakhirdariprosesiniadalahkoordinatcentroidakhirdanidentitas
group(cluster)untukmasingmasingobjekdata.
Tabel2.HasilPengelompokkanGroupObjekData
X:Pengeluaran
(ribuan)
1
2
4
5
ObjekData(N)
RumahTanggaA
RumahTanggaB
RumahTanggaC
RumahTanggaD
Y:Pendapatan
(ribuan)
1
1
3
4
Group
(Cluster)
1
1
2
2
3. IMPLEMENTASIALGORITMAKMEANSCLUSTERING
3.1. SpesifikasidanTools
SpesifikasiKomputeryangdigunakanadalahsebagaiberikut:
SistemOperasi
:Windows732Bit
Processor
:AMDTurionX2DualCore2.2GHz
RAM
:4GB
ToolsyangdigunakandalampembuatanprogramserialdanparalelKMeansClusteringpadalaporan
iniadalah:
BahasaPemrograman :C++
IDE
:CodeBlocks10.05
Compiler
:gcc
Library
:OpenMP
3.2. SerialProgramming
BerikutinisourcecodedariProgramSerialKMeansClustering
//--------------------------------------------------------------------------------//Program Serial K-Means Clustering
//Aris Jayandrana (NIM. 23512180)
//Maria Fransiska Sirait (NIM. 23512198)
//Novianto Budi Kurniawan (NIM. 23512176)
//--------------------------------------------------------------------------------#include <stdio.h>
#include <math.h>
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main()
{
//baca file
ifstream in("D:/TUgas Paralel Final/mydata10.csv");
string line, field;
vector< vector<string> > array;
vector<string> v;
while ( getline(in,line) )
{
v.clear();
stringstream ss(line);
while (getline(ss,field,','))
{
v.push_back(field);
}
array.push_back(v);
}
//jumlah titik
// int point[rows][columns]={{5,5},{2,1},{1,3},{5,4}};
//int group[rows];
int point[rows][columns];
int group[rows];
//group id untuk tiap point
int group_member_count[2]={0,0};
//jumlah anggota untuk tiap group
double centroid [crows][ccolumns];
for(int i =0;i<rows;i++)
{
for(int j=0;j<columns;j++){
point[i][j]= atoi(array[i][j].c_str());
// printf("%d\n",point[i][j]);
}
}
//pilih 2 titik pertama sebagai centroid
for (int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
centroid[i][j] = point[i][j];
}
//
printf("Initial centroid group %d :
(%f,%f)\n",i,centroid[i][0],centroid[i][1]);
}
//masukkan semua titik ke group 0
for (int i = 0; i < rows; i++) {
group[i]=0;
}
int group_changing = 2;
while(group_changing>0)
{
group_changing = 0;
//ukur jarak antar titik ke centroid
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 2; j++)
{
dpoint[i][j] = 0.0;
dpoint[i][j] += sqrt(pow((point[i][0] centroid[j][0]),2)+pow((point[i][1] - centroid[j][1]),2));
// printf("Jarak point %d ke centroid %d :
%f\n",i+1,j+1,dpoint[i][j] );
}
}
//masukkan tiap titik kedalam group dengan mengukur jarak centroid yang paling
dekat
int temp_group;
group_member_count[0]=0;
group_member_count[1]=0;
for (int i = 0; i < rows; i++) {
if (dpoint[i][0]<dpoint[i][1])
{
temp_group = group[i];
group[i] = 0;
group_member_count[0]++;
if(temp_group != group[i])
{
group_changing++;
}
}
else if(dpoint[i][0]>dpoint[i][1])
{
temp_group = group[i];
group[i]=1;
group_member_count[1]++;
if(temp_group != group[i])
{
group_changing++;
}
}
else
10
{
temp_group = group[i];
group[i]=0;
group_member_count[0]++;
if(temp_group != group[i])
{
group_changing++;
}
}
}
//hitung posisi centroid baru untuk tiap group
float sumX[2]={0,0},sumY[2]={0,0};
for (int i = 0; i < rows; i++) {
if(group[i] == 0){
sumX[0] += point[i][0];
sumY[0] += point[i][1];
}
else{
sumX[1] += point[i][0];
sumY[1] += point[i][1];
}
}
double newCentroid[crows][ccolumns];
newCentroid[0][0] = sumX[0]/group_member_count[0];
newCentroid[0][1] = sumY[0]/group_member_count[0];
newCentroid[1][0] = sumX[1]/group_member_count[1];
newCentroid[1][1] = sumY[1]/group_member_count[1];
printf("Centroid baru group 0 = (%f,%f) ; dengan sumX = %f, sumY = %f, group
member =
%d\n",newCentroid[0][0],newCentroid[0][1],sumX[0],sumY[0],group_member_count[0]);
printf("Centroid baru group 1 = (%f,%f) ; dengan sumX = %f, sumY = %f, group
member =
%d\n",newCentroid[1][0],newCentroid[1][1],sumX[1],sumY[1],group_member_count[1]);
centroid[0][0]
centroid[0][1]
centroid[1][0]
centroid[1][1]
=
=
=
=
newCentroid[0][0];
newCentroid[0][1];
newCentroid[1][0];
newCentroid[1][1];
}
ofstream myfile;
myfile.open ("D:/TUgas Paralel Final/data_hasil_clustering.csv");
for(int i=0;i<rows;i++)
{
myfile
myfile
myfile
myfile
myfile
myfile
<<
<<
<<
<<
<<
<<
point[i][0];
",";
point[i][1];
",";
group[i];
"\n";
}
myfile.close();
}
Gambar6.KodeProgramSerialKMeansClustering
11
3.3. ParalelProgramming
BerikutinisourcecodedariProgramParalelKMeansClustering
//--------------------------------------------------------------------------------//Program Paralel K-Means Clustering
//Aris Jayandrana (NIM. 23512180)
//Maria Fransiska Sirait (NIM. 23512198)
//Novianto Budi Kurniawan (NIM. 23512176)
//--------------------------------------------------------------------------------#include <stdio.h>
#include <math.h>
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>
#include <stdlib.h>
#include <omp.h>
using namespace std;
int main()
{
omp_set_num_threads(2);
//baca file
ifstream in("D:/TUgas Paralel Final/mydata10.csv");
string line, field;
vector< vector<string> > array;
vector<string> v;
while ( getline(in,line) )
{
v.clear();
stringstream ss(line);
while (getline(ss,field,','))
{
v.push_back(field);
}
array.push_back(v);
}
//jumlah titik
// int point[rows][columns]={{5,5},{2,1},{1,3},{5,4}};
//int group[rows];
int point[rows][columns];
int group[rows];
//group id untuk tiap point
int group_member_count[2]={0,0};
//jumlah anggota untuk tiap group
double centroid [crows][ccolumns];
12
for(int i =0;i<rows;i++)
{
for(int j=0;j<columns;j++){
point[i][j]= atoi(array[i][j].c_str());
// printf("%d\n",point[i][j]);
}
}
//pilih 2 titik pertama sebagai centroid
for (int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
centroid[i][j] = point[i][j];
}
// printf("Initial centroid group %d :
(%f,%f)\n",i,centroid[i][0],centroid[i][1]);
}
//masukkan semua titik ke group 0
for (int i = 0; i < rows; i++) {
group[i]=0;
}
int group_changing = 2;
while(group_changing>0)
{
group_changing = 0;
#pragma omp parallel
{
//ukur jarak antar titik ke centroid
#pragma omp parallel for
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 2; j++)
{
dpoint[i][j] = 0.0;
dpoint[i][j] += sqrt(pow((point[i][0] centroid[j][0]),2)+pow((point[i][1] - centroid[j][1]),2));
printf("Jarak point %d ke centroid %d : %f\n",i+1,j+1,dpoint[i][j] );
}
}
}
//masukkan tiap titik kedalam group dengan mengukur jarak centroid yang paling
dekat
int temp_group;
group_member_count[0]=0;
group_member_count[1]=0;
for (int i = 0; i < rows; i++) {
if (dpoint[i][0]<dpoint[i][1])
{
temp_group = group[i];
group[i] = 0;
group_member_count[0]++;
if(temp_group != group[i])
{
group_changing++;
}
}
else if(dpoint[i][0]>dpoint[i][1])
13
{
temp_group = group[i];
group[i]=1;
group_member_count[1]++;
if(temp_group != group[i])
{
group_changing++;
}
}
else
{
temp_group = group[i];
group[i]=0;
group_member_count[0]++;
if(temp_group != group[i])
{
group_changing++;
}
}
// printf("Point %d masuk ke cluster %d\n",i+1,group[i]);
}
//hitung posisi centroid baru untuk tiap group
float sumX[2]={0,0},sumY[2]={0,0};
for (int i = 0; i < rows; i++) {
if(group[i] == 0){
sumX[0] += point[i][0];
sumY[0] += point[i][1];
}
else{
sumX[1] += point[i][0];
sumY[1] += point[i][1];
}
}
double newCentroid[crows][ccolumns];
newCentroid[0][0] = sumX[0]/group_member_count[0];
newCentroid[0][1] = sumY[0]/group_member_count[0];
newCentroid[1][0] = sumX[1]/group_member_count[1];
newCentroid[1][1] = sumY[1]/group_member_count[1];
printf("Centroid baru group 0 = (%f,%f) ; dengan sumX = %f, sumY = %f, group
member =
%d\n",newCentroid[0][0],newCentroid[0][1],sumX[0],sumY[0],group_member_count[0]);
printf("Centroid baru group 1 = (%f,%f) ; dengan sumX = %f, sumY = %f, group
member =
%d\n",newCentroid[1][0],newCentroid[1][1],sumX[1],sumY[1],group_member_count[1]);
centroid[0][0]
centroid[0][1]
centroid[1][0]
centroid[1][1]
=
=
=
=
newCentroid[0][0];
newCentroid[0][1];
newCentroid[1][0];
newCentroid[1][1];
}
}
Gambar7.KodeProgramParalelKMeansClustering
14
Berdasarkan kode program tersebut terlihat bahwa proses paralel menggunakan library OpenMP
diterapkanpadapenghitunganEuclideanDistance(jarak)antarasetiapobjekdatadengancentroid.
Gambar8.PenerapanParalelPadaKodeProgram
Pada kasus ini jumlah cluster ditetapkan sebanyak 2 (dua) group (K=2), sehingga jumlah
centroid yang ditentukan juga sebanyak 2 (dua) buah. Jumlah objek data yang digunakan diambil
secarabertahapmulaidari10,100,1.000,10.000dan100.000RumahTangga.
4. ANALISISPROGRAMPARALELKMEANSCLUSTERING
ProsesanalisisimplementasiprogramKMeansClusteringdilakukandenganmembandingkan
hasilwaktueksekusiuntukserialdanparaleldengancaramelakukanujicobasebanyak5(lima)kali
terhadap masingmasing training set. Waktu eksekusi proses yang akan dibandingkan disini adalah
rataratawaktueksekusikelimaujicobatersebut.
4.1. WaktuEksekusiProgramSerial
Tabel3.WaktuEksekusiProgramSerial
Jumlah
Objek Data
(N)
Rata-rata
10
0.016
0.062
0.016
0.047
0.047
0.0376
100
0.25
0.031
0.016
0.125
0.094
0.1032
1,000
0.296
0.031
0.094
0.047
0.031
0.0998
10,000
0.484
0.499
0.156
0.296
0.156
0.3182
100,000
1.763
1.404
1.451
1.591
1.482
1.5382
15
RatarataWaktuEksekusiPadaSerial
1.8
1.6
seconds
1.4
1.2
1
0.8
0.6
0.4
0.2
0
1
LogN
Gambar9.GrafikRataRataWaktuEksekusiProgramSerial
4.2. WaktuEksekusiProgramParalel
Tabel4.WaktuEksekusiProgramParalel
Jumlah
Objek
Data (N)
Rata-rata
10
0.359
0.078
0.031
0.016
0.031
0.103
100
0.156
0.016
0.031
0.031
0.016
0.05
1,000
0.328
0.047
0.031
0.031
0.047
0.0968
10,000
0.39
0.156
0.156
0.14
0.14
0.1964
100,000
1.357
1.139
1.232
1.264
1.186
1.2356
BerdasarkanTabel4terlihatbahwarataratawaktueksekusiKMeansClusteringpadaparalel
memiliki waktu yang lebih cepat dibandingkan serial untuk jumlah objek data diatas 100 Rumah
Tangga, sedangkan untuk jumlah objek data 10 Rumah Tangga, waktu eksekusi serial jauh lebih
cepat dibandingkan paralel. Hal ini wajar mengingat kecepatan waktu eksekusi dengan
menggunakan paralel baru akan terlihat untuk jumlah objek data yang banyak (Dalam kasus ini
diatas100RumahTangga).
16
RatarataWaktuEksekusiPadaParalel
1.4
1.2
seconds
1
0.8
0.6
0.4
0.2
0
1
LogN
Gambar9.GrafikRataRataWaktuEksekusiProgramParalel
untukserialdanpararel.
RatarataWaktuEksekusi
1.8
1.6
seconds
1.4
1.2
1
0.8
0.6
0.4
0.2
0
1
LogN
Serial
Paralel
Gambar10.GrafikRataRataWaktuEksekusiProgramSerialdanParalel
17
Tabel5.Selisihrataratawaktueksekusiantaraprogramparaleldenganserial
Jumlah Objek
Data (N)
Paralel
Selisih
10
0.0376
0.103
0.0654
100
0.1032
0.05
-0.0532
1,000
0.0998
0.0968
-0.003
10,000
0.3182
0.1964
-0.1218
100,000
1.5382
1.2356
-0.3026
BerdasarkanTabel5tersebut,terlihatbahwaselisihrataratawaktueksekusiantaraprogram
paraleldenganserialpalingsignifikanterlihatuntukjumlahObjekData100.000RumahTanggayang
mencapai0.3026detikataulebihcepat19,67%.Selisihwaktuakanlebihterasa(signifikan)jikaobjek
RumahTanggayangakankitakelompokkanmemilikijumlahdatayangsangatbesar
4.3. SebaranObjekDataBerdasarkanCluster
Berikut ini grafik yang menampilkan sebaran objek data berdasarkan cluster (group) untuk
masingmasingtrainingset.
1.TrainingSet[X,Y]=10RumahTangga
SebaranObjekDataBerdasarkanCluster
1000
900
Pendapatan(Y)
800
700
600
500
400
300
200
100
0
0
100
200
300
400
500
600
700
Pengeluaran(X)
Group1
Group2
CentroidGroup1
CentroidGroup2
Gambar11.GrafikSebaranObjekDataBerdasarkanClusteruntukN:10RT
18
2.TrainingSet[X,Y]=100RumahTangga
SebaranObjekDataBerdasarkanCluster
1400
Pendapatan(X)
1200
1000
800
600
400
200
0
0
100
200
300
400
500
600
700
Pengeluaran(X)
Group1
Group2
CentroidGroup1
Centroid2
Gambar12.GrafikSebaranObjekDataBerdasarkanClusteruntukN:100RT
3.TrainingSet[X,Y]=1000RumahTangga
SebaranObjekDataBerdasarkanCluster
1800
Pendapatan(X)
1600
1400
1200
1000
800
600
400
200
0
0
200
400
600
800
1000
1200
1400
Pengeluaran(X)
Group1
Group2
CentroidGroup1
CentroidGroup2
Gambar13.GrafikSebaranObjekDataBerdasarkanClusteruntukN:1.000RT
19
4.TrainingSet[X,Y]=10.000RumahTangga
Gambar14.GrafikSebaranObjekDataBerdasarkanClusteruntukN:10.000RT
5.TrainingSet[X,Y]=100.000RumahTangga
Gambar15.GrafikSebaranObjekDataBerdasarkanClusteruntukN:100.000RT
20
Berdasarkan grafik persebaran objek data untuk masingmasing training set terlihat bahwa,
datapengeluarandanpendapatanSusenastersebuttermasukkedalamkategoridatayanghomogen,
artinyadatadatapengeluarandanpendapatanbanyakyangsamanilainyauntukRumahTanggayang
menjadi observasi (objek) data. Kondisi masyarakat dan kondisi ekonomi yang homogen dengan
klasifikasipekerjaanyangsejenismenyebabkanpersebarandatanyasepertiitu.
5. KESIMPULAN
Kesimpulan yang dapat diambil dari uji coba program paralel KMeans Clustering adalah
sebagaiberikut:
1. Penerapan program paralel pada KMeans Clustering terbukti mempercepat waktu eksekusi
proses dengan jumlah objek data (pengeluaran dan pendapatan rumah tangga) diatas 100
RumahTanggadanakanterlihatsignifikanuntukjumlahobjekmencapai100.000RumahTangga.
Percepatanwaktueksekusitersebutakanlebihsignifikanterlihatjikajumlahobjekdatayangkita
libatkansemakinbanyak.
2. Program paralel KMeans Clustering didesain untuk menggunakan objek data (training set)
denganjumlahyangbesar,sehinggapemanfaatanparallelcomputationakanlebihsignifikan.Jika
analisishomogenitasdandataaugmentationmenggunakanobjekdata(trainingset)yangkecil,
maka hasil waktu eksekusinya tidak akan terlalu berpengaruh. Hal ini berarti pada algoritma
programparalelKMeansClusteringterdapathubunganpositifantaraukurantrainingsetdengan
waktueksekusi(speedup)yangditentukanoleharsitekturcluster.
3. Algoritma KMeans Clustering walaupun cepat tetapi keakuratannya tidak dijamin. Seringkali
algoritma ini mengalami konvergensi prematur. Pada algoritma di atas juga tidak dijamin jarak
antara masingmasing centroid tidak merentang sehingga jika ada dua atau lebih kelompok
dengantitikpusatmassayangberdekatanmakahasilnyaterlihatkurangmemuaskan.
21
DAFTARPUSTAKA
[1]
[2]
[3]
Beddo,Vanessa,ApplicationofParallelProgramminginStatistics,California:Universityof
LosAngeles,2002.
22
LAMPIRAN
N=10
UjiCobake5
C1:(35.375,87.50)
C2:(650.0,875.0)
C1:8
C2:2
T:0.031s
N=100
UjiCobake5
C1:(86.725,232.57)
C2:(310.10,716.51)
C1:51
C2:49
T:0.016s
N=1.000
UjiCobake5
C1:(84.65,264.75)
C2:(340.498,940.79)
C1:745
C2:255
T:0.047s
23
N=10.000
UjiCobake5
C1:(58.85,273.93)
C2:(430.87,1045.02)
C1:7.572
C2:2.428
T:0.140s
N=100.000
UjiCobake5
C1:(58.85,273.945)
C2:(430.87,1045.03)
C1:75720
C2:24280
T:1.186s
24