Anda di halaman 1dari 36

Sistem Basis Data

K-Means

KELOMPOK V :
Amanda Adityaningrum

H 121 10 268

Adi Suwandi

H 121 10 288

Siswanto

H 121 10 901

Andi Ammar Firaz

H 121 10 903

PRODI STATISTIKA
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS HASANUDDIN
MAKASSAR
2013

BAB I
PENDAHULUAN
Data mining merupakan proses pengekstrakan informasi dari jumlah
kumpulan data yang besar dengan menggunakan algoritma dan tekhnik gambar dari
statistik, mesin pembelajaran dan sistem manajemen database. Data mining disebut
juga Knowledge-Discovery in Database (KDD) adalah sebuah proses secara otomatis
atas pencarian data di dalam sebuah memori yang amat besar dari data untuk
mengetahui

pola

dengan

menggunakan

alat

seperti

klasifikasi,

hubungan

(association) atau pengelompokan (clustering).


Clustering adalah pengelompokan sejumlah besar obyek berdasarkan ciri atau
atribut tertentu ke dalam sejumlah kelompok atau cluster. Dengan clustering, dan
dengan menggunakan algoritma clustering, sejumlah obyek yang memiliki nilai
parameter yang mendekati sama akan dikelompokkan. Tujuan dari pengelompokan
bisa untuk berbagai keperluan, salah satunya adalah untuk keperluan pengenalan pola
dimana setelah data dikelompokkan, akan lebih mudah melakukan analisa selanjutnya
untuk mengenali secara lebih rinci pola-pola yang dimiliki oleh suatu kumpulan
obyek. Pada makalah ini akan difokuskan mengenai clustering dengan menggunakan
algoritma K-Means dan algoritma K-Medoids.

BAB II
TINJAUAN PUSTAKA
II.1 Algoritma K-Means
Algoritma K-Means merupakan algoritma yang relatif sederhana untuk
mengklasifikasikan atau mengelompokkan sejumlah besar obyek dengan atribut
tertentu ke dalam kelompok-kelompok sebanyak K. K-Means salah satu metode data
clustering non hirarki yang berusaha mempartisi data yang ada ke dalam bentuk satu
atau lebih cluster atau kelompok. Algoritma K-Means pertama kali diperkenalkan
oleh MacQueen JB pada tahun 1976. Pada algoritma K-Means jumlah cluster K telah
ditentukan terlebih dahulu.
Kelebihan Algoritma K-Means diantaranya adalah mampu mengelompokkan
objek besar dan pencilan obyek dengan sangat cepat sehingga mempercepat proses
pengelompokan. Adapun kekurangan yang dimiliki oleh K-Means sangat sensitive
pada pembangkitan titik pusat awal secara random, hasil pengelompokan bersifat
tidak

unik

(selalu

berubah-ubah),

Algoritma

K-Means

walaupun

proses

pengerjaannya cepat tetapi keakuratannya tidak dijamin.


Cara kerja algoritma K-Means :
1. Tentukan K sebagai jumlah cluster yang ingin dibentuk,
2. Bangkitkan K centroid (titik pusat cluster) awal secara random
Dalam menentukan n buah pusat cluster awal dilakukan pembangkitan
bilangan random yang merepresentasikan urutan data input. Pusat awal
cluster didapatkan dari data sendiri bukan dengan menentukan titik baru, yaitu
dengan merandom pusat awal dari data.
3. Hitung jarak setiap data ke masing-masing centroids
Untuk mengukur jarak antara data dengan pusat cluster digunakan Euclidian
distance.
Algoritma perhitungan jarak data dengan pusat cluster
a) Ambil nilai data dan nilai pusat cluster

b) Hitung Euclidian distance data dengan tiap pusat cluster


Euclidian Distance: merupakan jarak yang didapat dari perhitungan antara
semua N data dengan K centroid dimana akan memperoleh tingkat kedekatan
dengan kelas yang terdekat dengan populasi data tersebut. Jarak euclidian
untuk menandai adanya persamaan antar tiap cluster dengan jarak minimum dan
mempunyai persamaan yang lebih tinggi. Euclidian matrik antara titik

x=( x 1 , x 2 , , x n ) dan titik

y=( y 1 , y 2 , , y n ) adalah:

Dimana,
x : Titik data pertama,
y : Titik data kedua,
n : Jumlah karakteristik (attribut) dalam terminologi data mining,
d(x,y) : Euclidian distance yaitu jarak antara data pada titik x dan titik y
menggunakan kalkulasi matematika
4. Setiap data memilih centroids yang terdekat,
Jarak hasil perhitungan akan dilakukan perbandingan dan dipilih jarak
terdekat antara data dengan pusat cluster, jarak ini menunjukkan bahwa data
tersebut berada dalam satu kelompok dengan pusat cluster terdekat.
5. Tentukan posisi centroids yang baru dengan cara menghitung nilai rata-rata
dari data-data yang terletak pada centroid yang sama,
Pusat cluster yang baru digunakan untuk melakukan iterasi selanjutnya, jika
hasil yang didapatkan belum konvergen. Proses iterasi akan berhenti jika telah
memenuhi maksimum iterasi yang dimasukkan oleh User atau hasil yang
dicapai sudah konvergen (pusat cluster baru sama dengan pusat cluster lama).

