Study Case: Hybrid
1. Definisi Singkat
1.1 Ensemble Clustering (Consensus Clustering)
Ensemble clustering adalah metode pengelompokan yang menggabungkan beberapa hasil clustering (base clusterings) menjadi satu solusi final yang lebih stabil dan lebih robust. Prinsip utamanya adalah memanfaatkan wisdom of the crowd: ketika sejumlah algoritma atau sejumlah konfigurasi menghasilkan beberapa struktur cluster berbeda, metode ensemble berusaha mencari representasi konsensus yang meminimalkan ketidakselarasan di antara hasil-hasil tersebut. Teknik yang sering digunakan termasuk co-association matrix, voting schemes, dan meta-clustering.
1.2 Constraint-Based Clustering (Must-Link / Cannot-Link)
Constraint-based clustering adalah pendekatan pengelompokan yang memasukkan pengetahuan domain (domain knowledge) dalam bentuk constraints untuk mengarahkan proses clustering. Dua jenis constraint yang umum adalah:
- Must-Link (ML): dua observasi harus berada dalam cluster yang sama.
- Cannot-Link (CL): dua observasi tidak boleh berada dalam cluster yang sama.
Dengan memanfaatkan constraints, algoritma dapat menghasilkan cluster yang lebih sesuai dengan kebutuhan domain dan meningkatkan interpretabilitas.
1.3 Evolutionary / Genetic Clustering
Evolutionary atau genetic clustering adalah pendekatan pengelompokan yang memanfaatkan algoritma evolusi—misalnya Genetic Algorithm (GA)—untuk mencari solusi clustering yang optimal. Setiap solusi clustering direpresentasikan sebagai “kromosom”, lalu melalui operasi evolusioner seperti selection, crossover, dan mutation, populasi solusi diperbaiki secara bertahap untuk memaksimalkan suatu fungsi objektif (misalnya minimalisasi SSE atau maksimisasi silhouette score). Teknik ini efektif untuk menemukan struktur cluster yang kompleks dan menghindari perangkap local optimum.
2. Rumus Inti / Model Matematis
2.1 Ensemble Clustering (Consensus Clustering)
2.1.1 Co-Association Matrix
Salah satu fondasi matematis ensemble clustering adalah co-association matrix, yang mengukur frekuensi dua sampel ditempatkan pada cluster yang sama di berbagai base clusterings.
Misalkan terdapat:
- \(( X = {x_1, x_2, \dots, x_n} )\)
- Himpunan hasil clustering: \(( \mathcal{C} = { C^{(1)}, C^{(2)}, \dots, C^{(M)} } )\)
Co-association matrix didefinisikan sebagai:
\[ A_{ij} = \frac{1}{M} \sum_{m=1}^{M} \mathbf{1}\left( \text{cluster}(x_i \mid C^{(m)}) = \text{cluster}(x_j \mid C^{(m)}) \right)\]
dengan ( () ) adalah fungsi indikator.
2.1.2 Consensus Function
Solusi konsensus diperoleh dengan menerapkan algoritma clustering lain pada matriks (A):
\[ \hat{C} = f(A) \]
di mana (f) dapat berupa hierarchical clustering, spectral clustering, atau metode lain.
2.2 Constraint-Based Clustering (Must-Link / Cannot-Link)
Metode ini membuat optimasi clustering dengan menambahkan penalty pada pelanggaran constraints.
2.2.1 Representasi Constraint
Must-Link (ML):
\[(x_i, x_j) \in \mathcal{M} \Rightarrow C(x_i) = C(x_j)\]
Cannot-Link (CL):
\[(x_i, x_j) \in \mathcal{C} \Rightarrow C(x_i) \neq C(x_j)\]
2.2.2 Fungsi Objektif (Contoh: PCKMeans / COP-KMeans)
Untuk K-Means terkonstraint:
\[\min_{C, {\mu_k}} \sum_{i=1}^{n} | x_i - \mu_{C(x_i)} |^2 + \lambda \cdot \Omega(C)\]
dengan penalty:
\[\Omega(C) = \sum_{(i,j)\in \mathcal{M}} \mathbf{1}(C(x_i) \neq C(x_j)) + \sum_{(i,j)\in \mathcal{C}} \mathbf{1}(C(x_i) = C(x_j))\]
(\(\lambda\)) mengontrol kekuatan constraint.
2.3 Evolutionary / Genetic Clustering
2.3.1 Representasi Solusi
Solusi clustering dipetakan menjadi kromosom:
\[\mathbf{z} = (z_1, z_2, \dots, z_n), \quad z_i \in {1,\dots,K}\]
2.3.2 Fungsi Fitness
Tujuan umum adalah meminimalkan sum-of-squared-errors (SSE):
\(\text{SSE}(\mathbf{z}) = \sum_{k=1}^{K} \sum_{x_i : z_i = k} | x_i - \mu_k |^2\)
Fitness:
\[\text{Fitness}(\mathbf{z}) = \frac{1}{1 + \text{SSE}(\mathbf{z})}\]
atau dapat menggunakan silhouette:
\[\text{Fitness}(\mathbf{z}) = \text{Silhouette}(\mathbf{z})\]
2.3.3 Operator Evolusioner
Selection: probabilitas seleksi proporsional fitness
\[P(\mathbf{z}_i) = \frac{f(\mathbf{z}_i)}{\sum_j f(\mathbf{z}_j)}\]
Crossover: pertukaran gen antar kandidat
\[\mathbf{z}' = \text{crossover}(\mathbf{z}_a,\mathbf{z}_b)\]
Mutation: perubahan acak label cluster
\[z_i' = \begin{cases} \text{random}(1..K), & \text{dengan prob. }; p_m \ z_i, & \text{lainnya} \end{cases}\]
3. Cara Kerja (Langkah Operasi & Hyperparameter Utama)
3.1 Ensemble Clustering (Consensus Clustering)
3.1.1 Langkah Operasi
Membangun Base Clusterings
- Jalankan beberapa algoritma clustering (misalnya K-Means, Agglomerative, DBSCAN).
- Atau jalankan algoritma yang sama tetapi dengan parameter berbeda (misalnya K = 2–10).
Membangun Co-Association Matrix
- Hitung ( \(A_{ij}\) ) sebagai frekuensi dua sampel ditempatkan dalam cluster yang sama.
- Struktur ini menjadi representasi kedekatan berbasis agreement.
Normalisasi / Weighting (Opsional)
- Beberapa metode ensemble memberi bobot lebih besar kepada base clustering yang lebih “akurat” atau stabil.
Consensus Function
Jalankan algoritma clustering pada co-association matrix (A).
Metode populer:
- Hierarchical clustering
- Spectral clustering
- Voting-based consensus
Output Final Clusters
- Hasil akhir merupakan cluster konsensus yang lebih stabil dibanding single-run clustering.
3.1.2 Hyperparameter Utama
- Jumlah base clustering (M) Semakin banyak, semakin stabil konsensus.
- Variasi algoritma atau parameter base clustering Menentukan keragaman hasil.
- Jenis consensus function Hierarchical vs spectral vs voting.
- Parameter dari algoritma pada tahap konsensus Misalnya jumlah cluster (K) pada hierarchical/spectral.
3.2 Constraint-Based Clustering (Must-Link / Cannot-Link)
3.2.1 Langkah Operasi
Menetapkan Set Constraints
- Bentuk list pasangan Must-Link (ML) dan Cannot-Link (CL).
- Berdasarkan domain knowledge atau label parsial.
Inisialisasi Cluster
- Menggunakan K-Means atau metode lain.
- Constraints dapat digunakan untuk memperbaiki inisialisasi.
Assignment dengan Constraints
Ketika menentukan cluster untuk suatu data point, algoritma mengecek:
- Jika melanggar ML → larang assignment.
- Jika melanggar CL → larang assignment.
Update Centroid (untuk varian K-Means)
- Hitung centroid baru hanya untuk sample yang valid dalam cluster.
Iterasi
- Ulangi proses hingga tidak ada perubahan assignment atau iterasi maksimum tercapai.
Output Final Clusters
- Clustering mengikuti bentuk data sekaligus memenuhi ML/CL (atau meminimalkan pelanggaran jika soft-constraints).
3.2.2 Hyperparameter Utama
- Jumlah cluster (K) Parameter klasik.
- Strength parameter (λ) untuk penalty (PCKMeans) Mengontrol toleransi terhadap pelanggaran constraint.
- Jenis constraint: hard vs soft Hard: tidak boleh dilanggar. Soft: pelanggaran ditoleransi tetapi mendapat penalty.
- Distance metric Euclidean, Mahalanobis, cosine.
3.3 Evolutionary / Genetic Clustering
3.3.1 Langkah Operasi
Encoding Solusi ke Kromosom
- Setiap individu menyimpan label cluster untuk tiap data point.
Inisialisasi Populasi
- Buat sejumlah populasi awal secara acak atau berbasis algoritma klasik (misalnya Seed dari K-Means).
Evaluasi Fitness
Hitung objective function, misalnya:
- Minimizing SSE
- Maximizing silhouette
- Multi-objective (misalnya SSE + compactness + separation)
Selection
- Pilih individu dengan fitness tertinggi untuk direproduksi.
- Umum: roulette wheel, tournament selection.
Crossover
- Gabungkan dua parent untuk menghasilkan offspring baru.
- Contoh: one-point, two-point, uniform crossover.
Mutation
- Ubah sebagian label cluster secara acak untuk menjaga diversitas.
Replacement
- Bangun generasi baru dari kombinasi parent dan offspring terbaik.
Konvergensi
- Berhenti saat generasi mencapai batas maksimum atau perubahan fitness sangat kecil.
3.3.2 Hyperparameter Utama
- Ukuran populasi (population size) Biasanya 20–200 individu.
- Jumlah generasi (max generations) Mempengaruhi waktu komputasi.
- Mutation rate (pᵐ) Misalnya 0.01–0.1.
- Crossover rate (pᶜ) Biasanya 0.7–0.9.
- Jumlah cluster K Parameter inti.
- Fitness function SSE, silhouette, DB index, atau multi-objective.
4. Kelebihan dan Keterbatasan Praktis
4.1 Ensemble Clustering (Consensus Clustering)
Kelebihan
- Stabilitas lebih tinggi Mengurangi variabilitas akibat inisialisasi acak atau pemilihan algoritma tertentu.
- Lebih robust terhadap noise dan outlier Karena konsensus didasarkan pada beberapa solusi.
- Menggabungkan kekuatan banyak algoritma Cocok ketika struktur cluster tidak jelas atau dataset kompleks.
- Dapat bekerja dengan algoritma heterogen Base clusterings dapat berasal dari metode partisi, hierarchical, density-based, dan lainnya.
Keterbatasan
- Komputasi lebih berat Harus menjalankan banyak algoritma sebelum membangun konsensus.
- Memerlukan desain base clusterings yang baik Konsensus buruk jika base clusterings homogen atau kualitasnya rendah.
- Pemilihan consensus function tidak trivial Metode hierarchical, spectral, atau voting dapat menghasilkan hasil yang berbeda.
- Interpretabilitas bisa menurun Karena cluster final merupakan hasil agregasi, bukan langsung dari satu metode.
4.2 Constraint-Based Clustering (Must-Link / Cannot-Link)
Kelebihan
- Memasukkan pengetahuan domain langsung ke model Sangat berguna ketika tersedia informasi parsial atau hubungan antar objek.
- Meningkatkan kualitas cluster Hasil umumnya lebih bermakna dibanding unsupervised murni.
- Mengontrol struktur cluster Dapat memaksa objek tertentu dikelompokkan atau dipisahkan.
- Cocok untuk data sensitif Misal, grouping pasien atau pelanggan berdasarkan kebutuhan khusus.
Keterbatasan
- Kebergantungan pada kualitas constraints Must-link atau cannot-link yang salah akan merusak hasil clustering.
- Tidak semua algoritma mendukung constraints secara alami Banyak varian harus dimodifikasi secara khusus.
- Hard constraints bisa menyebabkan infeasible clustering Khususnya jika terdapat konflik antar ML/CL.
- Sensitif terhadap jumlah constraints Terlalu sedikit tidak membantu, terlalu banyak mengikat model berlebihan.
4.3 Evolutionary / Genetic Clustering
Kelebihan
- Mampu menemukan solusi global (menghindari local minima) Lebih powerful dibanding K-Means yang sering terjebak local optimum.
- Fleksibel terhadap bentuk cluster Tidak mengharuskan cluster berbentuk spherical.
- Dapat menggunakan fungsi objektif yang kompleks Silhouette, SSE, DB Index, atau kombinasi multi-objective.
- Mudah menggabungkan constraints atau prior domain knowledge Cukup memasukkan penalty dalam fitness function.
Keterbatasan
- Komputasi sangat intensif Evaluasi fitness tiap generasi membutuhkan waktu banyak, terutama untuk dataset besar.
- Pemilihan parameter GA tidak mudah Mutation rate, population size, dan crossover rate sangat memengaruhi hasil.
- Sulit diprediksi Karena proses evolusi bersifat stochastik.
- Membutuhkan banyak iterasi agar konvergen Waktu eksekusi bisa jauh lebih lama dibanding K-Means atau hierarchical clustering.
5. Sumber & Loading Data
5.1 Sumber Data
Dataset yang digunakan dalam analisis ini adalah Titanic Dataset, yaitu data penumpang kapal RMS Titanic yang banyak digunakan untuk tugas analisis eksplorasi, klasifikasi, dan clustering. Dataset berisi informasi demografis dan karakteristik penumpang seperti usia, jenis kelamin, kelas tiket, tarif, serta status keselamatan.
Dataset ini berasal dari sumber publik yang telah tersedia di berbagai repositori terbuka, termasuk:
- Kaggle: Titanic - Machine Learning from Disaster URL: https://www.kaggle.com/c/titanic
- OpenML Dataset ID 40945 DOI: 10.24432/C55P47
5.2 Loading Data di R
kode R untuk memuat dataset Titanic:
# Memuat library
library(tidyverse)
# Load dataset Titanic dari file lokal
titanic <- read_csv("titanic.csv")
# Melihat struktur awal data
glimpse(titanic)
# Menampilkan beberapa baris pertama
head(titanic)5.3 Deskripsi Variabel Umum (Bergantung Dataset)
Meskipun terdapat beberapa variasi antar versi dataset Titanic, atribut umum yang biasanya tersedia mencakup:
| Variabel | Deskripsi |
|---|---|
| PassengerId | ID unik penumpang |
| Survived | Status selamat (0 = tidak, 1 = ya) |
| Pclass | Kelas tiket (1 = atas, 2 = menengah, 3 = bawah) |
| Name | Nama penumpang |
| Sex | Jenis kelamin |
| Age | Usia penumpang |
| SibSp | Jumlah saudara/ pasangan di atas kapal |
| Parch | Jumlah orang tua/anak di atas kapal |
| Ticket | Nomor tiket |
| Fare | Harga tiket |
| Cabin | Nomor kabin (sering ada missing) |
| Embarked | Pelabuhan keberangkatan (C, Q, S) |
6. Eksplorasi Data Singkat
Eksplorasi awal diperlukan untuk memahami struktur dataset Titanic, karakteristik variabel, nilai hilang, serta potensi isu data sebelum dilakukan preprocessing dan clustering.
6.1 Struktur dan Tipe Variabel
Perintah ini menampilkan tipe data setiap kolom, jumlah observasi, serta ringkasan awal. Titanic umumnya memiliki variabel numerik (Age, Fare), kategorikal (Sex, Embarked, Pclass), dan string (Name, Ticket, Cabin).
6.2 Statistik Deskriptif
Variabel Numerik
Statistik ini menyediakan informasi seperti mean, median, min–max, dan kuartil untuk variabel numerik seperti Age, Fare, dan lain-lain.
6.3 Pengecekan Missing Values
Output akan menunjukan jumlah missing value per kolom. Pada Titanic biasanya:
- Age memiliki banyak missing
- Cabin sangat banyak missing
- Embarked memiliki sedikit missing
- Fare kadang memiliki missing pada versi tertentu
Visualisasi missing values (opsional):
6.4 Distribusi Variabel Penting
Distribusi Usia
Distribusi Tarif (Fare)
7. Pra-Proses Data (Cleaning, Imputasi, Encoding, Scaling)
Pra-proses data dilakukan untuk memastikan dataset Titanic berada dalam kondisi yang sesuai untuk analisis clustering, terutama karena algoritma clustering sensitif terhadap missing values, tipe variabel, dan skala numerik.
7.1 Pembersihan Variabel (Cleaning Data)
- Menghapus kolom yang tidak relevan untuk clustering Variabel seperti Name, Ticket, Cabin bersifat unik atau terlalu sparsity sehingga tidak informatif.
- Konversi tipe data Pastikan variabel kategorikal menjadi factor.
titanic_clean <- titanic_clean %>%
mutate(
Survived = factor(Survived),
Pclass = factor(Pclass),
Sex = factor(Sex),
Embarked = factor(Embarked)
)7.2 Menangani Missing Values
7.2.1 Imputasi Usia
Age biasanya memiliki banyak missing. Pendekatan umum:
- memakai median (lebih robust terhadap outlier)
- atau model imputasi (misal regresi), namun median lebih sederhana dan stabil untuk clustering.
7.2.2 Imputasi Fare
Jika ada missing:
7.3 Encoding Variabel Kategorikal
Clustering tidak dapat menggunakan string atau factor secara langsung. Encoding yang digunakan:
- One-hot encoding (paling umum untuk K-Means dan GA)
- Ditangani otomatis oleh
model.matrix().
Catatan: -1 menghilangkan intercept sehingga seluruh
kategori direpresentasikan.
7.4 Normalisasi / Scaling Variabel Numerik
Metode yang umum:
Standard scaling (Z-score):
\[x' = \frac{x - \mu}{\sigma}\]
7.5 Final Dataset untuk Clustering
## 'data.frame': 891 obs. of 12 variables:
## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Survived : int 0 1 1 1 0 0 0 0 1 1 ...
## $ Pclass : int 3 1 3 1 3 3 1 3 3 2 ...
## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
## $ Sex : chr "male" "female" "female" "female" ...
## $ Age : num 22 38 26 35 35 NA 54 2 27 14 ...
## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
## $ Cabin : chr "" "C85" "" "C123" ...
## $ Embarked : chr "S" "C" "S" "S" ...
## PassengerId Survived Pclass Name
## Min. : 1.0 Min. :0.0000 Min. :1.000 Length:891
## 1st Qu.:223.5 1st Qu.:0.0000 1st Qu.:2.000 Class :character
## Median :446.0 Median :0.0000 Median :3.000 Mode :character
## Mean :446.0 Mean :0.3838 Mean :2.309
## 3rd Qu.:668.5 3rd Qu.:1.0000 3rd Qu.:3.000
## Max. :891.0 Max. :1.0000 Max. :3.000
##
## Sex Age SibSp Parch
## Length:891 Min. : 0.42 Min. :0.000 Min. :0.0000
## Class :character 1st Qu.:20.12 1st Qu.:0.000 1st Qu.:0.0000
## Mode :character Median :28.00 Median :0.000 Median :0.0000
## Mean :29.70 Mean :0.523 Mean :0.3816
## 3rd Qu.:38.00 3rd Qu.:1.000 3rd Qu.:0.0000
## Max. :80.00 Max. :8.000 Max. :6.0000
## NA's :177
## Ticket Fare Cabin Embarked
## Length:891 Min. : 0.00 Length:891 Length:891
## Class :character 1st Qu.: 7.91 Class :character Class :character
## Mode :character Median : 14.45 Mode :character Mode :character
## Mean : 32.20
## 3rd Qu.: 31.00
## Max. :512.33
##
## Pclass Sex Age SibSp Parch Fare Embarked
## 0 0 177 0 0 0 0
## Age.V1 SibSp.V1 Parch.V1
## Min. :-2.222907606050 Min. :-0.474278822276 Min. :-0.473407724568
## 1st Qu.:-0.565418899186 1st Qu.:-0.474278822276 1st Qu.:-0.473407724568
## Median :-0.104578665582 Median :-0.474278822276 Median :-0.473407724568
## Mean : 0.000000000000 Mean : 0.000000000000 Mean : 0.000000000000
## 3rd Qu.: 0.433068273622 3rd Qu.: 0.432550428042 3rd Qu.:-0.473407724568
## Max. : 3.889370025650 Max. : 6.780355180270 Max. : 6.970232556440
## Fare.V1 Pclass_X2.V1
## Min. :-0.6480576784030 Min. :-5.09865182364e-01
## 1st Qu.:-0.4888736530040 1st Qu.:-5.09865182364e-01
## Median :-0.3571902456650 Median :-5.09865182364e-01
## Mean : 0.0000000000000 Mean : 1.00000000000e-16
## 3rd Qu.:-0.0242327406776 3rd Qu.:-5.09865182364e-01
## Max. : 9.6617401049800 Max. : 1.95910154310e+00
## Pclass_X3.V1 Sex_male.V1
## Min. :-1.10730408401e+00 Min. :-1.35481262133e+00
## 1st Qu.:-1.10730408401e+00 1st Qu.:-1.35481262133e+00
## Median : 9.02080720168e-01 Median : 7.37281045230e-01
## Mean :-1.00000000000e-16 Mean :-1.00000000000e-16
## 3rd Qu.: 9.02080720168e-01 3rd Qu.: 7.37281045230e-01
## Max. : 9.02080720168e-01 Max. : 7.37281045230e-01
## Embarked_C.V1 Embarked_Q.V1
## Min. :-0.481772097386 Min. :-0.307389700253
## 1st Qu.:-0.481772097386 1st Qu.:-0.307389700253
## Median :-0.481772097386 Median :-0.307389700253
## Mean : 0.000000000000 Mean : 0.000000000000
## 3rd Qu.:-0.481772097386 3rd Qu.:-0.307389700253
## Max. : 2.073340633390 Max. : 3.249548259820
## Embarked_S.V1
## Min. :-1.61380333401e+00
## 1st Qu.:-1.61380333401e+00
## Median : 6.18958732142e-01
## Mean :-1.00000000000e-16
## 3rd Qu.: 6.18958732142e-01
## Max. : 6.18958732142e-01
8. Alasan Dilakukan Reduksi Dimensi
Dalam dataset Titanic yang telah melalui proses pembersihan, encoding, dan scaling, jumlah fitur meningkat karena transformasi variabel kategorikal menjadi variabel numerik (misalnya melalui one-hot encoding). Kondisi ini menghasilkan ruang fitur berdimensi lebih tinggi dibandingkan data mentah. Dimensi tinggi sering menyebabkan beberapa permasalahan umum, seperti multikolinearitas antar fitur numerik (contoh: Age, Fare, SibSp, dan Parch) serta meningkatnya noise pada fitur yang kurang relevan.
Selain itu, metode clustering yang akan digunakan—terutama ensemble clustering, constraint-based clustering, dan genetic clustering—lebih stabil dan bekerja lebih efisien pada representasi data yang ringkas dan minim redundansi. Reduksi dimensi diperlukan untuk mengekstraksi struktur utama dalam data dan meningkatkan separabilitas cluster. Secara khusus, visualisasi hasil cluster juga membutuhkan representasi 2D atau 3D agar pola dan pemisahan cluster dapat diamati secara intuitif. Oleh karena itu, reduksi dimensi digunakan untuk menurunkan kompleksitas data, memperkuat struktur pola internal, sekaligus mempermudah interpretasi hasil clustering pada tahap berikutnya.
8.1. Teknik Reduksi Dimensi yang Digunakan
2.1 Principal Component Analysis (PCA)
PCA merupakan teknik reduksi dimensi linear yang paling umum digunakan. PCA bekerja dengan menemukan kombinasi linier baru dari fitur-fitur asli (disebut principal components) yang mampu menjelaskan variansi terbesar pada data. Komponen pertama (PC1) menangkap variansi terbesar, diikuti PC2, PC3, dan seterusnya. PCA memastikan bahwa komponen-komponen tersebut bersifat orthogonal, sehingga tidak memiliki korelasi satu sama lain.
PCA dipilih karena beberapa alasan praktis:
- Cocok untuk data numerik hasil encoding dan scaling.
- Dapat menghapus noise serta memperbaiki struktur cluster.
- Memberikan metrik jelas berupa explained variance ratio untuk memilih jumlah komponen optimal.
- Perhitungan cepat dan stabil untuk dataset berukuran sedang seperti Titanic.
Pada analisis ini, PCA digunakan sebagai teknik utama untuk memproyeksikan data ke ruang berdimensi rendah (2–3 dimensi) sebelum proses clustering.
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 1.4315 1.3838 1.3231 1.0684 0.97819 0.88361 0.8087
## Proportion of Variance 0.2049 0.1915 0.1751 0.1142 0.09569 0.07808 0.0654
## Cumulative Proportion 0.2049 0.3964 0.5715 0.6856 0.78131 0.85938 0.9248
## PC8 PC9 PC10
## Standard deviation 0.74044 0.44585 0.07144
## Proportion of Variance 0.05483 0.01988 0.00051
## Cumulative Proportion 0.97961 0.99949 1.00000
## [1] 0.2049290287 0.1914919078 0.1750534784 0.1141470015 0.0956850140
## [6] 0.0780771245 0.0654026503 0.0548252683 0.0198782120 0.0005103146
## [1] 0.2049290 0.3964209 0.5714744 0.6856214 0.7813064 0.8593836 0.9247862
## [8] 0.9796115 0.9994897 1.0000000
9.Untuk setiap algoritma: cara pemilihan parameter, fitting, evaluasi
ENSEMBLE CLUSTERING
Parameter Utama
k: jumlah klaster untuk model individualreps: jumlah model base learners- Base algorithms: k-means, pam, hierarchical, dsb.
- Metode konsensus: majority voting, CSPA, HGPA, MCLA (diceR)
Proses (Ringkas)
- Menjalankan beberapa algoritma clustering pada dataset.
- Menggabungkan partisi melalui matriks co-association.
- Menghasilkan satu solusi clustering gabungan.
Kode
set.seed(123)
ensemble_pca <- diceR::ensemble_data(
x = data_pca,
nk = 3,
reps = 10,
algorithms = c("kmeans", "pam", "hc")
)
ensemble_result_pca <- diceR::consensus_cluster(ensemble_pca)
cluster_ensemble_pca <- ensemble_result_pca$cluster
table(cluster_ensemble_pca)Evaluasi:
CONSTRAINT-BASED CLUSTERING
Parameter Utama
- k: jumlah cluster
- ML: daftar pasangan must-link
- CL: daftar pasangan cannot-link
- Algoritma dasar: COP-KMeans, PCKMeans, atau constrained-kmeans
Proses (Ringkas)
- Mendefinisikan constraint (domain knowledge).
- Mengoptimalkan objective function K-Means dengan penalti constraint.
- Menghasilkan cluster yang patuh terhadap aturan.
Contoh Constraint (Dummy)
must_link <- matrix(c(1,2, 10,11), ncol=2, byrow=TRUE) cannot_link <- matrix(c(3,4, 20,21), ncol=2, byrow=TRUE)
Kode
set.seed(123)
constraint_pca <- constrainedKMeans(
X = data_pca,
k = 3,
ml = must_link,
cl = cannot_link
)
cluster_constraint_pca <- constraint_pca$cluster
table(cluster_constraint_pca)5.7 Evaluasi
silhouette(cluster_constraint_clean, dist(data_clean)) %>% summary()
silhouette(cluster_constraint_pca, dist(data_pca)) %>% summary()
GENETIC (EVOLUTIONARY) CLUSTERING
Parameter Utama
- popSize: ukuran populasi
- maxiter: jumlah generasi
- pmutation: probabilitas mutasi
- fitness function: misal memaksimalkan Silhouette
Proses (Ringkas)
- Membuat populasi awal berupa solusi clustering acak.
- Evaluasi fitness tiap individu.
- Seleksi – crossover – mutasi.
- Iterasi hingga solusi stabil atau mencapai generasi maksimum.
Fitness Function
Genetic Algorithm
set.seed(123)
GA_pca <- GA::ga(
type = "permutation",
fitness = function(sol) fitness_cluster(sol %% 3 + 1, data_pca),
nBits = nrow(data_pca),
popSize = 20,
maxiter = 50,
pmutation = 0.1
)
cluster_genetic_pca <- GA_pca@solution[1,] %% 3 + 1
table(cluster_genetic_pca)Evaluasi
10. Visualisasi
1. PERSIAPAN DATA (WAJIB DIJALANKAN SEBELUM SEMUA ALGORITMA)
2. ENSEMBLE CLUSTERING
2D plot and Silhouette
## cluster_ensemble_pca
## 1 2 3
## 240 222 429
## Silhouette of 891 units in 3 clusters from silhouette.default(x = as.integer(cluster_ensemble_pca), dist = dist(data_pca)) :
## Cluster sizes and average silhouette widths:
## 240 222 429
## 0.1856931 0.3292305 0.4098493
## Individual silhouette widths:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.09309 0.18530 0.31180 0.32938 0.49609 0.58572
## cluster size ave.sil.width
## 1 1 240 0.19
## 2 2 222 0.33
## 3 3 429 0.41
Heatmap
Dendogram
DBSCAN
UMAP
3. CONSTRAINT-BASED CLUSTERING
2D Plot
## cluster_B
## 1 2 3
## 78 171 642
## Silhouette of 891 units in 3 clusters from silhouette.default(x = cluster_B, dist = dist(X)) :
## Cluster sizes and average silhouette widths:
## 78 171 642
## 0.6512588 0.3911212 0.3878370
## Individual silhouette widths:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.3339 0.3417 0.4091 0.4115 0.4820 0.7579
Heatmap
Dendogram
UMAP
4. GENETIC / EVOLUTIONARY CLUSTERING
Fitness (Silhouette)
Model GA menggunakan pendekatan:
- Solusi = deretan angka yang dikonversi menjadi cluster (1–3)
- GA akan memaksimalkan silhouette
2D PLOT
## cluster_genetic_pca
## 1 2 3
## 297 297 297
## Silhouette of 891 units in 3 clusters from silhouette.default(x = cluster_genetic_pca, dist = dist(data_pca)) :
## Cluster sizes and average silhouette widths:
## 297 297 297
## -0.005654418 -0.008638091 -0.004637173
## Individual silhouette widths:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.0402499 -0.0125189 -0.0055805 -0.0063099 0.0003728 0.0233267
## cluster size ave.sil.width
## 1 1 297 -0.01
## 2 2 297 -0.01
## 3 3 297 0.00
HEATMAP
Dedogram
UMAP
11. Evaluasi
a. Silhouette Score
- Sudah dilakukan di semua pipeline.
- Mengukur seberapa mirip objek terhadap cluster sendiri dibanding cluster lain.
- Nilai: -1 sampai 1 (semakin mendekati 1 → cluster jelas terpisah).
# Contoh perhitungan Silhouette untuk semua algoritma
sil_ensemble <- mean(silhouette(cluster_ensemble_pca, dist(data_pca))[, 3])
sil_constraint <- mean(silhouette(cluster_B, dist(data_pca))[, 3])
sil_genetic <- mean(silhouette(cluster_genetic_pca, dist(data_pca))[, 3])
sil_scores <- data.frame(
Algorithm = c("Ensemble", "Constraint", "Genetic"),
Silhouette = c(sil_ensemble, sil_constraint, sil_genetic)
)
sil_scoresb. Davies-Bouldin Index (DB Index)
- Mengukur compactness vs. separation cluster.
- Nilai kecil → cluster lebih baik.
- Paket:
clusterSimataufactoextra.
library(clusterSim)
db_ensemble <- index.DB(data_pca, cluster_ensemble_pca)$DB
db_constraint <- index.DB(data_pca, cluster_B)$DB
db_genetic <- index.DB(data_pca, cluster_genetic_pca)$DB
db_scores <- data.frame(
Algorithm = c("Ensemble", "Constraint", "Genetic"),
DB_Index = c(db_ensemble, db_constraint, db_genetic)
)
db_scoresc. Calinski-Harabasz Index (CH Index)
- Mengukur rasio antar cluster vs intra cluster.
- Nilai tinggi → cluster lebih baik.
library(factoextra)
ch_ensemble <- calinhara(data_pca, cluster_ensemble_pca)
ch_constraint <- calinhara(data_pca, cluster_B)
ch_genetic <- calinhara(data_pca, cluster_genetic_pca)
ch_scores <- data.frame(
Algorithm = c("Ensemble", "Constraint", "Genetic"),
CH_Index = c(ch_ensemble, ch_constraint, ch_genetic)
)
ch_scoresd. Stability
- Ukur seberapa konsisten hasil cluster jika data di-resample atau algoritma dijalankan ulang.
- Bisa dilakukan dengan bootstrap atau subsampling dan menghitung ARI antar run.
# Contoh sederhana: jalankan clustering 2x, hitung ARI antar run
set.seed(123)
cluster_run1 <- cluster_genetic_pca
cluster_run2 <- GA_pca@solution[1, ] %% 3 + 1
stability_genetic <- adjustedRandIndex(cluster_run1, cluster_run2)
stability_genetic## [1] 1
Runtime
- Ukur waktu eksekusi tiap algoritma menggunakan
system.time()
## Selecting k and imputing non-clustered cases
## Computing consensus functions
## Evaluating output with consensus function results
## Diverse Cluster Ensemble Completed
## user system elapsed
## 28.74 0.73 29.57
Perbandingan
| Algorithm | Silhouette | DB Index | CH Index |
|---|---|---|---|
| Ensemble | 0.329 | 1.479 | 277.644 |
| Constraint | 0.412 | 1.159 | 288.705 |
| Genetic | -0.006 | 42.519 | 0.449 |
Analisis Metrik
Silhouette
- Nilai tertinggi → Constraint (0.412)
- Ensemble sedikit lebih rendah (0.329), Genetic sangat rendah / negatif (-0.006) → menandakan cluster Genetic tidak jelas atau sangat tumpang tindih di data PCA.
Davies-Bouldin (DB)
- Nilai terkecil → Constraint (1.159)
- Ensemble cukup tinggi (1.479), Genetic sangat tinggi (42.519) → Genetic cluster sangat buruk dalam compactness vs separation.
Calinski-Harabasz (CH)
- Nilai tertinggi → Constraint (288.705)
- Ensemble cukup tinggi (277.644), Genetic hampir nol (0.449) → Genetic cluster tidak membentuk cluster yang baik secara antar-intra cluster ratio.
12. Kesimpulan dari metrik
Constraint-Based Clustering
- Memiliki Silhouette tertinggi, DB index terkecil, CH index tertinggi → secara internal cluster paling jelas dan compact.
Ensemble Clustering
- Cukup baik, masih bisa diterima, tapi kurang optimal dibanding Constraint.
Genetic / Evolutionary Clustering
- Nilai negatif / ekstrem di semua metrik → cluster tidak stabil, tidak jelas, atau tidak sesuai struktur data.
Jadi berdasarkan internal validity, Constraint-Based Clustering adalah metode terbaik untuk dataset ini.
Rekomendasi
Gunakan Constraint-Based Clustering jika:
- Terdapat prior knowledge / constraints (must-link / cannot-link) yang dapat membantu clustering.
- Tujuan utama adalah cluster yang compact, terpisah jelas, dan stabil.
Gunakan Ensemble Clustering sebagai alternatif jika:
- Ingin menggabungkan beberapa algoritma untuk robustness.
- Namun perlu optimasi parameter atau preprocessing tambahan agar kualitas cluster meningkat.
Hindari Genetic / Evolutionary Clustering untuk dataset ini, karena:
- Hasil cluster sangat buruk menurut semua metrik internal.
- Runtime kemungkinan tinggi dan cluster tidak stabil.
Catatan tambahan
- Jika ada ground truth label di masa depan → dapat dihitung ARI/NMI untuk validasi eksternal.
- Jika dataset lebih besar atau kompleks → Constraint-Based Clustering tetap direkomendasikan karena fleksibel dengan aturan domain (must-link/cannot-link).