Analisis Gerombol / Cluster Analysis

Pendahuluan

Analisis gerombol (cluster analysis) adalah sebuah teknik statistik yang digunakan untuk mengelompokkan objek atau data ke dalam kelompok-kelompok (gerombol atau cluster) berdasarkan kesamaan karakteristik atau atribut tertentu yang diperoleh dari peubah-peubah penciri yang ada. Tujuan utama dari penggerombolan adalah untuk mengidentifikasi pola atau struktur dalam data yang memungkinkan objek-objek dalam kelompok memiliki kesamaan yang tinggi dan sebaliknya memiliki perbedaan yang tinggi antara kelompok-kelompok yang berbeda.

Konsep dasar dalam penggerombolan adalah mengukur sejauh mana objek-objek dalam data mirip satu sama lain menggunakan dengan ukuran kesamaan atau jarak. Ukuran ini dapat berbeda tergantung pada metode pengelompokan yang digunakan. Jarak antara 2 objek a dan b dinotasikan dengan d(a,b), di mana:

  • Jarak 2 objek yang berbeda tidak mungkin bernilai negatif (d(a,b) ≥ 0)
  • Jarak 2 objek yang sama bernilai nol (d(a,a) = 0)
  • Jarak 2 objek bersifat komutatif (d(a,b) = d(b,a))
  • Jarak 2 objek berbanding terbalik dengan kemiripannya (semakin kecil keduanya, semakin mirip)
  • Jarak bersifat aditif (d(a,c) ≤ d(a,b) + d(b,c))