6. Kembali ke langkah 3 jika posisi centroids baru dengan centroids yang lama
tidak sama.

Flowchart K-Means
II.2 Algoritma K-Medoids
Dalam metode K-medoid setiap cluster dipresentasikan dari sebuah objek di
dalam cluster yang disebut dengan medoid. Tujuannya adalah menemukan kelompok
K-cluster (jumlah cluster) diantara semua objek data di dalam sebuah kelompok data.
Clusternya dibangun dari hasil mencocokkan setiap objek data yang paling dekat
dengan cluster yang dianggap sebagai medoid sementara. Langkah-langkah
menghitung medoids, yaitu:
1. Pilih point k sebagai inisial centroid/nilai tengah (medoids) sebanyak k
cluster.
2. Cari semua point yang paling dekat dengan medoid, dengan cara menghitung
jarak vector antar dokumen. (menggunakan Euclidian distance)
3. Secara random, pilih point yang bukan medoid.
4. Hitung total distance

5. If TD baru < TD awal, tukar posisi medoid dengan medoids baru, jadilah
medoid yang baru.
6. ulangi langkah 2 - 5 sampai medoid tidak berubah.
Diberikan himpunan data sejumlah n titik P= {p1,p2,,pn} dalam ruang R2,
tujuan clustering K-medoid adalah untuk membagi titik-titik data ke dalam k cluster
sehingga fungsi objektif berikut minimal.

J(M)=J(m1m)=

p,m
d ( i)

p C i

i=1

Dalam J(C), mi merupakan titik perwakilan (representative point) bagi cluster Ci.

Jika mi dibatasi harus merupakan anggota dari P, maka mi disebut medoid.


Sebaliknya, jika mi adalah rataan dari titik-titik cluster dan tidak harus
merupakan anggota dari P, maka mi disebut mean.
Dengan demikian algoritma K-mean dan K-medoid mempunyai hubungan

yang sangat erat. K-medoid memberikan karakteristik K cluster, dan setiap titik
dalam P menjadi milik medoid terdekat. Karena kita telah membatasi dalam ruang R 2,
maka fungsi jarak d biasanya adalah jarak Euclidean.

d(p,mi) =

p ( x )m

( x)
i

p ( y )m

( y)
i

Salah satu kekurangan pendekatan K-medoid adalah algoritma


tersebut menghasilkan hard cluster, yaitu masing-masing titik
secara unik diberikan satu dan hanya satu cluster.

BAB III
PEMBAHASAN
III.1 Contoh Kasus dengan Algoritma K-Means
Dari banyak siswa diambil 12 siswa sebagai contoh untuk penerapan
algoritma

k-means

dalam penjurusan siswa.

Percobaan dilakukan

dengan

menggunakan parameter-parameter berikut :


Jumlah cluster : 2
Jumlah data

:12

Jumlah atribut : 8
Tabel III.1 merupakan data yang digunakan untuk melakukan percobaan perhitungan
manual.

No
1
2
3
4
5
6

NIS
20121
73
20121
74
20121
75
20121
76
20121
77
20121
78

Matemati
ka

Fisika

Kimia

Biolog
i

Sejara
h

Akunta
nsi

Sosiolo
gi

Geogr
af

Afgansyah
Denny
Sumargo

79

75

75

85

76

78

76

80

84

76

79

77

76

77

75

81

Lina Nur Aini


Ananda
Anugrah

77

84

78

85

92

89

77

82

78

86

84

77

78

77

75

75

Putri Khadijah

82

82

81

91

90

82

79

91

Ika Inayah

75

75

70

82

75

75

79

75

Nama

7
8
9
10
11
12

20121
79
20121
80
20121
81
20121
82
20121
83
20121
84

Wa Ode Sofa
Z.

77

75

75

89

80

80

75

75

Budy Santoso

77

76

70

77

77

80

75

80

Andi Eka Murti

79

76

75

84

77

81

76

77

Ahsan Muhajir
Siswan
Sumargo

80

75

75

75

75

78

77

79

76

71

75

75

77

81

79

84

Anis Fadilah

80

77

75

78

78

77

77

80

Iterasi ke-1
1. Penentuan pusat awal cluster
Untuk penentuan awal di asumsikan:
Diambil data ke- 2 sebagai pusat Cluster Ke-1: (84, 76, 79, 77, 76, 77, 75, 81)
Diambil data ke- 5 sebagai pusat Cluster Ke-2: (82, 82, 81, 91, 90, 82, 79, 91)

2. Perhitungan jarak pusat cluster


Untuk mengukur jarak antara data dengan pusat cluster digunakan Euclidian
distance, kemudian akan didapatkan matrik jarak yaitu C1 dan C2 sebagai berikut :
Rumus Euclidian distance

Matemati
ka

Fisik
a

Kimi
a

Biolo
gi

Sejar
ah

Akunta
nsi

Sosiolo
gi

Geogr
af

79

75

75

85

76

78

76

80

84

76

79

77

76

77

75

81

77

84

78

85

92

89

77

82

78

86

84

77

78

77

75

75

82

82

81

91

90

82

79

91

75

75

70

82

75

75

79

75

77

75

75

89

80

80

75

75

77

76

70

77

77

80

75

80

