Clustering merupakan salah satu metode dalam analisis data yang digunakan untuk mengelompokkan objek berdasarkan kemiripan karakteristiknya. Metode ini termasuk dalam kategori unsupervised learning, karena tidak menggunakan variabel target dalam proses pengelompokannya.
Salah satu metode clustering yang paling banyak digunakan adalah K-Means Clustering. Metode ini bekerja dengan membagi sejumlah data ke dalam beberapa kelompok (cluster) sehingga objek dalam satu cluster memiliki tingkat kemiripan yang tinggi, sedangkan objek pada cluster yang berbeda memiliki tingkat kemiripan yang rendah.
Dalam penelitian ini, metode K-Means digunakan untuk mengelompokkan Kabupaten/Kota berdasarkan beberapa indikator yang berkaitan dengan kondisi kriminalitas dan karakteristik wilayah.
Secara matematis, K-Means meminimalkan fungsi Within Cluster Sum of Squares (WCSS) sebagai berikut:
\[ J = \sum_{i=1}^{k} \sum_{x \in C_i} ||x - \mu_i||^2 \]
di mana:
Tujuan dari algoritma ini adalah meminimalkan jarak antara data dengan centroid cluster tempat data tersebut berada.
Data yang digunakan dalam analisis ini merupakan data kriminalitas dan karakteristik demografis dari berbagai Kabupaten/Kota.
data_raw <- read.csv("C://Users//user//Downloads//Data.csv", sep=";")
df <- data_raw %>%
remove_rownames() %>%
column_to_rownames(var="Kabupaten.Kota")
summary(df)## Jumlah.Kejahatan Persentase.Penyelesaian.Kasus
## Min. : 63.0 Min. :0.2900
## 1st Qu.: 112.0 1st Qu.:0.6700
## Median : 150.0 Median :0.7900
## Mean : 192.6 Mean :0.7497
## 3rd Qu.: 210.5 3rd Qu.:0.8500
## Max. :1153.0 Max. :0.9200
## Tingkat.Pengangguran.Terbuka.Pemuda Kepadatan.Penduduk
## Min. :0.06300 Min. : 464
## 1st Qu.:0.08925 1st Qu.: 933
## Median :0.10520 Median : 1185
## Mean :0.11451 Mean : 2082
## 3rd Qu.:0.13080 3rd Qu.: 1776
## Max. :0.20960 Max. :11302
Interpretasi
Berdasarkan hasil ringkasan statistik data, dapat diketahui gambaran umum mengenai distribusi masing-masing variabel yang digunakan dalam analisis clustering.
Variabel Jumlah Kejahatan memiliki nilai minimum sebesar 63 kasus dan nilai maksimum sebesar 1153 kasus. Nilai rata-rata jumlah kejahatan adalah sekitar 192,6 kasus dengan median sebesar 150 kasus. Perbedaan yang cukup besar antara nilai maksimum dan median menunjukkan bahwa terdapat beberapa wilayah dengan jumlah kejahatan yang jauh lebih tinggi dibandingkan wilayah lainnya, sehingga distribusi data pada variabel ini cenderung tidak merata.
Variabel Persentase Penyelesaian Kasus memiliki nilai minimum sebesar 0,29 dan maksimum sebesar 0,92. Nilai rata-ratanya sebesar 0,7497 dengan median 0,79. Hal ini menunjukkan bahwa secara umum tingkat penyelesaian kasus di sebagian besar wilayah berada pada kisaran 70% hingga 80%, yang menandakan bahwa sebagian besar kasus kriminalitas berhasil diselesaikan oleh aparat penegak hukum.
Pada variabel Tingkat Pengangguran Terbuka Pemuda, nilai minimum tercatat sebesar 0,063 dan nilai maksimum sebesar 0,2096. Nilai rata-rata sebesar 0,1145 menunjukkan bahwa secara umum tingkat pengangguran pemuda berada pada kisaran 11%. Variasi nilai yang cukup terlihat dari rentang minimum hingga maksimum menunjukkan adanya perbedaan kondisi pasar kerja pemuda di setiap wilayah.
Sementara itu, variabel Kepadatan Penduduk memiliki nilai minimum sebesar 464 jiwa per kilometer persegi dan nilai maksimum sebesar 11.302 jiwa per kilometer persegi. Nilai rata-ratanya sebesar 2.082 jiwa per kilometer persegi dengan median sebesar 1.185. Perbedaan yang cukup besar antara nilai maksimum dan median menunjukkan bahwa terdapat beberapa wilayah dengan tingkat kepadatan penduduk yang sangat tinggi dibandingkan wilayah lainnya.
Dalam metode K-Means, jarak antar objek dihitung menggunakan jarak Euclidean. Apabila terdapat variabel yang memiliki korelasi sangat tinggi, maka informasi yang diberikan oleh variabel tersebut menjadi redundant dan dapat memberikan bobot berlebih dalam perhitungan jarak.
Oleh karena itu, dilakukan analisis korelasi antar variabel untuk mendeteksi adanya multikolinearitas.
Interpretasi
Berdasarkan matriks korelasi yang dihasilkan, diperoleh bahwa semua variabel memiliki korelasi satu sama lain pada rentang korelasi |r| < 0.8 sehingga disimpulkan bahwa tidak ada redundansi antar variabel atau tidak ada variabel yang membawa informasi yang sama.
Metode K-Means sangat sensitif terhadap perbedaan skala antar variabel. Variabel dengan nilai yang lebih besar dapat mendominasi perhitungan jarak sehingga mempengaruhi hasil pengelompokan.
Untuk mengatasi hal tersebut, dilakukan proses standarisasi data menggunakan Z-score, dengan rumus:
\[ z = \frac{x - \mu}{\sigma} \]
di mana:
Salah satu langkah penting dalam analisis clustering adalah menentukan jumlah cluster yang paling optimal. Pada penelitian ini digunakan metode Silhouette.
Nilai silhouette berada pada rentang -1 hingga 1:
silhouette_scores <- c()
k_range <- 2:10
for(k in k_range){
km <- kmeans(df_scaled, centers=k, nstart=25)
sil <- silhouette(km$cluster, dist(df_scaled))
silhouette_scores <- c(silhouette_scores, mean(sil[,3]))
}
sil_df <- data.frame(
k = k_range,
silhouette = silhouette_scores
)
ggplot(sil_df, aes(k, silhouette)) +
geom_line() +
geom_point(size=3) +
labs(
title="Metode Silhouette untuk Menentukan Jumlah Cluster",
x="Jumlah Cluster",
y="Nilai Rata-rata Silhouette"
) +
theme_minimal()Interpretasi
Grafik di atas menunjukkan nilai rata-rata silhouette untuk berbagai jumlah cluster. Jumlah cluster yang memiliki nilai silhouette paling tinggi adalah pengelompokan dengan 2 cluster sehingga k=2 digunakan untuk analisis K-Means Clustering.
Berdasarkan hasil analisis sebelumnya, ditentukan jumlah cluster yang digunakan dalam penelitian ini adalah k = 2.
Untuk memudahkan interpretasi hasil clustering, data direduksi menjadi dua dimensi menggunakan Principal Component Analysis (PCA).
pca <- prcomp(df_scaled)
pca_df <- data.frame(
PC1 = pca$x[,1],
PC2 = pca$x[,2],
Cluster = as.factor(final_km$cluster)
)
ggplot(pca_df, aes(PC1, PC2, color=Cluster)) +
geom_point(size=3) +
labs(
title="Visualisasi Hasil Clustering Menggunakan PCA",
x="Principal Component 1",
y="Principal Component 2"
) +
theme_minimal()Interpretasi
Grafik di atas menunjukkan persebaran Kabupaten/Kota dalam ruang dua dimensi berdasarkan hasil reduksi PCA. Setiap warna menunjukkan cluster yang berbeda. Pemisahan antar kelompok pada grafik menunjukkan bahwa data berhasil dikelompokkan berdasarkan kemiripan karakteristiknya.
Setelah proses clustering dilakukan, langkah selanjutnya adalah melakukan profiling cluster untuk mengetahui karakteristik masing-masing kelompok.
| Cluster | Jumlah_Wilayah | Rata_Kejahatan | Rata_Penyelesaian | Rata_Pengangguran | Rata_Kepadatan |
|---|---|---|---|---|---|
| 1 | 6 | 352.67 | 0.62 | 0.10 | 6438.83 |
| 2 | 29 | 159.52 | 0.78 | 0.12 | 1181.00 |
## $`1`
## [1] "Kabupaten Klaten" "Kota Magelang" "Kota Surakarta" "Kota Semarang"
## [5] "Kota Pekalongan" "Kota Tegal"
##
## $`2`
## [1] "Kabupaten Cilacap" "Kabupaten Banyumas" "Kabupaten Purbalingga"
## [4] "Kabupaten Banjarnegara" "Kabupaten Kebumen" "Kabupaten Purworejo"
## [7] "Kabupaten Wonosobo" "Kabupaten Magelang" "Kabupaten Boyolali"
## [10] "Kabupaten Sukoharjo" "Kabupaten Wonogiri" "Kabupaten Karanganyar"
## [13] "Kabupaten Sragen" "Kabupaten Grobogan" "Kabupaten Blora"
## [16] "Kabupaten Rembang" "Kabupaten Pati" "Kabupaten Kudus"
## [19] "Kabupaten Jepara" "Kabupaten Demak" "Kabupaten Semarang"
## [22] "Kabupaten Temanggung" "Kabupaten Kendal" "Kabupaten Batang"
## [25] "Kabupaten Pekalongan" "Kabupaten Pemalang" "Kabupaten Tegal"
## [28] "Kabupaten Brebes" "Kota Salatiga"
## ### Cluster 1
## Cluster ini terdiri dari 6 wilayah. Wilayah dalam cluster ini memiliki tingkat kejahatan yang relatif lebih tinggi dibandingkan rata-rata keseluruhan wilayah.
##
## ### Cluster 2
## Cluster ini terdiri dari 29 wilayah. Wilayah dalam cluster ini memiliki tingkat kejahatan yang relatif lebih rendah dibandingkan rata-rata keseluruhan wilayah. Selain itu, cluster ini juga memiliki tingkat pengangguran pemuda yang berada di atas rata-rata.