Beberapa konsep jarak yang sering dipakai antara lain:

  • Jarak Euclidean : mengukur jarak antara dua titik berdimensi p, di mana biasanya digunakan ketika data berdimensi rendah.

    \(d(a,b) = \sqrt{\sum_{i=1}^p{(a_i - b_i)^2}}\)

  • Jarak Manhattan : dikenal sebagai jarak L1, jarak taksi, atau jarak city-block, mengukur jarak antara dua titik sebagai jumlah perpindahan vertikal dan horizontal yang diperlukan untuk bergerak dari satu titik ke titik lainnya. Jika ingin mengurangi dampak pencilan pada data, maka jarak ini dapat dipilih.

    \(d(a,b) = \sum_{i=1}^p{|a_i - b_i|}\)

  • Jarak Chebyshev : mengukur jarak maksimum antara dua titik dalam semua dimensi.

    \(d(a,b) = (\max_{i=1}^p{|a_i - b_i|})\)

  • Jarak Minkowski : merupakan generalisasi dari jarak Euclidean dan Manhattan.

    \(d(a,b) = (\sum_{i=1}^p{|a_i - b_i|^p})^{1/p}\)

  • Jarak Hamming : Jarak Hamming digunakan untuk data kategorikal atau biner. Ini menghitung jumlah atribut yang berbeda antara dua objek. Jarak Hamming biasanya digunakan dalam pengelompokan data seperti data teks atau data genetik.

  • Jarak Mahalanobis : mempertimbangkan kovariabilitas antara peubah, di mana jarak ini berguna saat peuabah-peubahnya saling berkorelasi.

    \(d(a,b) = \sqrt{(\mathbf{a} - \mathbf{b})' \mathbf{S}^{-1}(\mathbf{a} - \mathbf{b})}\)

Ada tiga jenis teknik penggerombolan, sebagai berikut:

  • Metode grafik (sangat subjektif)
  • Metode hierarki / hierarchical clustering (proses mengelompokkan objek atau data ke dalam hierarki atau pohon berjenjang (dendogram)). Terdapat dua jenis metode ini antara lain: agglomerative dan divisive clustering.
  • Metode non-hierarki / non-hierarchical clustering (proses mengelompokkan objek dalam satu tingkat tanpa hierarki atau struktur pohon). Beberapa contoh metode ini antara lain: K-Means, K-Medoids, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), dan lain-lain.

K-Means Clustering

K-Means adalah salah satu metode pengelompokan yang paling populer. Tujuannya adalah membagi objek ke dalam k gerombol yang telah ditentukan sebelumnya, di mana k adalah jumlah gerombol yang diinginkan. Algoritma K-Means mencari pusat (centroid) kelompok yang optimal dengan cara mengoptimalkan jarak rata-rata antara anggota kelompok dan pusat kelompok. Objek-objek kemudian ditempatkan dalam kelompok terdekat (berdasarkan jarak Euclidean atau metrik jarak lainnya) ke pusat kelompok. Kelebihan metode ini adalah efisiensi dan kemudahannya.

K-Means rentan terhadap kehadiran outlier, yang dapat memengaruhi lokasi pusat kelompok. Untuk mengatasi ini, mungkin perlu mengidentifikasi dan mengatasi outlier sebelum atau setelah menjalankan K-Means. K-Means dilakukan dengan mengikuti prosedur berikut:

  1. Pre-processing data
  2. Memilih banyaknya gerombol
  3. Menerapkan K-Means
  4. Interprestasi gerombol yang terbentuk

Menyiapkan Package

#install.packages("factoextra")
library("factoextra")
## Warning: package 'factoextra' was built under R version 4.3.2
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

Menyiapkan Data

library(readxl)
data_mall <- read_excel("D:/Kuliah S1 Statistika/Semester 5/TPG/data UAS_APG_2023.xlsx")
head(data_mall)
## # A tibble: 6 × 11
##      No `Kab/Kota`       SI    SP   SKL   SPT   SSP   SPL    SB   SPN Akreditasi
##   <dbl> <chr>         <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>     
## 1     1 Kabupaten Ba… 100   100      79  92.5  82.5 100     100 100   A         
## 2     2 Kabupaten Ba…  76.7  85      73  66.2  64.2  81.2    72  78.8 B         
## 3     3 Kabupaten Sl…  96.7  92.5    94  80    93.3  98.8    95  86.2 A         
## 4     4 Kabupaten Sl…  93.3  82.5    81  92.5  91.7  91.2    96  90   A         
## 5     5 Kabupaten Sl…  78.3  82.5    91  96.2  88.3  88.8    95  82.5 A         
## 6     6 Kabupaten Sl…  91.7  92.5    93  90    75.8  95      86  85   A
str(data_mall)
## tibble [142 × 11] (S3: tbl_df/tbl/data.frame)
##  $ No        : num [1:142] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Kab/Kota  : chr [1:142] "Kabupaten Bantul" "Kabupaten Bantul" "Kabupaten Sleman" "Kabupaten Sleman" ...
##  $ SI        : num [1:142] 100 76.7 96.7 93.3 78.3 ...
##  $ SP        : num [1:142] 100 85 92.5 82.5 82.5 92.5 85 80 60 82.5 ...
##  $ SKL       : num [1:142] 79 73 94 81 91 93 75 85 68 89 ...
##  $ SPT       : num [1:142] 92.5 66.2 80 92.5 96.2 ...
##  $ SSP       : num [1:142] 82.5 64.2 93.3 91.7 88.3 ...
##  $ SPL       : num [1:142] 100 81.2 98.8 91.2 88.8 ...
##  $ SB        : num [1:142] 100 72 95 96 95 86 89 78 77 92 ...
##  $ SPN       : num [1:142] 100 78.8 86.2 90 82.5 ...
##  $ Akreditasi: chr [1:142] "A" "B" "A" "A" ...

Pre-processing Data

data_mall <- data_mall[,c("SI","SP","SKL", "SPT", "SSP", "SPL","SB", "SPN")]
head(data_mall)
## # A tibble: 6 × 8
##      SI    SP   SKL   SPT   SSP   SPL    SB   SPN
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 100   100      79  92.5  82.5 100     100 100  
## 2  76.7  85      73  66.2  64.2  81.2    72  78.8
## 3  96.7  92.5    94  80    93.3  98.8    95  86.2
## 4  93.3  82.5    81  92.5  91.7  91.2    96  90  
## 5  78.3  82.5    91  96.2  88.3  88.8    95  82.5
## 6  91.7  92.5    93  90    75.8  95      86  85

Standardisasi Peubah

Standardisasi peubah merupakan proses transformasi peubah menjadi peubah yang memiliki rata-rata = 0 dan simpangan baku = 1. Proses standardisasi ini dilakukan jika kita melihat perbedaan satuan pengukuran peubah-peubah yang digunakan contoh (umur dan pendapatan). Standardisasi dilakukan karena metode K-Means menggunakan konsep jarak antara objek/amatan, yang mana sensitif terhadap satuan pengukuran. Formula untuk standardisasi data adalah sebagai berikut:

\(y' = \frac{y-\bar{y}}{\sigma_y}\)

Di mana:

  • \(\bar{y}\) : rataan \(y\)
  • \(\sigma_y\) : simpangan baku \(y\)

Dengan R, standardisasi dilakukan dengan fungsi scale().

data_mall_standardize <- scale(data_mall) 

Jika kita perhatikan rata-rata peubah setelah distandardisasi mendekati nol.

apply(data_mall_standardize, 2, mean)
##            SI            SP           SKL           SPT           SSP 
## -5.168499e-16  3.707666e-16  2.802311e-16 -1.202128e-16 -2.077140e-16 
##           SPL            SB           SPN 
##  6.810133e-16 -1.876823e-16  1.801089e-16

Dan simpangan baku dari peubah setelah distandardisasi mendekati satu.

apply(data_mall_standardize, 2, sd)
##  SI  SP SKL SPT SSP SPL  SB SPN 
##   1   1   1   1   1   1   1   1
Note
Dalam tahapan pre-processing data, kita menyiapkan data agar metode K-Means bisa diterapkan secara maksimal. Dua hal yang umumnya dilakukan pada tahap ini adalah memilih peubah yang digunakan dan melakukan standarisasi peubah.

Memilih Banyaknya Gerombol

Umumnya, banyaknya gerombol dapat ditentukan dengan menggunakan beberapa kriteria statistik, seperti koefisien silhouette dan **WSS* (Within Sum of Square).

  • Kriteria koefisien silhouette dihitung berdasarkan jarak antar amatan. Koefisien ini mengukur seberapa dekat suatu amatan dengan amatan lain yang berada di gerombol yang sama (dikenal sebagai ukuran cohesion) dibandingkan dengan jarak terhadap amatan lain yang berada di gerombol berbeda (dikenal sebagai ukuran separation). Koefisien yang nilainya semakin besar menunjukkan bahwa gerombol yang terbentuk sudah sesuai.

  • Kriteria WSS merupakan kriteria yang menghitung keragamaan dalam gerombol yang terbentuk. Semakin kecil keragaman dalam gerombol yang terbentuk menunjukkan bahwa gerombol yang terbentuk sudah sesuai.

Dengan menggunakan kriteria tersebut, kita bisa membandingkan banyaknya gerombol yang paling sesuai pada data yang kita sedang analisis. Dalam R, fungsi fviz_nbclust() dari package 1factoextra1 dapat digunakan untuk memilih banyaknya gerombol.

fviz_nbclust(data_mall_standardize, FUNcluster = kmeans, method = "silhouette")

fviz_nbclust(data_mall_standardize, FUNcluster = kmeans, method = "wss")

Untuk kriteria koefisien silhouette, banyaknya gerombol dengan nilai koefisien tertinggi yang kita pilih. Sedangkan pada WSS, banyaknya gerombol yang kita pilih didasarkan pada banyaknya gerombol yang mana garisnya berbentuk seperti siku (elbow). Pada gambar diatas garis membentuk siku saat berada di gerombol keempat. Karena penentuan ini berdasarkan visual, jadi setiap orang mungkin berbeda melihat pola sikunya.

Berdasarkan kedua kriteria tersebut, banyaknya gerombol terbaik yang dipilih berbeda. Jika demikian, banyaknya gerombol bisa ditentukan berdasarkan kemudahan interpretasi gerombol yang terbentuk. Pada tulisan ini kita akan menggunakan 2 serta 4 gerombol.

Note
Secara default banyaknya gerombol yang dicobakan pada fungsi fviz_nbclust() adalah 10, jika ingin merubah hal tersebut bisa dilakukan dengan menggunakan argumen kmax dalam fungsi, misal kmax = 20.

Menerapkan K-Means

Setelah kita mendapatkan banyaknya gerombol terbaik, maka selajutnya kita akan menerapkan metode K-Means untuk mendapatkan label gerombol pada setiap amatan. Fungsi eclust dari package factoextra digunakan untuk menerpkan metode K-Means. Pada fungsi eclust(), kita cukup memasukan data yang sebelum distandardisasi, karena dalam fungsi tersebut terdapat argumen stand, yang jika diatur stand = TRUE secara otomatis data yang kita gunakan akan distandardisasi.

k=2

kmeans_mall <- eclust(data_mall, stand = TRUE, FUNcluster = "kmeans", k=2, graph = F) 

Memanggil label gerombol untuk setiap amatan dilakukan dengan:

kmeans_mall$cluster
##   [1] 1 2 1 1 1 1 2 2 2 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
##  [38] 2 1 1 1 1 1 1 1 1 1 1 2 1 1 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 1 1 2 2 2 2 2 1
##  [75] 1 1 2 2 2 1 1 2 1 1 1 1 2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
## [112] 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 1

Kemu- dian,interpretasi setiap gerombol yang terbentuk dapat dilakukan dengan menggunakan bantuan nilai rata-rata dari masing-masing peubah dihitung berdasarkan gerombol. Informasi ini bisa diperoleh dengan menggunakan $centers. Karena kita melakukan standardisasi peubah, maka nilai rata-rata yang diperoleh juga dalam skala standardisasi.

kmeans_mall$centers
##           SI         SP        SKL        SPT       SSP        SPL         SB
## 1  0.5039767  0.5083519  0.5055834  0.4821044  0.543549  0.5564135  0.4764561
## 2 -0.9869544 -0.9955224 -0.9901008 -0.9441211 -1.064450 -1.0896431 -0.9330599
##          SPN
## 1  0.5156149
## 2 -1.0097458

k=4

kmeans_mall <- eclust(data_mall, stand = TRUE, FUNcluster = "kmeans", k=4, graph = F) 

Memanggil label gerombol untuk setiap amatan dilakukan dengan:

kmeans_mall$cluster
##   [1] 1 4 1 2 2 2 4 4 3 2 4 2 3 1 1 1 1 1 1 1 2 2 2 2 2 2 2 4 4 4 4 4 4 3 3 3 3
##  [38] 3 1 1 1 1 2 2 2 2 2 2 4 1 2 4 4 4 1 1 1 2 2 4 4 3 3 3 3 3 1 2 4 4 4 4 4 2
##  [75] 2 1 4 3 3 2 1 3 1 2 2 2 3 2 2 4 3 3 3 4 1 1 2 1 1 2 1 1 2 1 1 1 1 1 2 1 4
## [112] 1 1 1 2 1 1 4 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 3 4 1 1 1 2 4 1 1

Kemu- dian,interpretasi setiap gerombol yang terbentuk dapat dilakukan dengan menggunakan bantuan nilai rata-rata dari masing-masing peubah dihitung berdasarkan gerombol. Informasi ini bisa diperoleh dengan menggunakan $centers. Karena kita melakukan standardisasi peubah, maka nilai rata-rata yang diperoleh juga dalam skala standardisasi.

kmeans_mall$centers
##           SI         SP         SKL          SPT        SSP        SPL
## 1  0.7329614  0.7539850  0.83598499  0.807056827  0.8217473  0.7573147
## 2  0.1665255  0.1463661  0.01867575  0.003227142  0.1335725  0.2603486
## 3 -1.5699897 -1.5548476 -1.73237778 -1.397601816 -1.3968804 -1.4912738
## 4 -0.5705006 -0.5960044 -0.45990295 -0.620206336 -0.8269999 -0.8027641
##           SB        SPN
## 1  0.7053882  0.7343391
## 2  0.1390826  0.1932845
## 3 -1.7346781 -1.4011392
## 4 -0.3604754 -0.7301791

Interpretasi Gerombol yang terbentuk

Berdasarkan 2 gerombol dapat diinterpretasikan sebagai berikut : Gerombol 1 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota yang memiliki nilai Standar Nasional Pendidikan (SNP) tinggi pada semua peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian Pendidikan (SPN).
Gerombol 2 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota yang memiliki nilai Standar Nasional Pendidikan (SNP) rendah pada semua peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian Pendidikan (SPN).

Berdasarkan 4 gerombol dapat diinterpretasikan sebagai berikut : Gerombol 1 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota yang memiliki nilai Standar Nasional Pendidikan (SNP) tinggi pada semua peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian Pendidikan (SPN).
Gerombol 2 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota yang memiliki nilai Standar Nasional Pendidikan (SNP) cukup tinggi pada semua peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian Pendidikan (SPN).
Gerombol 3 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota yang memiliki nilai Standar Nasional Pendidikan (SNP) cukup rendah pada semua peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian Pendidikan (SPN).
Gerombol 4 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota yang memiliki nilai Standar Nasional Pendidikan (SNP) rendah pada semua peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian Pendidikan (SPN).

Jika sulit membaca hasil dalam bentuk skala standardisasi maka kita bisa menggunakan fungsi aggregate() untuk melihat rata-ratanya dalam skala aslinya. Fungsi ini dapat menghitung rata-rata setiap peubah berdasarkan gerombol yang terbentuk.

aggregate(data_mall, by =list(gerombol = kmeans_mall$cluster), FUN = mean)
##   gerombol       SI       SP      SKL      SPT      SSP      SPL       SB
## 1        1 96.43381 93.46830 93.64286 91.47321 94.59839 96.85268 95.72321
## 2        2 90.74228 87.10132 82.92105 83.25658 85.48202 91.67763 89.12610
## 3        3 73.29383 69.27500 59.95000 68.93750 65.20783 73.43750 67.29792
## 4        4 83.33667 79.32232 76.64286 76.88393 72.75714 80.60714 83.30655
##        SPN
## 1 95.07699
## 2 89.69420
## 3 73.83176
## 4 80.50694
fviz_cluster(kmeans_mall)

Cara lain untuk menginterpretasikan hasil gerombol adalah menggunakan scatterplot. Jika peubah untuk membangun cluster lebih dari dua, maka sebelum dibentuk scatterplot peubah tersebut direduksi terlebih dahulu menggunakan analisis komponen utama menjadi dua komponen utama. Namun, untuk interpretasinya setiap gerombolnya kita harus mengetahui interpretasi dari kedua komponen utama dan belum tentu dengan dua komponen utama tersebut sudah mampu menjelaskan keragaman data asal dengan baik.

Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.

pca_mall <- prcomp(data_mall_standardize) 
pca_mall$rotation
##            PC1         PC2        PC3        PC4          PC5         PC6
## SI  -0.3490052 -0.47564694 -0.1010388  0.4376045  0.003407636 -0.53923576
## SP  -0.3563458 -0.32960295  0.1749772  0.2698125 -0.452955464  0.43357542
## SKL -0.3598889  0.07068885 -0.3613996  0.2903713  0.440748350  0.57383665
## SPT -0.3485441  0.41510575  0.5004850  0.2968528  0.280420903 -0.30372576
## SSP -0.3609729  0.47753814  0.2363533 -0.1409162 -0.172848868  0.12217286
## SPL -0.3655969  0.09443504 -0.1481044 -0.2843141 -0.570279491 -0.10681216
## SB  -0.3517772  0.17974350 -0.6186600 -0.2589296  0.126436990 -0.26369877
## SPN -0.3354107 -0.46748670  0.3428427 -0.6289118  0.388385123  0.06186463
##             PC7         PC8
## SI  -0.21029556 -0.33946686
## SP   0.50372961  0.11859155
## SKL -0.35076697  0.06303042
## SPT  0.10428746  0.43108729
## SSP -0.04041102 -0.72076326
## SPL -0.50809564  0.39982849
## SB   0.55432302  0.03691831
## SPN -0.03241418  0.01279675

Hierarchical Clustering

Hierarchical clustering menghasilkan hierarki yang dapat dilihat dalam bentuk dendrogram. Dendrogram ini menunjukkan cara objek-objek tersebut dikelompokkan dalam kelompok-kelompok yang berjenjang, dan dapat dipilih sejauh mana tingkat hierarki yang ingin dieksplorasi dengan memotong dendrogram pada tingkat yang sesuai.

Dua jenis hierarchical clustering:

  • Agglomerative Clustering : Dalam metode agglomerative, proses dimulai dengan menganggap setiap objek sebagai kelompok tunggal, dan kemudian objek-objek tersebut bergabung dalam kelompok yang semakin besar berdasarkan kesamaan mereka.
  • Divisive Clustering : Dalam metode divisive, proses dimulai dengan menganggap semua objek sebagai satu kelompok besar, dan kemudian kelompok ini dibagi menjadi kelompok yang semakin kecil berdasarkan perbedaan antara objek-objeknya.

Pemilihan jenis linkage (cara mengukur jarak antara kelompok) dalam hierarchical clustering adalah keputusan penting dalam analisis gerombol ini. Linkage mempengaruhi bagaimana kelompok-kelompok dibentuk dan hierarki yang dihasilkan dalam dendrogram. Beberapa jenis linkage antara lain:

  1. Single linkage (berdasarkan jarak terdekat antara anggota kelompok)
  2. Complete linkage (berdasarkan jarak terjauh antara anggota kelompok)
  3. Average linkage (berdasarkan jarak rataan antara anggota kelompok)
  4. Ward’s Method (berdasarkan variansi dalam anggota kelompok)
  5. Centroid Linkage (berdasarkan centroid antara anggota kelompok)

Tahap analisis gerombol dengan hierarchical clustering: 1. Pre-processing data 2. Memilih metode linkage dan banyaknya gerombol 3. Menerapkan Hierarchical Clustering 4. Interprestasi gerombol yang terbentuk

Contoh Kasus

Contoh kasus yang digunakan adalah kasus yang sama dengan contoh sebelumnya, dengan data yang dipakai adalah data numerik yang distandardisasi sebagaimana data pada contoh sebelumnya.

head(data_mall_standardize)
##              SI          SP        SKL        SPT         SSP        SPL
## [1,]  1.0878781  1.37732256 -0.2802210  0.9075068 -0.09153335  1.0595559
## [2,] -1.2339848 -0.05416815 -0.7375932 -1.6605187 -1.47522415 -0.7410297
## [3,]  0.7564677  0.66157721  0.8632095 -0.3153625  0.72599918  0.9395168
## [4,]  0.4240622 -0.29274993 -0.1277636  0.9075068  0.60068949  0.2192826
## [5,] -1.0687772 -0.29274993  0.6345234  1.2743676  0.34856034 -0.0207955
## [6,]  0.2588546  0.66157721  0.7869808  0.6629329 -0.59503677  0.5793997
##              SB        SPN
## [1,]  1.0725133  1.2291782
## [2,] -1.3310449 -0.9067791
## [3,]  0.6433065 -0.1529118
## [4,]  0.7291478  0.2240218
## [5,]  0.6433065 -0.5298454
## [6,] -0.1292658 -0.2785564

Memilih Metode Linkage Banyaknya Gerombol

Untuk memilih metode linkage dan banyaknya gerombol bisa menggunakan

  1. Koefisien silhoutte dan WSS (seperti K-Means)
  2. Menggunakan dendogram
Menggunakan koefisien silhouette dan WSS

Untuk ilustrasi kita akan menggunakan metode silhouette saja karena lebih mudah menentukan jumlah gerombolnya.

# complete
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "complete", hc_metric = "euclidean")

# average
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "average", hc_metric = "euclidean")