79

76

75

84

77

81

76

77

80

75

75

75

75

78

77

79

76

71

75

75

77

81

79

84

80

77

75

78

78

77

77

80

C1
10.4
4
0
24.1
45
14.1
77
24.0
21
15.6
52
16.4
62
11.8
74
11.1
36
6.85
57
12.2
88
6.55
74

C2
21.7
26
24.0
21
14.5
6
26.0
38
0
28.8
1
22.1
36
26.2
3
22.4
72
27.0
92
25.8
46
22.9
78

Jarak
Terpendek
10.4403065
1
0
14.5602197
8
14.1774468
8
0
15.6524758
4
16.4620776
3
11.8743420
9
11.1355287
3
6.8556546
12.2882057
3
6.55743852
4

3. Pengelompokkan data
Jarak hasil perhitungan akan dilakukan perbandingan dan dipilih jarak terdekat antara
data dengan pusat cluster, jarak ini menunjukkan bahwa data tersebut berada dalam
satu kelompok dengan pusat cluster terdekat.
Berikut ini akan ditampilkan data matriks pengelompokkan group, nilai 1 berarti data
tersebut berada dalam group.
G1
No
1

C1
1

C2
0

2
3
4
5
6
7
8
9
10
11
12

1
0
1
0
1
1
1
1
1
1
1

0
1
0
1
0
0
0
0
0
0
0

4. Penentuan pusat cluster baru


Setelah diketahui anggota tiap-tiap cluster kemudian pusat cluster baru dihitung
berdasarkan data anggota tiap-tiap cluster sesuai dengan rumus pusat anggota cluster.
Sehingga didapatkan perhitungan sebagai berikut :

Nama
Afgansyah
Denny
Sumargo

Matemati
ka
79

Fisik
a
75

Kimi
a
75

Biolo
gi
85

Sejar
ah
76

Akunta
nsi
78

Sosiolo
gi
76

Geogr
af
80

78

84

76

79

77

76

77

75

81

76

Lina Nur Aini


Ananda
Anugrah
Putri Khadijah
Ika Inayah
Wa Ode Sofa
Z.
Budy Santoso
Andi Eka Murti
Ahsan Muhajir
Siswan
Sumargo
Anis Fadilah

77

84

78

85

92

89

77

82

75

78
82
75

86
82
75

84
81
70

77
91
82

78
90
75

77
82
75

75
79
79

75
91
75

79
76
78

77
77
79
80

75
76
76
75

75
70
75
75

89
77
84
75

80
77
77
75

80
80
81
78

75
75
76
77

75
80
77
79

76
78

76
80

71
77

75
75

75
78

77
78

81
77

79
77

84
80

Iterasi Ke-2
5. Ulangi langkah ke 2 (kedua) hingga posisi data tidak mengalami perubahan.
Cluster baru yang ke-1
Cluster baru yang ke-2

78.5
79.5

76.2
83

75.3
79.5

79.9
88

76.9
91

Matemati
ka

Fisik
a

Kimi
a

Biolo
gi

Sejar
ah

Akunta
nsi

Sosiolo
gi

Geogr
af

79

75

75

85

76

78

76

80

84

76

79

77

76

77

75

81

77

84

78

85

92

89

77

82

78

86

84

77

78

77

75

75

82

82

81

91

90

82

79

91

78.4
85.5

C1
5.55
7
7.92
97
21.1
82
14.0
88
23.3
81

76.4
78

C2
20.5
18
22.9
56
7.28
01
23.1
3
7.28
01

78.6
86.5

Jarak
Terpendek
5.55697759
6
7.92969104
1
7.28010988
9
14.0882930
1
7.28010988
9

75

75

70

82

75

75

79

75

77

75

75

89

80

80

75

75

77

76

70

77

77

80

75

80

79

76

75

84

77

81

76

77

80

75

75

75

75

78

77

79

76

71

75

75

77

81

79

84

80

77

75

78

78

77

77

80

9.00
44
10.6
62
6.72
9
5.16
53
5.66
39
10.0
04
3.47
56

26.6
46
19.5
96
23.3
24
19.9
24.9
6
23.8
54
21

9.00444334
8
10.6620823
5
6.72904153
7
5.16526862
8
5.66392090
3
10.0039992
3.47562943
9

Langkah selanjutnya sama dengan langkah pada nomor 3 jarak hasil perhitungan akan
dilakukan perbandingan dan dipilih jarak terdekat antara data dengan pusat cluster,
jarak ini menunjukkan bahwa data tersebut berada dalam satu kelompok dengan pusat
cluster terdekat.
G2
No
1
2
3
4
5
6
7
8
9
10
11
12

C1
1
1
0
1
0
1
1
1
1
1
1
1

C2
0
0
1
0
1
0
0
0
0
0
0
0

Karena G2 = G1 memiliki anggota yang sama maka tidak perlu dilakukan


iterasi/perulangan lagi. Hasil clustering telah mencapai stabil dan konvergen.
III.2 Contoh Kasus dengan Algoritma K-Medoids

Diketahui sepuluh data dengan k = 2


No
1
2
3
4
5
6
7
8
9
10

X1
2
3
3
4
6
6
7
7
8
7

X2
6
4
8
7
2
4
3
4
5
6

