Education vector created by nizovatina - www.freepik.com

Analisis Klaster

Analisis Klaster merupakan salah satu metode statistik yang bertujuan untuk memisahkan objek ke dalam beberapa klaster (kelompok data) yang mempunyai sifat :

Secara umum, analisis klaster dibagi menjadi dua yaitu 1] Hierarchical Clustering dan 2] Non Hierarchical Clustering. Perbedaan diantara kedua metode tersebut adalah pada 1] Hierarchical Clustering, jumlah klaster ditentukan kemudian dan pengelompokkan objek ke dalam klaster dilakukan secara bertahap; sedangkan pada 2] Non Hierarchical Clustering, jumlah klaster ditentukan di awal dan pengelompokkan objek ke dalam klaster dilakukan sekaligus.

Salah satu metode Non Hierarchical Clustering yang sering digunakan adalah K-Means Clustering. K-Means Clustering merupakan metode analisis klaster dimana pengguna menentukan jumlah klaster sebanyak ‘k’ yang ingin dibuatnya. Pengklasteran suatu objek didasarkan pada jarak terdekat antara objek tersebut dengan centroid/titik pusat/rata-rata suatu klaster. Cara kerja atau algoritma dari K-Means Clustering adalah sebagai berikut =

  1. Tentukan sebanyak ‘k’ klaster yang ingin dibentuk. Kemudian secara acak menempatkan sebanyak ‘k’ titik sebagai centroid awal.
  2. Alokasikan objek ke dalam klaster berdasarkan jarak ke centroid awal terdekat.
  3. Hitung centroid baru yang ada dalam klaster.
  4. Alokasikan kembali objek ke centroid baru yang terdekat.
  5. Kembali langkah 3, sampai tidak terdapat objek yang berpindah klaster atau perubahan nilai centroid.

Visualisasi dari algoritma K-Means Clustering dapat dilihat di tautan berikut : https://www.naftaliharris.com/blog/visualizing-k-means-clustering/

Contoh Kasus : Pengelompokkan Negara di ASEAN

Data yang digunakan adalah data indikator kependudukan negara-negara Asia Tenggara pada tahun 2015. Data Indikator yang tercakup hanya yang terkait dengan kelahiran dan kematian. Indikator tersebut adalah :

  1. Total Fertility Rate (TFR), yaitu rata-rata jumlah anak yang dilahirkan hidup oleh wanita pada akhir masa reproduksinya.
  2. Angka Kematian Bayi (AKB), yaitu banyaknya kematian bayi per 1000 kelahiran hidup.
  3. Angka Kematian Ibu (AKI), yaitu banyaknya kematian ibu per 100000 penduduk. Kematian ibu yang dicatat adalah kematian ibu yang terjadi pada saat kehamilan, atau selama 42 hari sejak terminasi kehamilan yang disebabkan atau diperparah oleh proses kehamilan tersebut.
  4. Angka Harapan Hidup (AHH), yaitu rata-rata tahun hidup yang masih akan dijalani oleh seseorang yang telah berhasil mencapai umur x, pada suatu tahun tertentu, dalam situasi mortalitas yang berlaku di lingkungan masyarakatnya.

Tujuan dilakukannya analisis kluster adalah untuk mengklasterkan negara-negara ASEAN berdasarkan indikator kependudukanya yang meliputi indikator kematian dan kelahiran. Indikator kematian dan kelahiran penduduk dapat digunakan untuk mengetahui kualitas kesehatan penduduk di negara-negara ASEAN.

Data yang digunakan di artikel ini dapat diunduh di tautan berikut : https://github.com/nadhifanhf/Multivariate-R/tree/master/Datasets

Load Library

library(readr)  #Membaca data
library(dplyr)  #Data processing
library(DT)     #Menampilkan tabel agar mudah dilihat di browser

Input Data

asean_data <- read_csv("asean_demografi.csv")
datatable(asean_data, caption = "Indikator Demografi Negara ASEAN 2015")