# centroid
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "centroid", hc_metric = "euclidean")

# ward
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "ward.D", hc_metric = "euclidean")

Berdasarkan koefisien silhouette, metode complete dan average memilih 5 gerombol, sedangkan metode centroid dan ward masing-masing memilih 2 dan 6 gerombol. Untuk saat ini, kita akan mencoba menggunakan 5 gerombol dengan metode complete (Jika dua metode linkage memilih banyaknya gerombol yang sama, gerombol yang terbentuk akan relatif mirip, oleh karena itu bisa pilih salah satu).

Menggunakan dendogram

Penggunaan dendogram untuk data yang memiliki amatan yang banyak mungkin tidak efektif karena memilih gerombol dengan dendogram dilakukan secara visual.

linkage_methods <- c("complete", "average", "centroid", "ward.D") 
hc_mall_dend <- lapply(linkage_methods, function(i)
    hclust(dist(data_mall_standardize, method = 'euclidean'), method = i)
    )
# complete
fviz_dend(hc_mall_dend[[1]])
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# average
fviz_dend(hc_mall_dend[[2]])

# centroid
fviz_dend(hc_mall_dend[[3]])

# ward
fviz_dend(hc_mall_dend[[4]])

Jika diperhatikan dari keempat dendogram pada masing-masing metode linkage, banyaknya gerombol yang terbentuk sama seperti menggunakan keofisien silhouette diatas.