Langkah 1
Misalkan kita asumsikan c1 = (3,4) and c2 = (7,4)
Jadi c1 dan c2 dipilih sebagai medoids.
Hitung jarak untuk memhubungkan setiap objek data yang terdekat dengan. Nilai
yang terdekat dengan medoids dapat dilihat pada table.

i
1
3
4
5
6
7
9
10

C1
3
3
3
3
3
3
3
3

4
4
4
4
4
4
4
4

Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
3
8
5
7
6

Cost
3
4
4
5
3
5
6
6

i
1
3
4
5
6
7
9
10

C2
7
7
7
7
7
7
7
7

4
4
4
4
4
4
4
4

Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
3
8
5
7
6

Cost
7
8
6
3
1
1
2
2

Sehingga clusternya menjadi:


Cluster1 = {(3,4)(2,6)(3,8)(4,7)}
Cluster2 = {(7,4)(6,2)(6,4)(7,3)(8,5)(7,6)}
Sehingga total costnya
totalcost ={ 3+4 +4 } + { 3+1+1+2+2 }=20

Langkah 2
,
Pilih satu cluster yang bukan medoids misalkan O =(7,3)

Jadi sekarang medoidnya adalah c1(3,4) dan O(7,3)


Jika c1 dan O adalah medoid baru, maka hitung totalnya menggunakan rumus pada
langkah 1

i
1
3
4
5
6
7
9
10

i
1
3
4
5
6
7
9
10

4
4
4
4
4
4
4
4

Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
4
8
5
7
6

Cost
3
4
4
5
3
4
6
6

3
3
3
3
3
3
3
3

Data Objek
(Xi)
2
6
3
8
4
7
6
2
6
4
7
4
8
5
7
6

Cost
8
9
7
2
2
1
3
3

C1
3
3
3
3
3
3
3
3

C2
7
7
7
7
7
7
7
7

Sehingga total costnya


total cost ={ 3+4 +4 } + { 2+2+1+3+3 }=22

Karena Total cost baru > Total cost awal, maka tidak terjadi pertukaran posisi.

III.3 Contoh Kasus K-Means dengan SPSS


Dari penelitian yang dilakukan terhadap 100 kota, ingin diketahui pengelompokan
kota-kota tersebut berdasarkan instrumen 5 variabel yaitu :

jumlah pendapatan kota (trilyun Rp)


jumlah pinjaman pemerintah kota (milyar Rp)
jumlah dana hibah yang dimiliki kota (milyar Rp)
jumlah konsumsi pemerintah kota (milyar Rp)
jumlah penduduk kota (juta jiwa).
Untuk itu data yang berhasil dikumpulkan adalah 100 data. Untuk

menyelesaikan kasus ini, kita dapat melakukan langkah-langkah seperti di bawah ini
pada spss:
Langkah 1 : Standardisasi/Transformasi
Mengingat data yang terkumpul mempunyai variabilitas satuan, maka perlu
dilakukan langkah standardisasi atau transformasi terhadap variabel yang relevan ke
bentuk zscore, sebagai berikut :
1. Input semua variabel pada Variable View, sedangkan semua data yang
diperoleh di input pada Data View pada program SPSS
Variable view

Data View

2. Setelah selesai meng-input, selanjutnya klik menu Analyze dan pilih sub
menu Descriptives Statistics lalu Descriptives

3. Ketika muncul tampilan seperti dibawah ini:

Masukkan ke dalam kotak Variable(s) seluruh variable seperti jumlah


