yudi@upi.edu
Okt 2012
Contoh
Cluster Analysis?
• Cluster: kumpulan objek data
– Anggota cluster yang sama memiliki kemiripan satu sama lain, tetapi
berbeda dengan anggota cluster lain.
• Cluster analysis
– Menemukan kemiripan data berdasarkan karakteristik dan
mengelompokan data yang mirip ke dalam cluster.
• Unsupervised learning: class tidak ditentukan sebelumnya
• Penggunaan
– Tool untuk melihat distribusi data
– Preprocessing untuk langkah berikutnya
Aplikasi Cluster Analysis
• Pengenalan Pola
• Spatial Data Analysis
– Cluster spatial
• Pemrosesan gambar
• Economic Science (terutama market research)
• WWW
– Berita, hasil pencarian
– Cluster Weblog data to discover groups of similar access
patterns
Aplikasi clustering (lanj)
• Marketing: Membantu pihak pemasaran untuk
menentukan grup khusus dan membuat program khusus
untuk grup ini.
• Land use: Identifikasi area yang digunakan untuk hal
yang sama.
• Asuransi: Identifikasi grup yang memiliki tingkat claim
yang tinggi.
• Tata kota: Identifikasi rumah-rumah berdasrkan tipe,
harga dan lokasi.
Cluster yang berkualitas:
• Metode yang bagus akan menghasilkan:
– intra-class similarity yang tinggi (anggota di dalam kelas yang
sama mirip), memaksimalkan kemiripan dlm kelas
– low inter-class similarity (anggota di kelas yang lain, jauh
berbeda), meminimalkan kemiripan antar kelas
0
• Dissimilarity matrix d(2,1) 0
– (one mode) d(3,1) d ( 3,2) 0
: : :
d ( n,1) d ( n,2) ... ... 0
Tipe data dalam clustering
• Interval-scaled variables
• Binary variables → ada atau tidak
• Nominal, ordinal, and ratio variables
• Campuran
Interval-Scaled Variable
• Skala linear (bukan eksponensial, bukan
logaritimik)
• Positif atau negatif, pecahan atau bulat.
• Tinggi badan, berat badan, jarak dst.
• Contoh:
– jarak 50m ke 100m sama dengan jarak 150-
200.
Contoh yang bukan
interval-Scaled Variable
• skala richter
gempa
• naik satu level
= 10 kali lipat
level
sebelumnya.
http://www.sdgs.usd.edu/publications/maps/earthquakes/images/RichterScale.gif
Interval Variable
• Jika ada beberapa atribut dan punya
distribusi berbeda: perlu distandardkan.
• Buat data menjadi standard, z-score:
– Hitung mean absolute deviation:
sf = 1
n (| x1 f − m f | + | x2 f − m f | +...+ | xnf − m f |)
dimana mf = 1
n (x1 f + x2 f + ... + xnf )
.
d (i, j) = q (| x − x |q + | x − x |q +...+ | x − x |q )
i1 j1 i2 j2 ip jp
q : integer positif
• If q = 1, d is Manhattan distance
d (i, j) =| x − x | + | x − x | +...+ | x − x |
i1 j1 i2 j 2 ip jp
Interval Variable (lanj)
• Jika q = 2, d adalah Euclidean distance:
d (i, j) = (| x − x |2 + | x − x |2 +...+ | x − x |2 )
i1 j1 i2 j2 ip jp
– Properties
• d(i,j) 0
• d(i,i) = 0
• d(i,j) = d(j,i)
• d(i,j) d(i,k) + d(k,j)
d (i, j) = b+c
• Jarak untuk symmetric binary
a +b+c + d
variables:
• Jarak untuk asymmetric binary d (i, j) = b+c
variables:
a +b+c
• Jaccard coefficient (similarity
measure untuk asymmetric simJaccard (i, j) = a
a +b + c
binary variables):
Contoh
Name Gender Fever Cough Test-1 Test-2 Test-3 Test-4
Jack M Y N P N N N
Mary F Y N P N P N
Jim M Y P N N N N
p
d (i, j) = p− m
pf = 1 ij( f ) dij( f )
d (i, j) =
pf = 1 ij( f )
Pendekatan Clustering
• Partisi :
– Buat partisi dan evaluasi berdasarkan kriteria tertentu, misalnya
meminimalkan sum of square errors
– Metode: k-means, k-medoids, CLARANS
• Hirarkis:
– Buat struktur hierarchical menggunakan kriteria tertentu
– Metode: Diana, Agnes, BIRCH, ROCK, CAMELEON
• Density-based :
– Berdasarkan connectivity dan density functions
– Metode: DBSACN, OPTICS, DenClue
• Yang lain: Grid-based approach, model-based, frequent pattern-based,
user-guided or constraint-based:
Jarak antar cluster
• Single link: jarak terpendek antar elemen di dua cluster dis(Ki,
Kj) = min(tip, tjq)
A1 → cluster A
d ( A1, A) = (| 2 − 2 | + |10 − 5|
2 2
d ( A1, A) = 5
A3 → cluster A, d(A3,A) =
B1 → cluster A, d(B1,A) =
B3 → cluster A, d(B3,A) =
C1 → cluster A, d(C1,A) =
Contoh K-Means:
10 10
10
9 9
9
8 8
8
7 7
7
6 6
6
5 5
5
4 4
4
Assign 3 Update 3
the
3
each
2 2
2
1
objects
1
0
cluster 1
0
0
0 1 2 3 4 5 6 7 8 9 10 to most
0 1 2 3 4 5 6 7 8 9 10 means 0 1 2 3 4 5 6 7 8 9 10
similar
center reassign reassign
10 10
K=2 9 9
8 8
Arbitrarily choose K 7 7
object as initial
6 6
5 5
2
the 3
1 cluster 1
0
0 1 2 3 4 5 6 7 8 9 10
means 0
0 1 2 3 4 5 6 7 8 9 10
Clustering Kmeans
Review : Definisi Clustering
• Metode untuk menemukan kelompok pada
data berdasarkan kriteria tertentu.
K‐Means
• K‐Means clustering adalah metode untuk
mengelompokkan item ke dalam k kelomopk
(dimana k adalah jumlah kelompok yang
diinginkan).
• Kelompok/cluster dibentuk dengan
meminimalkan jumlah dari Euclidean distances)
diantara data dengan titik pusat (centroid) yang
berkorespondensi.
• Centroid adalah titik pusat data, dalam hal ini kita
mengasumsikan rata‐rata vector sebagai
centroid.
Ilustrasi K‐Means
• Titik hitam menyatakan data. Garis merah menyatakan
partisi/pemisah. Titik biru merepresentasikan titik pusat (centroid)
yang mendefinisikan suatu partisi
Inisialisasi titik pusat (centroid)
• Inisialisasi centroid dapat dilakukan dengan beberapa cara,
contohnya 3 cara berikut:
– Dipilih secara dinamik: Metode ini tepat digunakan jika data
baru ditambahkan secara cepat dan banyak. Untuk
menyederhanakan persoalan, inisial cluster dipilih dari
beberapa data baru, misal jika data dikelompokkan menjadi 3
clusters, maka inisial cluster berarti 3 item pertama dari data.
– Dipilih secara random: Paling banyak digunakan, dimana inisial
cluster dipilih secara random dengan range data antara nilai
terendah sampai nilai tertinggi..
– Memilih dari batasan nilai tinggi dan rendah: tergantung pada
tipe datanya, nilai data tertinggi dan terendah dipilih sebagai
inisial cluster. Contoh berikut menggunakan metode ini.
Kelemahan K‐Means
• Jumlah cluster (k) harus ditentukan terlebih dahulu.
• Jika sampel data terlalu sedikit, hasilnya menjadi tidak akurat.
• Kita tidak pernah tahu independent variable yang berkontribusi
lebih terhadap proses clustering karena setiap variable diasumsikan
memiliki bobot yang sama.
• Jika terdapat outlier, maka hasilnya akan berpengaruh secara
signifikan sehingga tidak lagi akurat.
• Solusi yang bisa dilakukan:
• Melibatkan data sebanyak mungkin (semakin banyak data, maka
hasilnya akan semakin akurat)
• Untuk menghindari distorsi yang disebabkan oleh outlier, maka
digunakan nilai median, bukan nilai rata‐rata
Contoh K‐Means, step by step
• Berikut ini akan diilustrasikan metode K‐
means untuk mengelompokkan data berikut:
Inisialisasi centroid
• Data ini dikelompokkan ke dalam dua cluster.
Misal A & B adalah data yang memiliki jarak
yang paling jauh (euclidean distance), maka
kita dapatkan data 1 dan data 4 sebagai
inisialisasi centroid:
Menghitung jarak dari data yang lain
ke centroid
• Data yang lain dihitung jaraknya ke dua
centroid tadi.
iterasi1
Subject A B Cluster1 Cluster2
1 1.0 1.0 0 7.211103
2 1.5 2.0 1.118034 6.103278
3 3.0 4.0 3.605551 3.605551
4 5.0 7.0 7.211103 0
5 3.5 5.0 4.716991 2.5
6 4.5 5.0 5.315073 2.061553
7 3.5 4.5 4.301163 2.915476
• Contoh perhitungan:
• 1.118034=sqrt((1.5‐1.0)2+(2.0‐1.0)2)
Membandingkan jarak ke centroid dari
tiap cluster
• Dibandingkan jarak ke centroid dari tiap cluster, dicari yang
terpendek untuk menjadi anggota dari cluster tersebut.
iterasi1
Subject A B Cluster1 Cluster2
1 1.0 1.0 0 7.211103
2 1.5 2.0 1.118034 6.103278
3 3.0 4.0 3.605551 3.605551
4 5.0 7.0 7.211103 0
5 3.5 5.0 4.716991 2.5
6 4.5 5.0 5.315073 2.061553
7 3.5 4.5 4.301163 2.915476
• Contoh: perhatikan data‐2 (1.5,2.0), karena 1.118034 (jarak dengan
cluster1) < 6.103278 (jarak dengan cluster 2) maka data‐2 termasuk
dalam cluster1.
Mencari titik centroid yang baru
• Untuk mencari titik centroid yang baru, kita
perhatikan, keanggotaan dari tiap cluster.
• Cluster1 terdiri dari data: ((1,1),(1.5,2),(3,4))
maka titik centroid dari cluster1 ini ada di :
– X = (1+1.5+3)/3 =1.83333
– Y = (1+2+4)/3= 2.33333
• Sehingga kita dapatkan titik centroid yang
baru sebagai berikut:
centroid1 1.833333 2.333333
centroid2 4.125 5.375
Program MATLAB untuk clustering
KMeans
• Proses awal / Inisialisasi KMeans
• [ndata, text, alldata]=xlsread('datakmeans.xlsx');
• % dapatkan ukuran data (data size)
• [xx yy]=size(ndata)
•
• % mengambil data mulai kolom ke 2
• ndata=ndata(:,2:yy)
•
• %# tentukan inisialisasi centroid: cluster1 = data1 (1,1)
• % cluster2 =data4 (5,7)
• centroid(1,:)=ndata(1,:)
• centroid(2,:)=ndata(4,:)
Program MATLAB untuk clustering
KMeans
• Kita lakukan proses iterasi sampai kondisi
penghentian terpenuhi
• Kondisi penghentian berarti: antara centroid lama
dengan centroid baru nilainya mendekati atau sama
dengan nol.
• Iterasi yang dipakai misal:
• While (1)
• if kondisi
• break;
• End;
Program MATLAB untuk clustering
KMeans
• Proses yang dilakukan pada body of loop
(setiap iterasi), meliputi:
1. Menghitung jarak semua data ke centroid yang ada
2. Kita bandingkan jarak antara centroid1 dengan
centroid2 dan tempatkan data pada cluster yang
memiliki jarak terdekat ke centroid ybs.
3. hitung centroid yang baru berdasarkan anggota yang ada
di setiap cluster
4. periksa apakah sudah memenuhi kondisi penghentian.
Jika terpenuhi, maka keluar dari looping, jika tidak maka
kembali ke proses nomer 1.
Program MATLAB untuk clustering
KMeans
Menghitung jarak semua data ke centroid yang ada
• for i=1:xx,
• for j=1:2,
• % jarak antara data ke ‐ i dengan centroid ke j
• jumlah=0;
• for z=1:yy‐1,
• jumlah=jumlah+(ndata(i,z)‐centroid(j,z))^2;
• end;
• jarak(i,j)=sqrt(jumlah);
• end;
• end;
• jarak
Program MATLAB untuk clustering
KMeans
Kita bandingkan jarak antara centroid1 dengan centroid2 dan tempatkan
data pada cluster yang memiliki jarak terdekat ke centroid ybs.
–for i=1:xx,
– if (jarak(i,1)<=jarak(i,2))
– cluster(i,1)=1;
– else
– cluster(i,1)=2;
– end;
– end;
– cluster
–
Program MATLAB untuk clustering
KMeans
• hitung centroid yang baru berdasarkan anggota yang
ada di setiap cluster
– % hitung centroid yang baru berdasarkan anggota yang ada di setiap cluster
– centroid_baru=zeros(2,2);
– n1=0;
– n2=0;
– for i=1:xx,
– if (cluster(i,1)==1)
– for j=1:yy‐1,
– centroid_baru(1,j)=centroid_baru(1,j)+ndata(i,j);
–
– end;
– n1=n1+1;
– else
– for j=1:yy‐1,
– centroid_baru(2,j)=centroid_baru(2,j)+ndata(i,j);
–
– end;
– n2=n2+1;
– end;
– end;
– for i=1:yy‐1,
– centroid_baru(1,i)=centroid_baru(1,i)/n1;
– centroid_baru(2,i)=centroid_baru(2,i)/n2;
– end;
– % menampilkan centroid yang baru
Program MATLAB untuk clustering
KMeans
• periksa apakah sudah memenuhi kondisi penghentian. Jika terpenuhi, maka keluar dari looping, jika tidak
maka kembali ke proses nomer 1.
• % periksa apakah sudah memenuhi kondisi penghentian
• selisih1=0;
• selisih2=0;
• for i=1:yy‐1,
• selisih1=selisih1+(centroid(1,i)‐centroid_baru(1,i))*(centroid(1,i)‐centroid_baru(1,i));
• selisih2=selisih2+(centroid(2,i)‐centroid_baru(2,i))*(centroid(2,i)‐centroid_baru(2,i));
• end;
• selisih1=sqrt(selisih1);
• selisih2=sqrt(selisih2);
• if (selisih1<0.000000001 && selisih2<0.000000001)
• break;
• else
• % jika tidak, update nilai centroid
• for i=1:yy‐1,
• centroid(1,i)=centroid_baru(1,i);
• centroid(2,i)=centroid_baru(2,i);
• end;
• end;