Menerapkan Hierarchical Clustering k=2

hc_mall <- eclust(data_mall,stand = TRUE,FUNcluster = "hclust", k=2, hc_method = "complete", hc_metric = "euclidean")
hc_mall$cluster
##   [1] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 2
##  [38] 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1
##  [75] 1 1 1 2 2 1 1 2 1 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1

Interprestasi Gerombol yang terbentuk

Coba lakukan interpretasi gerombol seperti metode kmeans diatas.

aggregate(data_mall,by =list(gerombol=hc_mall$cluster), FUN = mean)
##   gerombol       SI       SP      SKL      SPT      SSP      SPL       SB
## 1        1 91.45541 87.96080 85.80000 85.16200 86.23085 91.16600 90.07900
## 2        2 71.52216 67.97059 59.70588 68.97059 65.19569 72.79412 68.58578
##        SPN
## 1 89.92509
## 2 71.93442
fviz_cluster(hc_mall)

Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.

pca_mall <- prcomp(data_mall_standardize)
pca_mall$rotation
##            PC1         PC2        PC3        PC4          PC5         PC6
## SI  -0.3490052 -0.47564694 -0.1010388  0.4376045  0.003407636 -0.53923576
## SP  -0.3563458 -0.32960295  0.1749772  0.2698125 -0.452955464  0.43357542
## SKL -0.3598889  0.07068885 -0.3613996  0.2903713  0.440748350  0.57383665
## SPT -0.3485441  0.41510575  0.5004850  0.2968528  0.280420903 -0.30372576
## SSP -0.3609729  0.47753814  0.2363533 -0.1409162 -0.172848868  0.12217286
## SPL -0.3655969  0.09443504 -0.1481044 -0.2843141 -0.570279491 -0.10681216
## SB  -0.3517772  0.17974350 -0.6186600 -0.2589296  0.126436990 -0.26369877
## SPN -0.3354107 -0.46748670  0.3428427 -0.6289118  0.388385123  0.06186463
##             PC7         PC8
## SI  -0.21029556 -0.33946686
## SP   0.50372961  0.11859155
## SKL -0.35076697  0.06303042
## SPT  0.10428746  0.43108729
## SSP -0.04041102 -0.72076326
## SPL -0.50809564  0.39982849
## SB   0.55432302  0.03691831
## SPN -0.03241418  0.01279675