pendapatan, jumlah pinjaman, jumlah dana hibah, jumlah konsumsi, dan
jumlah penduduk. (dalam hal ini variabel kota tidak dimasukkan karena data
bertipe string. Seperti gambar di bawah ini:

Kemudian aktifkan bagian Save standardized values as variables. Abaikan


bagian yang lain lalu tekan OK untuk menampilkan output aplikasi program
SPSS.
4. Setelah itu, akan muncul output untuk deskripsi dari keseluruhan variabel
yang meliputi nilai maksimum, nilai minimun, rataan, dan standar deviasi dari
masing-masing variabel.
Descriptive Statistics
N

Minimum

Maximum

Mean

Std. Deviation

PENDAPATAN

100

99

53.26

25.594

PINJAMAN

100

1.0

9.8

5.469

1.9116

DN.HIBAH

100

10

5.46

2.702

KONSUMSI

100

31

100

68.99

19.261

PENDUDUK

100

25

98

60.60

19.162

Valid N (listwise)

100

Deskripsi di atas digunakan sebagai dasar perhitungan z-score yang diperoleh.


5. Selanjutnya buka tampilan Data View dari tabel data. Hal yang akan
dijumpai sebagai berikut:

Untuk selanjutnya, hasil z-score inilah yang akan dipakai pada dasar analisis
cluster.
Langkah 2 : Analisis Cluster
Sebagaimana dijelaskan sebelumnya bahwa metode K-Means Cluster ini
jumlah cluster ditentukan sendiri. Perlu diingat bahwa bahan analisis bukan lagi data
asli, namun data hasil transformasi/standardisasi. Berikut ini langkah-langkah yang
harus dilakukan dalam menggunakan metode K-Means Cluster dalam aplikasi
program SPSS.
1. Dari tampilan data yang tertera (hasil standardisasi/transformasi), buka menu
Analyze, lalu pilih sub menu Classify dan pilih K-Means Cluster
hingga tampak pada layar sebagai berikut :

2. Masukkan seluruh variabel Z-Score ke dalam kotak Variable(s). Kemudian


variabel Kota dimasukkan dalam kotak Label Cases by. Number of Clusters
dalam hal ini diisi menurut jumlah cluster yang akan dibentuk dalam
penelitian yang dimaksud. Dalam hal ini diisi 3, karena kita mengharapkan
akan dibentuknya 3 cluster.

3. Kemudian klik mouse pada kotak Save hingga muncul tampilan seperti
berikut ini :

Kotak dialog Save memungkinkan hasil cluster disimpan dalam bentuk


variabel baru. Hal ini berguna untuk proses profiling cluster, yang akan
dilakukan pada tahapan akhir analisis cluster. Aktifkan kedua kotak dalam
menu Save, yaitu Cluster membership dan Distance from cluster center.
Selanjutnya tekan tombol Continue untuk kembali ke menu utama.
4. Kemudian klik mouse pada kotak Options hingga tampak tampilan berikut
ini :

Pada bagian Statistics, aktifkan Initial cluster centers dan ANOVA


table. Abaikan bagian yang lain, lalu tekan Continue untuk kembali ke
menu utama.
5. Dari tampilan menu utama cluster, abaikan bagian yang lain lalu tekan tombol
OK untuk dapat menampilkan output aplikasi program SPSS seperti berikut
ini.

Initial Cluster Centers


Cluster
1
Zscore(PENDAPATAN)

.53684

-.24459

-1.61208

Zscore(PINJAMAN)

2.00412

-.97773

1.48099

Zscore(DN.HIBAH)

1.31009

-1.28048

-1.65056

Zscore(KONSUMSI)

-.41482

-1.92043

1.50612

Zscore(PENDUDUK)

1.95175

-1.17940

-1.07503

Tabel diatas merupakan tampilan pertama proses clustering data sebelum


dilakukan iterasi. Untuk mendeteksi berapa kali proses iterasi yang dilakukan dalam
proses clustering dari 100 obyek yang diteliti, dapat dilihat dari tampilan output
berikut ini :
Iteration Historya
Iteration

dimension

Change in Cluster Centers


1

2.230

1.976

2.083

.096

.129

.119

.000

.067

.082

.000

.062

.072

.110

.000

.137

.103

.053

.075

.102

.135

.000

.000

.000

.000

a. Convergence achieved due to no or small


change in cluster centers. The maximum
absolute coordinate change for any center is .
000. The current iteration is 8. The minimum
distance between initial centers is 4.450.

Ternyata proses clustering yang dilakukan melalui 8 tahapan iterasi untuk


mendapatkan cluster yang tepat. Dari tabel diatas disebutkan bahwa jarak minimum

antar pusat cluster yang terjadi dari hasil iterasi adalah 4.450. Adapun hasil akhir dari
proses clustering digambarkan berikut ini :
Final Cluster Centers
Cluster
1

Zscore(PENDAPATAN)

.28738

.22301

-.60404

Zscore(PINJAMAN)

.39180

-.60817

.11910

Zscore(DN.HIBAH)

.84511

-.38512

-.70069

Zscore(KONSUMSI)

.03247

-.78159

.76544

Zscore(PENDUDUK)

.30857

-.31244

-.07828

Output Final Cluster Centers tersebut diatas masih terkait dengan proses
standardisasi data sebelumnya, yang mengacu pada z-score dengan ketentuan sebagai
berikut :

Nilai negatif (-) berarti data berada di bawah rata-rata total.


Nilai positif (+)berarti data berada di atas rata-rata total.
Dari tabel output Final Cluster Centers, dengan ketentuan yang telah

dijabarkan diatas pula, dapat didefinisikan sebagai berikut :

Cluster-1
Dalam cluster-1 ini berisikan kota-kota yang mempunyai jumlah pendapatan
kota, jumlah pinjaman, jumlah dana hibah, jumlah konsumsi, dan jumlah
penduduk yang lebih dari rata-rata populasi kota yang diteliti. Hal ini terbukti
dari nilai positif (+) yang terdapat pada tabel Final Cluster Centers dalam
keseluruhan variabel. Dengan demikian, dapat diduga bahwa cluster-1 ini

merupakan pengelompokandari kota-kota besar.


Cluster-2
Sedangkan karakteristik kota-kota yang mengelompok pada cluster-2 adalah
umumnya instrumen penilai berada pada posisi dibawah rata-rata populasi
kota yang diteliti. Sehingga dapat diduga bahwa cluster-2 merupakan
pengelompokan kota-kota kecil.

Cluster-3
Dan karakteristik kota yang masuk dalam pengelompokan cluster-3 yaitu
memiliki rata-rata jumlah pinjaman dan jumlah konsumsi yang kurang dari
rata-rata populasi kota yang diteliti. Untuk instrumen variabel yang lain kotakota di cluster-3 ini berada di atas ratarata populasi. Dengan demikian, dapat
diduga sekumpulan kota-kota menengah berada pada cluster-3.
Tahapan selanjutnya yang perlu dilakukan yaitu melihat perbedaan variabel

pada cluster yang terbentuk. Dalam hal ini dapat dilihat dari nilai F dan nilai
probabilitas (sig) masing-masing variabel, seperti tampak dalam table berikut.
ANOVA
Cluster
Mean Square

Error
df

Mean Square

df

Sig.

Zscore(PENDAPATAN)

7.854

.859

97

9.147

.000

Zscore(PINJAMAN)

8.939

.836

97

10.689

.000

Zscore(DN.HIBAH)

23.591

.534

97

44.159

.000

Zscore(KONSUMSI)

18.278

.644

97

28.392

.000

Zscore(PENDUDUK)

3.462

.949

97

3.647

.030

The F tests should be used only for descriptive purposes because the clusters have been chosen to maximize
the differences among cases in different clusters. The observed significance levels are not corrected for this and
thus cannot be interpreted as tests of the hypothesis that the cluster means are equal.

Perlu di ingat bahwa Semakin besar nilai F dan (sig < 0,05), maka semakin
besar perbedaan variable pada cluster yang terbentuk. Dengan demikian hasil
cluster yang didapat dalam penelitian ini bahwa untuk instrumen jumlah dana hibah
kota yang paling menunjukkan adanya perbedaan diantara kota-kota pada ketiga
cluster yang terbentuk. Hal ini dengan ditunjukkannya nilai F = 44.159 dan sig =
0,000.
Selanjutnya untuk mengetahui jumlah anggota masing-masing cluster yang
terbentuk dapat dilihat pada tabel output berikut ini :

Number of Cases in each


Cluster
Cluster

Valid
Missing

39.000

31.000

30.000
100.000
12.000

Nampak jelas bahwa cluster-1 beranggotakan 39 kota, cluster-2 berisi 31 kota,


dan pada cluster-3 terdapat 30 kota yang mengelompok. Dan untuk mengetahui kotakota mana saja yang masuk dalam kategori tiap-tiap cluster dapat kembali dibuka
tampilan Data View pada kolom terakhir akan nampak seperti berikut ini :

Perhatikan 2 kolom terakhir pada tabel di atas. qcl_1 menunjukkan nomor


cluster dari keberadaan kota, dan qcl_2 merupakan jarak antara obyek dengan
pusat cluster.
Plot K-Means

III.4 Program K-Mean dan K-Medoid dengan PHP

Program untuk menampilkan objek/data

<?php
class objek {
private $cluster = null;
var $data = array();
function __construct($dt) {
$this->data = $dt;
}
public function setCluster($cls){
$jml = 0;
$tmpCluster = 0;
$c = null;
for ($i=0;$i<count($cls);$i++){
$jml = 0;
for ($j=0;$j<count($this->data);$j++){
$jml += pow(($this->data[$j] $cls[$i][$j]),2);
}

$tmpC = sqrt($jml);
if ($c==null){
$c = $tmpC;
$tmpCluster = $i;
}
if ($tmpC < $c){
$c = $tmpC;
$tmpCluster = $i;
}
}
$this->cluster = $tmpCluster;
}
public function getCluster(){
return $this->cluster;
}
}
?>

Program utama K-Mean

<?php
class ClusteringKMean {
private $objek = array();
private $centroidCluster = null;
private $cekObjCluster = null;
public function __construct($obj,$cnt) {
$this->centroidCluster = $cnt;
for ($i=0;$i<count($obj);$i++){
$this->objek[$i] = new objek($obj[$i]);
$this->cekObjCluster[$i] = 0;
}
}
public function setClusterObjek($itr){
echo "<table width='500' cellpadding=0 cellspacing=0>
<tr><th colspan='100'>ITERASI ".$itr."</th></tr>
<tr><th>Objek</th>";
for ($i=0;$i<count($this->objek[0]->data);$i++){
echo "<th>Data ".($i+1)."</th>";
}
for ($j=0;$j<count($this->centroidCluster);$j++){
echo "<th>Cluster ".($j+1)."</th>";
}
echo "</tr>";
for ($i=0;$i<count($this->objek);$i++){
$this->objek[$i]->setCluster($this->centroidCluster);
echo "<tr><td>Objek ".($i+1)."</td>";
for ($j=0;$j<count($this->objek[$i]->data);$j++)
echo "<td>".$this->objek[$i]->data[$j]."</td>";
for ($j=0;$j<count($this->centroidCluster);$j++){
if ($j == $this->objek[$i]->getCluster())

else

echo "<td>X</td>";
echo "<td>&nbsp;</td>";

}
echo "</tr>";
}
echo "</table><br><br>";
$cek = TRUE;
for ($i=0;$i<count($this->cekObjCluster);$i++){
if ($this->cekObjCluster[$i]!=$this->objek[$i]>getCluster()){
$cek = FALSE;
break;
}
}
if ((!($cek))&&($itr<20)){
for ($i=0;$i<count($this->cekObjCluster);$i++){
$this->cekObjCluster[$i] = $this->objek[$i]>getCluster();
}
$this->setCentroidCluster();
$this->setClusterObjek($itr+1);
}else{
for ($i=0;$i<count($this->centroidCluster);$i++){
echo "Cluster ".($i+1)." -> ";
for ($j=0;$j<count($this>centroidCluster[$i]);$j++){
echo $this->centroidCluster[$i]
[$j]."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
echo "<br>";
}
}
}
private function setCentroidCluster(){
for ($i=0;$i<count($this->centroidCluster);$i++){
$countObj = 0;
$x = array();
for ($j=0;$j<count($this->objek);$j++){
if ($this->objek[$j]->getCluster()==$i){
for ($k=0;$k<count($this->objek[$j]->data);
$k++){
$x[$k] += $this->objek[$j]->data[$k];
}
$countObj++;
}
}
for ($k=0;$k<count($this->centroidCluster[$i]);$k++){
if ($countObj>0)
$this->centroidCluster[$i]
[$k] = $x[$k]/$countObj;
else{
echo "<font
color='red'>Terdapat ketidak sesuai Nilai Awal Cluster</font><br>";
break;
}
}

}
}
}
?>

Program utama K-Medoid

class ClusteringKMedoid {
private $objek = array();
private $centroidCluster = null;
private $cekObjCluster = null;
public function __construct($obj,$cnt) {
$this->centroidCluster = $cnt;
for ($i=0;$i<count($obj);$i++){
$this->objek[$i] = new objek($obj[$i]);
$this->cekObjCluster[$i] = 0;
}
}
public function setClusterObjek($itr){
echo "<table width='500' cellpadding=0 cellspacing=0>
<tr><th colspan='100'>ITERASI ".$itr."</th></tr>
<tr><th>Objek</th>";
for ($i=0;$i<count($this->objek[0]->data);$i++){
echo "<th>Data ".($i+1)."</th>";
}
for ($j=0;$j<count($this->centroidCluster);$j++){
echo "<th>Cluster ".($j+1)."</th>";
}
echo "</tr>";
for ($i=0;$i<count($this->objek);$i++){
$this->objek[$i]->setCluster($this->centroidCluster);
echo "<tr><td>Objek ".($i+1)."</td>";
for ($j=0;$j<count($this->objek[$i]->data);$j++)
echo "<td>".$this->objek[$i]->data[$j]."</td>";
for ($j=0;$j<count($this->centroidCluster);$j++){
if ($j == $this->objek[$i]->getCluster())
echo "<td>X</td>";
else echo "<td>&nbsp;</td>";
}
echo "</tr>";
}
echo "</table><br><br>";
$cek = TRUE;
for ($i=0;$i<count($this->cekObjCluster);$i++){
if ($this->cekObjCluster[$i]!=$this->objek[$i]>getCluster()){
$cek = FALSE;
break;
}
}
if ((!($cek))&&($itr<20)){

for ($i=0;$i<count($this->cekObjCluster);$i++){
$this->cekObjCluster[$i] = $this->objek[$i]>getCluster();
}
$this->setCentroidCluster();
$this->setClusterObjek($itr+1);
}else{
for ($i=0;$i<count($this->centroidCluster);$i++){
echo "Cluster ".($i+1)." -> ";
for ($j=0;$j<count($this>centroidCluster[$i]);$j++){
echo $this->centroidCluster[$i]
[$j]."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
echo "<br>";
}
}
}
private function setCentroidCluster(){
for ($i=0;$i<count($this->centroidCluster);$i++){
$countObj = 0;
$x = array(array());
for ($j=0;$j<count($this->objek);$j++){
if ($this->objek[$j]->getCluster()==$i){
for ($k=0;$k<count($this->objek[$j]->data);
$k++){
$x[$k][] = $this->objek[$j]>data[$k];
}
$countObj++;
}
}
for ($k=0;$k<count($this->centroidCluster[$i]);$k++){
sort($x[$k]);
if ($countObj>0){
if (((count($x[$k]))%2)==0){
$tmp = (($x[$k]
[(count($x[$k]))/2])+($x[$k][((count($x[$k]))/2)+1]))/2;
}else{
$tmp = ($x[$k]
[ceil((count($x[$k]))/2)]);
}
$this->centroidCluster[$i]
[$k] = $tmp;
}
}
}
}
}
?>

Program untuk menampilkan hasil

<html>
<head>
<style>
body{
font-size:14px;
font-family:tahoma;
font-weight:bold;
}
table{
border : 1px solid #000;
text-align : center;
font-family:tahoma;
font-size:12px;
}
table tr th{
border : 1px solid #000;
background : gray;
color : #FFF;
padding:3px;
}
table tr td{
border : 1px solid #000;
}
</style>
</head>
<body>
<?php
include "objek.php";
include "ClusteringKMean.php";
include "ClusteringKMenoid.php";
for ($i=0;$i<count($_POST[objek]);$i++){
$obj = $_POST[objek];
$data = explode(",",$obj[$i]);
for ($j=0;$j<count($data);$j++){
$objek[$i][$j] = $data[$j];
}
}
for ($i=0;$i<count($_POST[cluster]);$i++){
$cls = $_POST[cluster];
$data = explode(",",$cls[$i]);
for ($j=0;$j<count($data);$j++){
$centroid[$i][$j] = $data[$j];
}
}
/* $objek = array(array(22.21,11.64),
array(43.25,8.95),
array(19.71,10.93),
array(21.05,10.38),
array(17.93,12.85),
array(17.72,12.00),
array(18.71,11.53),
array(25.86,9.33),
array(19.15,11.80),

array(18.42,11.20),
array(22.94,10.60),
array(26.89,10.44),
array(24.91,10.63),
array(22.99,11.47),
array(26.81,9.17),
array(19.14,12.11),
array(21.09,10.67),
array(18.71,12.36),
array(20.58,10.80),
array(27.66,9.94));
$centroid = array(array(20,9),
array(23,10),
array(27,11));*/
//K-MEAN
echo "<div style='width:500px;float:left;'>
<div style='width:500px;text-align:center;paddingbottom:30px;'>K- MEAN</div>";
$clustering = new ClusteringKMean($objek, $centroid);
$clustering->setClusterObjek(1);
echo "</div>";
//K-MEAN
echo "<div style='padding-left:50px;width:500px;float:left;'>
<div style='width:500px;text-align:center;paddingbottom:30px;'>K- MENOID</div>";
$clustering = new ClusteringKMenoid($objek, $centroid);
$clustering->setClusterObjek(1);
echo "</div>";
?>
</body>
</html>

Program untuk menghubungkan program 1 dengan yang lain

<html>
<head>
<style>
body{
font-size:14px;
font-family:tahoma;
font-weight:bold;
}
button{
background: gray;
color : #FFF;
font-weight:bold;
padding:2 5 2 5px;
margin:2px;
}
table{
border : 1px solid #000;

text-align : center;
font-family:tahoma;
font-size:12px;
}
table tr th{
border : 1px solid #000;
background : gray;
color : #FFF;
padding:3px;
}
table tr td{
border : 1px solid #000;
}
</style>
<SCRIPT language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(1);
var element1 = document.createElement("input");
element1.type = "text";
cell1.appendChild(element1);
}
function Add(id){
var table=document.getElementById(id);
var clone=table.getElementsByTagName('Tbody')
[1].cloneNode(true);
table.appendChild(clone);
var rowCount = table.rows.length;
var row = table.rows[rowCount];
table.rows[rowCount-1].cells[0].innerHTML = rowCount-1;
}
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
if (rowCount>2){
table.deleteRow(rowCount-1);
rowCount--;
}
}catch(e) {
alert(e);
}
}
</SCRIPT>
</head>
<body>
<div style="width:950;text-align:center;font-weight:bold;paddingbottom:30px;">CLUSTERING DATA</div>

