US Arrests with K-Means Clustering Method
--
Assalamualaikum Wr. Wb.
Hello guys, welcome back to my medium!!!
Pada kesempatan kali ini saya akan membuat artikel sederhana tentang salah satu metode unsupervised learning, yaitu k-means clustering. Kita akan berselancar dengan salah satu dataset terkenal yang disebut US arrests dataset. Jika kalian belum mengetahuinya, mari simak artikel di bawah ini!!!!
Apakah itu K-Means Clustering?
Analisis cluster merupakan teknik multivariat yang mempunyai tujuan utama untuk mengelompokkan objek-objek berdasarkan karakteristik yang dimilikinya. Analisis cluster mengklasifikasi objek sehingga objek-objek yang paling dekat kesamaanya dengan objek lain berada dalam cluster yang sama K-means cluster analysis merupakan salah satu metode analisis cluster non-hierarki yang berusaha untuk mempartisi objek yang ada kedalam satu atau lebih cluster atau kelompok objek berdasarkan karakteristiknya, sehingga objek yang mempunyai karakteristik yang sama dikelompokan dalam satu cluster yang sama dan objek yang mempunyai karakteristik yang berbeda dikelompokan ke dalam cluster yang lain. Metode K-means berusaha mengelompokkan data yang ada kedalam satu kelompok, dimana data dalam satu kelompok mempunyai karakteristik yang berbeda dengan data yang ada didalam kelompok yang lain.
Dasar algoritma K-means adalah sebagai berikut:
- Tentukan nilai k sebagai jumlah cluster yang ingin dibentuk.
- Inisialisasi k sebagai centroid yang dapat dibangkitkan secara acak.
- Hitung jarak setiap data ke masing-masing centroid menggunakan persamaan euclidean distance yaitu sebagai berikut:
- Kelompokkan setiap data berdasarkan jarak terdekat antara data dengan centroidnya.
- Tentukan posisi centroid baru (k).
- Kembali ke langkah 3, jika posisi centroid baru dengan centroid lama tidak sama.
K-means clustering memiliki asumsi-asumsi yang harus dipenuhi, yaitu:
- Sampel yang diambil harus benar-benar bisa mewakili populasi yang ada.
- Multikolinearitas, yakni kemungkinan adanya korelasi antar objek. Namun sebaiknya tidak ada, bila ada besar multikolinearitas tersebut tidaklah tinggi (misalnya di atas 0.5).
The US Arrests Dataset
US arrests dataset diperoleh dengan membangkitkan data dalam R. Dalam penangkapan per 100.000 penduduk karena penyerangan (assault), pembunuhan (murder), populasi perkotaan (urban population), dan pemerkosaan (rape) disetiap 50 negara bagian Amerika Serikat pada tahun 1973. Selain itu, juga diberikan persentase penduduk yang tinggal di daerah perkotaan.
Input Data
Selanjutnya, kita akan menggunakan US arrests dataset yang sudah tersedia di dalam R menggunakan sintaks data() dan disimpan dalam objek bernama “kmeans”.
kmeans = datasets::USArrests
View(kmeans)
Kemudian, tampilkan data menggunakan fungsi “View()” seperti sintaks di atas. Berikut data yang akan digunakan dengan banyak data sebanyak 50:
Tipe Data
Untuk mengetahui tipe data dari variabel-variabel yang akan digunakan dalam analisis gunakan fungsi “class()” dengan menggunakan sintaks sebagai berikut:
#Melihat tipe data
class(kmeans)
c(class(kmeans$Murder), class(kmeans$Assault),
class(kmeans$UrbanPop), class(kmeans$Rape))
Maka, akan muncul hasilnya sebagai berikut:
Berdasarkan hasil pada gambar 2, dapat dilihat bahwa secara keseluruhan data yang digunakan yaitu iris tergolong ke dalam data frame. Sedangkan tipe data untuk masing-masing variabel antara lain :
1. Murder : Numerik
2. Assault : Integer
3. Urban Population : Integer
4. Rape : Numerik
Data frame merupakan kerangka data yang berisi variabel yang memiliki karakteristik seperti matriks. Jadi data frame ini berbentuk seperti tabel, tipe data numerik adalah jenis data yang terdiri dari angka, yang dapat dihitung secara matematis dengan berbagai operator standar seperti penambahan, pengurangan, perkalian, dan pembagian. Sedangkan, tipe data integer adalah tipe data yang terdiri dari angka bulat (tidak mengandung nilai pecahan atau nilai desimal) dan nilai ini bisa berbentuk angka positif maupun negatif.
Statistika Deskriptif
Dari 50 US arrests dataset terdapat 4 variabel. Untuk lebih jelas, maka dapat dilakukan statistika deskriptif dari data tersebut dengan menggunakan sintaks sebagai berikut:
#Melihat ringkasan data
summary(kmeans)
Maka, akan muncul hasilnya sebagai berikut:
- Berdasarkan hasil pada gambar 3, dapat dilihat bahwa jumlah pada data minat karyawan terhadap jenis pekerjaan di sebuah perusahaan memiliki statistika deskriptif. Ada variabel pembunuh (murder) diperoleh nilai minimum atau nilai terendah sebesar 0.8, nilai kuartil 1 atau Q1 bernilai sebesar 4.075, nilai median atau nilai pertengahan diperoleh sebesar 7.25, nilai mean atau rata-rata dari data tersebut bernilai sebesar 7.788, nilai kuartil 3 atau Q3 memiliki nilai sebesar 11.25, serta nilai maksimum atau nilai tertinggi diperoleh sebesar 17.4.
- Pada variabel serangan (assault) diperoleh nilai minimum atau nilai terendah sebesar 45, nilai kuartil 1 atau Q1 bernilai sebesar 109, nilai median atau nilai pertengahan diperoleh sebesar 159, nilai mean atau rata-rata dari data tersebut bernilai sebesar 170.8, nilai kuartil 3 atau Q3 memiliki nilai sebesar 249, serta nilai maksimum atau nilai tertinggi diperoleh sebesar 337.
- Pada variabel populasi perkotaan (urban population) diperoleh nilai minimum atau nilai terendah sebesar 32, nilai kuartil 1 atau Q1 bernilai sebesar 54, nilai median atau nilai pertengahan diperoleh sebesar 66, nilai mean atau rata-rata dari data tersebut bernilai sebesar 65.54, nilai kuartil 3 atau Q3 memiliki nilai sebesar 77.75, serta nilai maksimum atau nilai tertinggi diperoleh sebesar 91.
- Pada variabel rape diperoleh nilai minimum atau nilai terendah sebesar 7.3, nilai kuartil 1 atau Q1 bernilai sebesar 15.07, nilai median atau nilai pertengahan diperoleh sebesar 20.10, nilai mean atau rata-rata dari data tersebut bernilai sebesar 21.23, nilai kuartil 3 atau Q3 memiliki nilai sebesar 26.18, serta nilai maksimum atau nilai tertinggi diperoleh sebesar 46.
Mendeteksi Data Ekstrim (Outlier)
Selanjutnya, praktikan akan mendeteksi dan pembersihan data outlier atau pencilan dari masing-masing variabel dalam data dengan menggunakan metode “adj”. Kegunaan deteksi outlier adalah mampu meningkatkan korelasi data, sehingga akan meningkatkan nilai R-Square dari data.
#Cek outlier
library(MVN)
hasildata <- mvn(kmeans, multivariateOutlierMethod = "adj", showNewData = TRUE)
kmeans_baru <- hasildata$newData
kmeans_baru
Maka, hasil output nya akan ditampilkan dalam bentuk Chi-Square QQ-Plot:
Berdasarkan hasil pada gambar 4, dapat dilihat bahwa data baru masih memiliki outlier. Hal ini dapat terlihat dari hasil pengecekan outlier dengan perintah “adj”, serta dari hasil plot. Pada keterangan di plot tertuliskan bahwa outlier (n=7), artinya terdapat 7 buah data yang outlier.
Uji Asumsi
- Uji Bartlett
Selanjutnya, praktikan membuat fungsi dari uji Bartlett untuk dilakukan pengecekan multikolinieritas dengan menggunakan variabel yang saling berkorelasi pada data. Setelah itu, melakukan uji Bartlett dengan menggunakan perintah “uji_bartlett()” sebagai berikut:
#Fungsi Bartlett
uji_bart <- function(x)
{
method <- "Bartlett's test of sphericity"
data.name <- deparse(substitute(x))
x <- subset(x, complete.cases(x))
n <- nrow(x)
p <- ncol(x)
chisq <- (1-n+(2*p+5)/6)*log(det(cor(x)))
df <- p*(p-1)/2
p.value <- pchisq(chisq, df, lower.tail=FALSE)
names(chisq) <- "Khi-squared"
names(df) <- "df"
return(structure(list(statistic=chisq, parameter=df,
p.value=p.value, method=method, data.name=data.name),
class="htest"))
}uji_bart(kmeans_baru)
Maka, akan muncul hasilnya sebagai berikut:
Kemudian, dilakukan pengujian hipotesis sebagai berikut :
- Uji Kaiser-Meyer-Olkin (KMO)
Karena asumsi tidak terpenuhi atau data tersebut terdapat multikolinieritas, maka praktikan membuat fungsi dari uji KMO. Setelah itu, memanggil uji KMO dengan menggunakan perintah “kmo()” sebagai berikut:
#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/sort(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(kmeans_baru)
Maka, akan muncul hasilnya sebagai berikut:
Berdasarkan hasil pada gambar 6, dapat di lihat nilai pengujian Kaiser-Meyer-Olkin (KMO) tetap lebih besar dari 0.5. Diperoleh nilai KMO sebesar 1.135335. Setelah uji asumsi terpenuhi, selanjutnya dilakukan analisis cluster.
K-Means Clustering
Setelah data memenuhi uji asumsi Kaiser-Meyer-Olkin, dilanjutkan standarisasi data atau menyamakan skala data pada R dengan menggunakan perintah scale(). Hasil data kmeans_baru yang telah distandarisasi di simpan ke dalam obyek bernama “kmeans_sc”. Terlebih dahulu mengaktifkan package factoextra.
#Standarisasi data
library(factoextra)
kmeans_sc = scale(kmeans_baru)
kmeans_disc <- get_dist(kmeans_sc)
Setelah dilakukan penyamaan skala data, praktikan membuat visualisasi terhadap jarak antar negara bagian (state). Untuk mendapatkan jarak ini, praktikan menggunakan perintah get_dist(kmeans_sc) dan hasilnya di simpan ke dalam obyek bernama “kmeans_disc”.
#Visualisasi jarak antar negara bagian (state)
fviz_dist(kmeans_disc, gradient=list(low="#00AFBB", mid="white", high="#FC4E07"))
Maka, hasil visualisasi jarak antar negara bagian (state) dapat dilihat pada gambar berikut:
Berdasarkan hasil visualisasi data pada gambar 7, merupakan visualisasi menghitung jarak. Beberapa negara bagian yang mempunyai kedekatan berdasarkan jarak yang cukup jauh ditunjukkan dengan warna orange yang gelap seperti Dakota, Florida, Florida-North, dan Florida-Vermont. Hubungan kedekatan yang jaraknya dekat ditunjukkan dengan warna biru, sedangkan warna putih pada hasil visualisasi menunjukkan ukuran berdasarkan jarak menengah.
Selanjutnya, dilakukan pembentukan atau pengelompokan data US arrests berdasarkan negara bagian dengan kode perulangan sebanyak 25 kali hingga mencapai hasil yang maskdimum. Pada metode non-hierarki, penentuan k atau banyaknya cluster yang terbentuk ditentukan berdasarkan peneliti. Pada artikel ini, akan dilakukan pengklasifikasian atau pengelompokan sebanyak 4 dengan data yang telah distandarisasi maupun tidak distandarisasi dengan menggunakan sintaks sebagai berikut:
#Clustering
k4 <- kmeans(kmeans_baru, centers = 4, nstart = 25)
k4_sc <- kmeans(kmeans_sc, centers = 4, nstart = 25)
fviz_cluster(k4, data = kmeans_baru)
fviz_cluster(k4_sc, data = kmeans_baru)
Maka, akan muncul hasilnya sebagai berikut:
Berdasarkan hasil cluster pada gambar 8, dapat diketahui bahwa analisis cluster data tidak distandarisasi dengan k = 4 memiliki jumlah anggota cluster terdiri dari 11, 10, 10, dan 12 yang artinya pada cluster pertama (C1) memiliki 11 negara bagian, cluster kedua (C2) memiliki 10 negara bagian, cluster ketiga (C3) memiliki 10 negara bagian, dan cluster keempat (C4) memiliki 12 negara bagian. Selain itu, juga terdapat anggota cluster merupakan hasil yang menunjukkan nama-nama per negara bagian yang sekaligus menunjukkan di cluster mana negara bagian itu masuk dan dapat dilihat bagian clustering vector. Negara bagian Alabama dan Arizona masuk ke dalam cluster pertama (C1), Kansas dan Montana masuk ke dalam cluster kedua (C2), Vermont masuk ke dalam cluster ketiga (C3), Arkansas masuk ke dalam cluster kedua (C4), dan seterusnya.
Hasil k-means memberikan persentase sum of square merupakan output dari total kemiripan anggota dari setiap cluster-nya. Pada cluster 1 memiliki tingkat kemiripan sebesar 11254.313, cluster 2 memiliki tingkat kemiripan sebesar 1480.210, cluster ketiga memiliki tingkat kemiripan sebesar 11254.313, dan cluster keempat memiliki tingkat kemiripan sebesar 7551.337. Sedangkan, untuk total tingkat kemiripan dari 4 cluster sebesar 91.2%. Berikut adalah hasil visualisasi pengelompokan cluster-nya :
Berdasarkan hasil visualisasi pengelompokan 4 cluster dengan data yang tidak distandarisasi pada gambar 9, dapat dilihat bahwa hasil masih terlihat kurang bagus. Hal ini terlihat dari cluster yang saling tumpang tindih, dan jarak poin satu cluster masih memiliki jarak yang jauh. Alasan kenapa saling tumpang tindih karena kurang memenuhi karakteristik k-means, dimana karakteristik antar kelompoknya tidak bersifat homogen, melainkan bersifat heterogen.
Kemudian, praktikan menggunakan data yang telah distandarisasi untuk melihat perbandingannya. Hasil yang diperoleh sebagai berikut:
Berdasarkan hasil cluster pada gambar 11, dapat diketahui bahwa analisis cluster dengan data telah distandarisasi dengan k = 4 memiliki jumlah anggota cluster terdiri dari 9, 17, 11, dan 16 yang artinya pada cluster pertama (C1) memiliki 9 negara bagian, cluster kedua (C2) memiliki 17 negara bagian, cluster ketiga (C3) memiliki 11 negara bagian, dan cluster keempat (C4) memiliki 16 negara bagian. Selain itu, juga terdapat anggota cluster merupakan hasil yang menunjukkan nama-nama per negara bagian yang sekaligus menunjukkan di cluster mana negara bagian itu masuk dan dapat dilihat bagian clustering vector. Negara bagian Arizona dan Florida masuk ke dalam cluster pertama (C1), Hawai masuk ke dalam cluster kedua (C2), Vermont dan Maine masuk ke dalam cluster ketiga (C3), Arkansas masuk ke dalam cluster keempat (C4), dan seterusnya.
Hasil k-means memberikan persentase sum of square merupakan hasil dari total kemiripan anggota dari setiap cluster-nya. Pada cluster 1 memiliki tingkat kemiripan sebesar 8.791028, cluster 2 memiliki tingkat kemiripan sebesar 20.172225, cluster 3 memiliki tingkat kemiripan sebesar 11.065433, dan cluster 4 memiliki tingkat kemiripan sebesar 5.133505. Sedangkan, untuk total tingkat kemiripan dari 4 cluster sebesar 73.1%. Berikut adalah hasil visualisasi pengelompokan cluster-nya :
Berdasarkan hasil visualisasi pengelompokan 4 cluster dengan data yang telah distandarisasi pada gambar 12, dapat dilihat bahwa hasil sudah cukup baik karena sudah tidak ada lagi pengelompokan antar cluster dan jarak poin dalam satu cluster tidak terlalu jauh. Dapat dikatakan bahwa karakteristik antara cluster 1, 2, 3, dan 4 bersifat heterogen, tetapi di dalamnya masing-masing cluster bersifat homogen.
Selanjutnya, membuat hasil perbandingan dari cluster yang telah dibuat (distandarisasi maupun yang tidak distandarisasi) sebagai berikut:
Kesimpulan
Berdasarkan analisis yang telah dilakukan oleh peneliti, maka dapat disimpulkan bahwa dengan jumlahan k = 4 dilakukan cluster untuk data di standarisasi dan tidak distandarisasi. Untuk data tidak distandarisasi diperoleh total tingkat kemiripan dari 4 klaster sebesar 91.2% dan hasil dari visualisasi menunjukkan bahwa saling berhimpitan. Setelah distandarisasi diperoleh total tingkat kemiripan dari 4 cluster sebesar 73.1% dan hasil dari visualisasi menunjukkan bahwa tidak saling berhimpitan.
Terimakasih teman-teman. Sekian dulu terkait tentang K-Means Cluster Analysis dari US Arrests dataset….
Maaf jika ada salah kata dan banyak kesalahan semoga bermanfaat bagi kita semua. Jangan lupa jaga kesehatan dan tetap mengikuti protokol kesehatan yaaa! Stay safe and stay healty guys!
Wassalamu’alaikum Wr. Wb.
References :
[1] Awalluddin, A. S., & Taufik, I. (2017). Analisis Cluster Data Longitudinal pada Pengelompokan Daerah Berdasarkan Indikator IPM di Jawa Barat. 978, 187–194.
[2] Ediyanto, Novitasari Mara, M., & Satyahadewi, N. (2013). Pengklasifikasian Karakteristik dengan Metode K-Means Cluster Analysis. Buletin Ilmiah Mat. Stat. Dan Terapannya (Bimaster), 02(2), 133–136.
[3] Helilintar, R., & Farida, I. N. (2018). Penerapan Algoritma K-Means Clustering untuk Prediksi Prestasi Nilai Akademik Mahasiwa. Jurnal Sains Dan Informatika, 4(2), 80.
[4] Santoso, S. (2014). Mahir Statistik Multivariat Dengan SPSS. Jakarta: PT Elek Media Komputindo.
[5] https://medium.com/@megaluna/breast-tissue-with-k-means-classification-method-369e7b28720b