Menerapkan Hierarchical Clustering k=4

hc_mall <- eclust(data_mall,stand = TRUE,FUNcluster = "hclust", k=4, hc_method = "complete", hc_metric = "euclidean")
hc_mall$cluster
##   [1] 1 2 1 1 3 1 2 3 4 3 3 2 2 1 1 1 1 1 1 3 1 2 1 3 1 2 1 3 2 2 2 2 4 4 2 4 4
##  [38] 4 1 1 1 1 1 1 1 1 1 1 2 1 1 3 3 2 1 1 1 1 1 2 2 4 4 4 4 2 1 1 2 2 2 2 3 1
##  [75] 1 1 2 4 4 1 1 4 1 1 1 1 4 1 1 2 2 4 4 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3
## [112] 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 1 1 1 3 1 1

Interprestasi Gerombol yang terbentuk

Coba lakukan interpretasi gerombol seperti metode kmeans diatas.

aggregate(data_mall,by =list(gerombol=hc_mall$cluster), FUN = mean)
##   gerombol       SI       SP      SKL      SPT      SSP      SPL       SB
## 1        1 94.71448 91.11006 89.95402 88.06034 91.29318 94.87069 93.46312
## 2        2 85.42590 80.81442 72.57692 74.67308 71.43026 79.35577 79.35897
## 3        3 80.89111 80.61250 84.33333 86.87500 81.59694 89.89583 88.77083
## 4        4 71.52216 67.97059 59.70588 68.97059 65.19569 72.79412 68.58578
##        SPN
## 1 93.14875
## 2 83.72456
## 3 79.98799
## 4 71.93442
fviz_cluster(hc_mall)

Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.