Tahapan Sebelum Analisis Klaster

Normalisasi Data

Karena data yang digunakan memiliki satuan dan rentang yang berbeda, maka perlu dilakukan standardisasi data terlebih dahulu sebelum masuk ke analisis klaster. Untuk melakukan standardisasi data ke dalam normal baku di R dapat menggunakan fungsi scale().

data_standardized <- round(scale(asean_data[,2:5]),4) #Hanya memilih kolom/variabel yang berisikan indikator kelahiran dan kematian
datatable(data_standardized, caption = "Data Hasil Standardisasi")

Menentukan jumlah klaster.

Dalam metode k-means banyaknya klaster ditentukan sendiri oleh pengguna. Maka dari itu perlu dicari jumlah klaster yang optimum yang dapat mengelompokkan objek dengan baik (Perlu diketahui bahwa metode ini relatif subjektif). Salah satu metode yang digunakan adalah Elbow Plot. Elbow Plot merupakan plot antara banyak klaster dengan total within-cluster variation (total dari simpangan per kluster). Banyak klaster yang dipilih adalah bagian “siku” atau titik dimana terdapat penurunan yang tajam sebelum titik tersebut dan disusul penurunan yang tidak tajam setelah titik tersebut. Hal ini karena penambahan jumlah klaster tidak membawa pengaruh banyak atas variasi yang ada di dalam klaster tersebut.

jumlah_klaster <- c(1:9)  #Vektor yang berisikan jumlah klaster yang ingin dilihat nilai dari total within-cluster sum of squares
within_ss <- c()  #Vektor kosong yang akan diisi nilai total within-cluster sum of squares
for (i in jumlah_klaster) {
  within_ss <- c(within_ss, kmeans(x = data_standardized, centers = i, nstart = 25)$tot.withinss)
}

plot(x = jumlah_klaster, y = within_ss, type = "b", xlab = "Number of Cluster",
     ylab = "Total Within Sum of Squares", main = "Elbow Plot")
abline(v = 4, col = 'red')

Dilihat dari Elbow Plot diatas, banyaknya klaster yang dipilih adalah 4 klaster.

Memulai Analisis Klaster

Analisis Klaster

Analisis klaster di R dapat dilakukan dengan fungsi kmeans() dan menggunakan data yang telah distandardisasi. Salah satu hal yang perlu diperhatikan ketika melakukan analisis klaster dengan mengggunakan algoritma K-Means adalah inisiasi centroid awal. Hal ini mengingat algoritma K-Means dimulai dengan menempatkan (menginisiasi) centroid awal secara acak dalam data. Akibatnya, hasil klaster yang dihasilkan dapat berbeda-beda jika hanya menggunakan sekali inisiasi. Maka dari itu, perlu dilakukan pengulangan algoritma KMeans beberapa kali dengan nilai inisiasi awal yang berbeda guna menghasilkan klaster yang optimal.

Dalam fungsi kmeans() terdapat parameter nstart yang digunakan untuk memberitahu fungsi berapa kali inisiasi awal yang pengguna inginkan. Pada contoh ini, parameter nstartakan diisi sebanyak 25 sehingga akan ada inisiasi centroid awal yang berbeda sebanyak 25 kali. Setelah itu algoritma K-Means akan memilih hasil klaster terbaik dengan nilai total within-cluster variation yang terkecil dari ke-25 inisiasi centroid awal. Total within-cluster variation yang kecil menunjukkan bahwa secara umum klaster yang terbentuk diisikan oleh observasi yang homogen atau serupa.