<form action="hasil.php" target="_BLANK" method="POST">


<div style="float:left;width:500px;">
<div style="width:500px;text-align:center;fontweight:bold;padding:10px;">DATA OBJEK</div>
<button onClick="deleteRow('data');return false;"/>Hapus
Data</button>
<button onClick="Add('data');return false;"/>Tambah Data</button><br>
<TABLE width="450px" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000066" id="data">
<tbody>
<TR>
<Th>Objek</Th>
<Th>Data</Th>
</TR>
</tbody>
<tbody>
<TR>
<TD> 1 </TD>
<TD><INPUT type="text" size="50"
name="objek[]"/></TD>
</TR>
</tbody>
</TABLE>
</div>
<div style="float:left;width:500px;">
<div style="width:500px;text-align:center;fontweight:bold;padding:10px;">DATA CLUSTER</div>
<button onClick="deleteRow('cluster');return false;"/>Hapus
Cluster</button>
<button onClick="Add('cluster');return false;"/>Tambah
Cluster</button><br>
<TABLE width="450px" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000066" id="cluster">
<tbody>
<TR>
<Th>Cluster</Th>
<Th>Centroid Awal</Th>
</TR>
</tbody>
<tbody>
<TR>
<TD> 1 </TD>
<TD><INPUT type="text" size="50"
name="cluster[]"/></TD>
</TR>
</tbody>
</TABLE>
</div>
<div style="float:left;width:950px;margin-top:50px;textalign:center;"><button type="submit">Proses</button></div>
</form>
</body>
</html>