pca_mall <- prcomp(data_mall_standardize)
pca_mall$rotation
##            PC1         PC2        PC3        PC4          PC5         PC6
## SI  -0.3490052 -0.47564694 -0.1010388  0.4376045  0.003407636 -0.53923576
## SP  -0.3563458 -0.32960295  0.1749772  0.2698125 -0.452955464  0.43357542
## SKL -0.3598889  0.07068885 -0.3613996  0.2903713  0.440748350  0.57383665
## SPT -0.3485441  0.41510575  0.5004850  0.2968528  0.280420903 -0.30372576
## SSP -0.3609729  0.47753814  0.2363533 -0.1409162 -0.172848868  0.12217286
## SPL -0.3655969  0.09443504 -0.1481044 -0.2843141 -0.570279491 -0.10681216
## SB  -0.3517772  0.17974350 -0.6186600 -0.2589296  0.126436990 -0.26369877
## SPN -0.3354107 -0.46748670  0.3428427 -0.6289118  0.388385123  0.06186463
##             PC7         PC8
## SI  -0.21029556 -0.33946686
## SP   0.50372961  0.11859155
## SKL -0.35076697  0.06303042
## SPT  0.10428746  0.43108729
## SSP -0.04041102 -0.72076326
## SPL -0.50809564  0.39982849
## SB   0.55432302  0.03691831
## SPN -0.03241418  0.01279675