1. Pendahuluan

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:

  • \(k\) merupakan jumlah cluster
  • \(C_i\) merupakan himpunan data pada cluster ke-i
  • \(\mu_i\) merupakan centroid atau pusat cluster ke-i

Tujuan dari algoritma ini adalah meminimalkan jarak antara data dengan centroid cluster tempat data tersebut berada.


2. Persiapan Data

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.


3. Uji Asumsi Multikolinearitas

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.

cor_matrix <- cor(df)

chart.Correlation(df, histogram=TRUE, pch=19)

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.


4. Standarisasi Data

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:

  • \(x\) adalah nilai data
  • \(\mu\) adalah rata-rata variabel
  • \(\sigma\) adalah standar deviasi variabel
df_scaled <- scale(df)

head(df_scaled)

5. Penentuan Jumlah Cluster Optimal

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:

  • Nilai mendekati 1 menunjukkan bahwa objek berada pada cluster yang tepat
  • Nilai mendekati 0 menunjukkan objek berada di batas antar cluster
  • Nilai negatif menunjukkan kemungkinan objek berada pada cluster yang kurang tepat
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.


6. Analisis K-Means Clustering

Berdasarkan hasil analisis sebelumnya, ditentukan jumlah cluster yang digunakan dalam penelitian ini adalah k = 2.

set.seed(123)

k_target <- 2

final_km <- kmeans(df_scaled, centers=k_target, nstart=25)

7. Visualisasi Cluster Menggunakan PCA

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.


8. Profiling Karakteristik Cluster

Setelah proses clustering dilakukan, langkah selanjutnya adalah melakukan profiling cluster untuk mengetahui karakteristik masing-masing kelompok.

Profil Rata-rata Karakteristik Tiap Cluster
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"

9. Interpretasi Hasil Cluster

## ### 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.