BAB IV
KESIMPULAN
1. K-Means salah satu metode data clustering non hirarki yang berusaha
mempartisi data yang ada ke dalam bentuk satu atau lebih cluster atau
kelompok.
2. Kelebihan Algoritma K-Means diantaranya adalah mampu mengelompokkan
objek besar dan pencilan obyek dengan sangat cepat sehingga mempercepat
proses pengelompokan.
3. Kekurangan Algoritma K-Means yaitu. sangat sensitive pada pembangkitan
titik pusat awal secara random, hasil pengelompokan bersifat tidak unik
(selalu berubah-ubah) dan proses pengerjaannya cepat tetapi keakuratannya
tidak dijamin.
4. K-medoid adalah metode dimana setiap clusternya dipresentasikan dari
sebuah objek di dalam cluster yang disebut dengan medoid.
5. Kelebihan Algoritma K-Medoid adalah untuk menemukan kelompok Kcluster (jumlah cluster) diantara semua objek data di dalam sebuah kelompok
data.
6. Kekurangan Algoritma K-Medoid adalah algoritma ini menghasilkan
hard cluster, yaitu masing-masing titik secara unik diberikan
satu dan hanya satu cluster.

DAFTAR PUSTAKA

http://senosuke.wordpress.com
http://ronyld72.wordpress.com
http://rahmanhidayat3.blogspot.com
http://en.wikipedia.org

Anda mungkin juga menyukai