K-Means Clustering

Reza Hartono
5 min readJul 24, 2020

--

Pada kesempatan kali ini, saya akan mencoba untuk mempraktekkan Cluster Analysis dengan metode K-Means. Penjelasan terkait K-Means bisa di akses di sini.

Dalam analisis cluster yang akan saya lakukan di sini akan menggunakan data yang di dapatkan di tempat kerja praktik saya, yakni di Dinas Komunikasi dan Informatika Kota Bandung. Data ini adalah Survei Persepsi Masyarakat Kota Bandung Tahun 2019.

Kita harus meng-install package terlebih dahulu. Bisa menggunakan sintaks berikut :

## analisis cluster non hierarki - K means##
library(factoextra)
library(gridExtra)

Pertama kita akan melakukan analisis deskriptif pada data tersebut dengan menggunakan perintah :

#input data
data = read.delim("clipboard")
data
summary(data)

Setelah itu, sebelum lanjut dalam analisis klaster, ada asumsi yang harus terpenuhi, yakni data tidak terjadi multikolinearitas. Untuk pengecekan bisa menggunakan sintaks berikut :

cor(data1)#Fungsi KMO
kmo <- function (x){
x <- subset (x, complete.cases(x))
r <- cor (x)
r2 <- r^2
i <- solve (r)
d <- diag (i)
p2 <- (-i/sqrt(outer(d,d)))^2
diag(r2) <- diag(p2) <- 0
KMO <- sum(r2)/(sum(r2)+sum(p2))
MSA <- colSums(r2)/(colSums(r2)+colSums(p2))
return(list(KMO=KMO, MSA=MSA)) }
kmo(data1)

Dalam studi kasus kali ini, terlihat bahwa nilai KMO sebesar 0.6398131 yang menunjukan bahwa data tersebut tidak terjadi multikolinearitas karena kurang dari 0.7 .

Penentuan K secara Random

#kmeans clustering with k random
klaster <- kmeans(data1, centers=2, nstart = 25)

Dari Output tersebut dapat dilihat bahwa kluster = 2 tidak terdapat tumpang tindih pada gambar.

Metode Elbow

Metode Elbow merupakan suatu metode yang digunakan untuk menghasilkan informasi dalam menentukan jumlah cluster terbaik dengan cara melihat persentase hasil perbandingan antara jumlah cluster yang akan membentuk siku pada suatu titik.

fviz_nbclust(data1, kmeans, method = "wss")
fviz_nbclust(data1, kmeans, method = "silhouette")

Metode wss

Gambar diatas merupakan hasil penentuan kuster menggunakan metode elbow dengan nilai total wss (whitin sum square) sebagai penentu k optimalnya. Dari gambar keluaran diatas, garis mengalami patahan yang membentuk elbow atau siku pada saat k = 2. Maka dengan menggunakan metode ini diperoleh k optimal pada saat berada di k = 2.

Metode Sillhoute

Silhouette Coefficient digunakan untuk melihat kualitas dan kekuatan cluster seberapa baik suatu objek ditempatkan dalam suatu cluster. Metode ini merupakan gabungan dari metode cohesion dan separation.

fviz_nbclust(data1, kmeans, method = "silhouette")

Kemudian, kita akan menggunakan scalling data . sintaksnya sebagai berikut :

sapply(data1,var)
rge<-sapply(data1, function(x)diff(range(x)))
data1 <- sweep(data1, 2, rge, FUN ="/")
sapply(data1, var)

Hasil Scalling Data

Gambar diatas merupakan output scalling dari data. Untuk variabel kemacetan diperoleh hasil scalling sebesar 0.04157474, variabel sampah sebesar 0.07303797, variabel banjir sebesar 0.06556800, varibael lapangan kerja sebesar 0.06380989, dan variabel ketersediaan air bersih sebesar 0.07095780.

Setelah itu, kita melakukan perhitungan korelasi jarak.

#correlation distance
library(factoextra)
distance <- get_dist(data1) #jarak antara obyek yang satu dengan yang
distance
fviz_dist(distance, gradient=list(low="green", mid="white", hight="red"))

Hasil diatas merupakan heat map yang digunakan untuk memvisualisasikan data berdasarkan jaraknya. Warna pada gambar menunjukkan semakin merah warnanya maka jarak yang dihasilkan semakin jauh, dan semakin hijau warnanya jarak yang dihasilkan semakin dekat.

Nah kemudian untuk hasil klaster itu sendiri seperti berikut :

Hasil Cluster

Dari gambar di atas terlihat bahwa kelompok 1 memiliki anggota sebanyak 17 kecamatan, dan kelompok 2 sebanyak 13 kecamatan.

Kemudian, untuk merepresentasikan karakteristik tiap cluster dapat menggunakan acuan nilai means tiap kelompok yang terbentuk.

Profiliasi

Berdasarkan gambar di atas, dapat di ketahui rata — rata pada masing — masing cluster K-Means, dapat di interpretasikan sebagai berikut :

  • Cluster 1 : memiliki anggota 17 kecamatan, dimana cluster pertama memiliki rata — rata masalah kemacetan, sampah, dan lapangan pekerjaan yang paling tinggi (dilihat berdasarkan nilai rata — ratanya). Meskipun tidak menutup kemungkinan 2 masalah lain terjadi tetapi tidak terlalu menjadi prioritas masalah dalam cluster 1.
  • Cluster 2 : memiliki anggota 13 kecamatan, dimana cluster kedua memiliki rata — rata masalah banjir, dan ketersediaan air bersih yang paling tinggi (dilihat berdasarkan nilai rata — ratanya). Akan tetapi tidak menutup kemungkinan 3 masalah lainnya terjadi tetapi tidak terlalu menjadi prioritas masalah dalam cluster 2.

Setelah itu, saya melakukan mapping untuk mengetahui tiap — tiap daerah

Mapping

Dari gambar di atas, cluster 1 dengan warna merah merupakan kecamatan dengan masalah utama yakni kemacetan, sampah dan lapangan pekerjaan yang paling tinggi, meskipun 2 masalah yang lain kemungkinan terjadi akan tetapi tidak terlalu bermasalah untuk cluster tersebut. Sedangkan di cluster 2 dengan warna hijau merupakan kecamatan dengan masalah utama yakni banjir dan ketersediaan air bersih yang paling tinggi, meskipun 3 masalah yang lain kemungkinan terjadi akan tetapi tidak terlalu bermasalah untuk cluster tersebut.

Oke, mungkin di cukupkan sampai di sini terlebih dahulu.

Terima kasih kepada teman — teman yang sudah bersedia membaca dan jangan lupa berikan your claps yo!

References :

K-Means Clustering Swiss Dataset With R

K-means merupakan salah satu algoritma clustering. Tujuan algoritma ini yaitu untuk membagi data menjadi beberapa…

medium.com

K-Means Clustering Part 1 (Tanpa Scalling Data)

K-means merupakan metode analisis klaster non-hirarki yang dimulai dengan menentukan terlebih dahulu jumlah kluster…

medium.com

10

--

--