set.seed(123)
kmeans_clustering <- kmeans(x = data_standardized, centers = 4, nstart = 25)  #parameter nstart digunakan untuk memberitahu fungsi berapa kali inisiasi centroid awal (secara acak) yang akan dibentuk dan centers digunakan untuk memberitahu fungsi berapa jumlah klaster yang akan dibentuk.
kmeans_clustering
## K-means clustering with 4 clusters of sizes 4, 1, 2, 3
## 
## Cluster means:
##          TFR      AKB       AKI       AHH
## 1 -0.5495500 -0.67505 -0.755625  0.483425
## 2 -1.7018000 -1.09130 -1.178000  1.945000
## 3  0.6913500  1.65795  1.468150 -1.184200
## 4  0.8390667  0.15850  0.421400 -0.503400
## 
## Clustering vector:
##  [1] 1 4 4 3 1 3 4 2 1 1
## 
## Within cluster sum of squares by cluster:
## [1] 1.3354210 0.0000000 1.3512916 0.7564396
##  (between_SS / total_SS =  90.4 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Output dari fungsi kmeans() terdiri atas beberapa informasi sebagai berikut :

  • cluster : vector yang berisikan lokasi klaster tiap objek.
  • centers : matriks yang berisikan centroid/rata-rata nilai tiap klaster.
  • withinss: vektor yang berisikan simpangan tiap klaster yang terbentuk.
  • tot.withinss : total dari simpangan tiap klaster yang terbentuk. Biasa digunakan untuk membuat Elbow Plot guna mengetahui banyak klaster yang sebaiknya dipilih.
  • size : jumlah objek pada tiap klaster.

Mengembalikan Nilai Centroid

Nilai means/centroid yang termuat masih dalam nilai yang distandardisasi, maka nilainya perlu dikembalikan ke nilai awal guna diketahui karakteristik sebenarnya dari tiap klaster.

asean_data %>%
  mutate(Klaster = kmeans_clustering$cluster) %>%
  group_by(Klaster) %>%
  summarise(Mean_TFR = mean(TFR), Mean_AKB = mean(AKB), Mean_AKI = mean(AKI), Mean_AHH = mean(AHH))
## # A tibble: 4 x 5
##   Klaster Mean_TFR Mean_AKB Mean_AKI Mean_AHH
##     <int>    <dbl>    <dbl>    <dbl>    <dbl>
## 1       1     1.85     9.15     40.5     75.1
## 2       2     1.2      1.7       7.1     82.9
## 3       3     2.55    50.9     216.      66.2
## 4       4     2.63    24.1     134.      69.8

Pengelompokkan Objek ke dalam Klaster

Pengelompokkan objek ke dalam klaster yang terbentuk dapat dilihat dari output cluster.

asean_data %>%
  mutate (Klaster = kmeans_clustering$cluster) %>%
  select(Negara, Klaster) %>%
  arrange(Klaster)
## # A tibble: 10 x 2
##    Negara            Klaster
##    <chr>               <int>
##  1 Brunei Darussalam       1
##  2 Malaysia                1
##  3 Thailand                1
##  4 Vietnam                 1
##  5 Singapura               2
##  6 Laos                    3
##  7 Myanmar                 3
##  8 Kamboja                 4
##  9 Indonesia               4
## 10 Filipina                4

Interpretasi Klaster

Untuk mempermudah dalam memahami dan interpretasi, maka dibuat tabel sebagai berikut :

Dilihat dari rata-rata angka TFR, AKB, AKI, dan AHH pada masing-masing klaster, maka dapat diinterpretasikan bahwa:

  • Klaster 1 berisikan negara-negara dengan kualitas kesehatan cukup tinggi di ASEAN.
  • Klaster 2 berisikan negara dengan kualitas kesehatan tinggi di ASEAN. Hanya satu negara yang masuk dalam klaster ini, yaitu Singapura sehingga dapat dikatakan bahwa, dilihat dari segi kualitas kesehatan, Singapura jauh melampaui negara-negara lain di ASEAN.
  • Klaster 3 berisikan negara-negara dengan kualitas kesehatan rendah di ASEAN.
  • Klaster 4 berisikan negara-negara dengan kualitas kesehatan cukup rendah di ASEAN.

Referensi