Konteks Penelitian
Clustering merupakan teknik penting dalam analisis data eksploratif yang bertujuan mengelompokkan objek berdasarkan kemiripan karakteristik. Pada data multivariat yang kompleks, pendekatan model-based clustering sering memberikan hasil yang lebih baik dibandingkan metode tradisional seperti k-means atau hierarchical clustering. Hal ini karena model-based clustering tidak hanya membagi data tetapi juga memodelkan distribusi probabilistik yang membentuk data tersebut.
Dengan demikian, metode ini mampu menangkap struktur laten, variansi berbeda antar cluster, serta pola distribusi yang tidak selalu berbentuk bola (non-spherical), yang sering kali tidak dapat ditangani oleh metode partisional biasa.
Sumber Data
Penelitian ini menggunakan Wine Dataset dari UCI Machine Learning Repository, sebuah dataset publik yang berisi 178 sampel wine dari tiga varietas anggur. Dataset ini sering digunakan dalam penelitian klasifikasi dan clustering karena memiliki struktur fitur yang jelas serta distribusi antar kelas yang tidak terlalu sederhana.
Dataset dipilih karena memenuhi kebutuhan analisis model-based clustering, khususnya Gaussian Mixture Model dan Bayesian GMM, yang membutuhkan tipe data kontinu.
Pertanyaan Riset
Relevansi Clustering terhadap Dataset
Wine dataset merupakan data multivariat dengan fitur-fitur kimia yang kompleks. Metode model-based cocok digunakan karena:
Gaussian Mixture Model adalah metode clustering berbasis probabilistik yang mengasumsikan bahwa data berasal dari campuran beberapa distribusi Gaussian (normal) (Fraley & Raftery, 2012; McLachlan & Peel, 2004; Reynolds, 2009).
Setiap cluster direpresentasikan oleh:
GMM menghasilkan soft clustering, yaitu probabilitas keanggotaan setiap data dalam setiap cluster, bukan penetapan label secara tegas.
Bayesian GMM adalah varian GMM yang menggunakan pendekatan Bayesian dalam mengestimasi parameter (Bishop, 2006).
Keunggulan utamanya adalah:
Model ini cocok untuk data yang strukturnya tidak diketahui secara pasti.
GMM memodelkan data sebagai campuran beberapa distribusi Gaussian. Misalkan terdapat ( K ) cluster, maka distribusi campuran dituliskan sebagai:
\[ p(x) = \sum_{k=1}^{K} \pi_k , \mathcal{N}(x \mid \mu_k, \Sigma_k) \]
dengan:
( \(\pi_k\) ) = mixing coefficient untuk cluster ke-k
\[ \sum_{k=1}^{K} \pi_k = 1,\quad \pi_k \ge 0 \]
( \(\mu_k\) ) = mean vektor dari cluster ke-k
( \(\Sigma_k\) ) = matriks kovarians dari cluster ke-k
( \(\mathcal{N}(x|\mu, \Sigma)\) ) = fungsi densitas Gaussian multivariat:
\[ \mathcal{N}(x|\mu,\Sigma) = \frac{1}{(2\pi)^{d/2} |\Sigma|^{1/2}} \exp\left( -\frac{1}{2}(x-\mu)^\top \Sigma^{-1} (x-\mu) \right) \]
Parameter GMM (( \(\pi_k, \mu_k, \Sigma_k\) )) diperkirakan menggunakan algoritma Expectation-Maximization (EM).
Bayesian GMM menggunakan prior Bayesian pada parameter distribusi dan mixing coefficient. Model dasar mengikuti:
\[ \pi \sim \text{Dirichlet}(\alpha) \]
\[ \mu_k, \Sigma_k \sim \text{Normal-Inverse-Wishart} \]
Distribusi campuran tetap mengikuti:
\[ p(x) = \sum_{k=1}^{K} \pi_k , \mathcal{N}(x \mid \mu_k, \Sigma_k) \]
Namun, parameter tidak ditaksir sebagai nilai tunggal (point estimate), melainkan sebagai distribusi posterior:
\[ p(\pi, \mu, \Sigma ,|, X) \propto p(X \mid \pi, \mu, \Sigma), p(\pi), p(\mu, \Sigma) \]
Jika menggunakan Dirichlet Process Gaussian Mixture (DPGMM), jumlah cluster efektif dapat berubah karena proses nonparametrik:
\[ G \sim \text{DP}(\alpha, G_0) \]
yang memungkinkan model menentukan jumlah cluster secara otomatis.
Cara Kerja (Algoritma EM):
Inisialisasi parameter awal:
Expectation Step (E-Step) Hitung responsibility, yaitu probabilitas bahwa data (x_i) berasal dari cluster (k):
\[ r_{ik} = \frac{\pi_k , \mathcal{N}(x_i|\mu_k,\Sigma_k)} {\sum_{j=1}^{K} \pi_j , \mathcal{N}(x_i|\mu_j,\Sigma_j)} \]
Maximization Step (M-Step) Perbarui parameter menggunakan nilai responsibility:
\[ \mu_k = \frac{1}{N_k} \sum_{i=1}^{N} r_{ik} x_i \]
\[ \Sigma_k = \frac{1}{N_k} \sum_{i=1}^{N} r_{ik} (x_i - \mu_k)(x_i - \mu_k)^\top \]
\[ \pi_k = \frac{N_k}{N} \]
dengan ( \(N_k = \sum_{i=1}^N r_{ik}\) ).
Evaluasi log-likelihood dan iterasi hingga konvergen.
Hyperparameter Utama:
n_components (jumlah cluster) — wajib tentukan di
awalcovariance_type (full, tied, diag, spherical)max_itertol (toleransi konvergensi)init_params (k-means atau random)Cara Kerja:
Bayesian GMM adalah pengembangan dari GMM yang tidak perlu menentukan jumlah cluster secara pasti karena menggunakan prior Dirichlet untuk mengatur kompleksitas model. Prosesnya:
Hyperparameter Utama:
n_components — jumlah maksimum cluster (model akan
menonaktifkan yang tidak relevan)weight_concentration_prior — mengontrol seberapa kuat
model “menghapus” cluster tidak pentingcovariance_typemax_iterinit_paramsreg_covar (regularisasi matriks kovarian)Kelebihan:
Keterbatasan:
Kelebihan:
Keterbatasan:
Dataset yang digunakan dalam penelitian ini adalah Wine Dataset dari UCI Machine Learning Repository, yang merupakan salah satu dataset klasik untuk analisis klastering dan klasifikasi. Dataset ini berisi hasil analisis kimia dari tiga jenis anggur (cultivar) yang berasal dari daerah yang sama di Italia. Variabel yang tersedia meliputi 13 fitur kimia seperti kadar alkohol, malic acid, magnesium, flavonoid, dan lainnya.
Alasan pemilihan dataset:
Sumber Dataset
Loading Data
Karena file UCI biasanya tersedia dalam format .data,
dataset dapat diunduh kemudian dibaca menggunakan fungsi
read.csv() atau read.table().
loading data:
library(DT)
# Load Wine Dataset
wine <- read.csv("wine.data", header = FALSE)
# Tambahkan nama kolom sesuai dokumentasi UCI
colnames(wine) <- c(
"Class",
"Alcohol", "Malic_Acid", "Ash", "Alcalinity_Ash", "Magnesium",
"Total_Phenols", "Flavanoids", "Nonflavanoid_Phenols",
"Proanthocyanins", "Color_Intensity", "Hue",
"OD280_OD315", "Proline"
)
datatable(wine, options = list(scrollX = TRUE))Eksplorasi data awal dilakukan untuk memahami struktur, karakteristik, serta potensi masalah pada dataset sebelum proses analisis model-based clustering. Tahapan eksplorasi mencakup identifikasi tipe variabel, ringkasan statistik deskriptif, hingga pemeriksaan nilai hilang.
Struktur dataset diperiksa menggunakan fungsi str()
untuk melihat tipe masing-masing variabel:
## 'data.frame': 178 obs. of 14 variables:
## $ Class : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Alcohol : num 14.2 13.2 13.2 14.4 13.2 ...
## $ Malic_Acid : num 1.71 1.78 2.36 1.95 2.59 1.76 1.87 2.15 1.64 1.35 ...
## $ Ash : num 2.43 2.14 2.67 2.5 2.87 2.45 2.45 2.61 2.17 2.27 ...
## $ Alcalinity_Ash : num 15.6 11.2 18.6 16.8 21 15.2 14.6 17.6 14 16 ...
## $ Magnesium : int 127 100 101 113 118 112 96 121 97 98 ...
## $ Total_Phenols : num 2.8 2.65 2.8 3.85 2.8 3.27 2.5 2.6 2.8 2.98 ...
## $ Flavanoids : num 3.06 2.76 3.24 3.49 2.69 3.39 2.52 2.51 2.98 3.15 ...
## $ Nonflavanoid_Phenols: num 0.28 0.26 0.3 0.24 0.39 0.34 0.3 0.31 0.29 0.22 ...
## $ Proanthocyanins : num 2.29 1.28 2.81 2.18 1.82 1.97 1.98 1.25 1.98 1.85 ...
## $ Color_Intensity : num 5.64 4.38 5.68 7.8 4.32 6.75 5.25 5.05 5.2 7.22 ...
## $ Hue : num 1.04 1.05 1.03 0.86 1.04 1.05 1.02 1.06 1.08 1.01 ...
## $ OD280_OD315 : num 3.92 3.4 3.17 3.45 2.93 2.85 3.58 3.58 2.85 3.55 ...
## $ Proline : int 1065 1050 1185 1480 735 1450 1290 1295 1045 1045 ...
Pemeriksaan struktur dataset dilakukan menggunakan fungsi
str(wine). Berikut ringkasan struktur data beserta tipe
tiap variabel:
Dataset Wine terdiri dari 178 observasi dan 14 variabel, dengan rincian sebagai berikut:
Seluruh fitur merupakan variabel numerik, sehingga dataset ini sangat sesuai untuk metode model-based clustering seperti Gaussian Mixture Models (GMM) dan Bayesian GMM yang membutuhkan input numerik kontinu.
Struktur ini memastikan bahwa preprocessing selanjutnya (scaling dan normalisasi) dapat dilakukan secara konsisten tanpa penyesuaian tipe data tambahan.
Ringkasan statistik dasar dihitung menggunakan fungsi
summary():
## Class Alcohol Malic_Acid Ash
## Min. :1.000 Min. :11.03 Min. :0.740 Min. :1.360
## 1st Qu.:1.000 1st Qu.:12.36 1st Qu.:1.603 1st Qu.:2.210
## Median :2.000 Median :13.05 Median :1.865 Median :2.360
## Mean :1.938 Mean :13.00 Mean :2.336 Mean :2.367
## 3rd Qu.:3.000 3rd Qu.:13.68 3rd Qu.:3.083 3rd Qu.:2.558
## Max. :3.000 Max. :14.83 Max. :5.800 Max. :3.230
## Alcalinity_Ash Magnesium Total_Phenols Flavanoids
## Min. :10.60 Min. : 70.00 Min. :0.980 Min. :0.340
## 1st Qu.:17.20 1st Qu.: 88.00 1st Qu.:1.742 1st Qu.:1.205
## Median :19.50 Median : 98.00 Median :2.355 Median :2.135
## Mean :19.49 Mean : 99.74 Mean :2.295 Mean :2.029
## 3rd Qu.:21.50 3rd Qu.:107.00 3rd Qu.:2.800 3rd Qu.:2.875
## Max. :30.00 Max. :162.00 Max. :3.880 Max. :5.080
## Nonflavanoid_Phenols Proanthocyanins Color_Intensity Hue
## Min. :0.1300 Min. :0.410 Min. : 1.280 Min. :0.4800
## 1st Qu.:0.2700 1st Qu.:1.250 1st Qu.: 3.220 1st Qu.:0.7825
## Median :0.3400 Median :1.555 Median : 4.690 Median :0.9650
## Mean :0.3619 Mean :1.591 Mean : 5.058 Mean :0.9574
## 3rd Qu.:0.4375 3rd Qu.:1.950 3rd Qu.: 6.200 3rd Qu.:1.1200
## Max. :0.6600 Max. :3.580 Max. :13.000 Max. :1.7100
## OD280_OD315 Proline
## Min. :1.270 Min. : 278.0
## 1st Qu.:1.938 1st Qu.: 500.5
## Median :2.780 Median : 673.5
## Mean :2.612 Mean : 746.9
## 3rd Qu.:3.170 3rd Qu.: 985.0
## Max. :4.000 Max. :1680.0
Ringkasan statistik deskriptif diperoleh menggunakan fungsi
summary(wine). Hasilnya menunjukkan distribusi nilai untuk
setiap variabel numerik dalam dataset Wine:
Secara keseluruhan, seluruh variabel bersifat numerik kontinu, dan beberapa fitur memiliki rentang nilai yang sangat berbeda. Hal ini mengonfirmasi bahwa proses standardisasi (scaling) diperlukan sebelum menerapkan algoritma clustering model-based seperti Gaussian Mixture Models (GMM), agar setiap variabel berkontribusi secara seimbang terhadap pembentukan cluster.
Pengecekan nilai hilang dilakukan dengan fungsi:
## Class Alcohol Malic_Acid
## 0 0 0
## Ash Alcalinity_Ash Magnesium
## 0 0 0
## Total_Phenols Flavanoids Nonflavanoid_Phenols
## 0 0 0
## Proanthocyanins Color_Intensity Hue
## 0 0 0
## OD280_OD315 Proline
## 0 0
Hasil pemeriksaan menggunakan fungsi
colSums(is.na(wine)) menunjukkan bahwa seluruh
variabel memiliki nilai missing sebanyak 0. Dataset Wine bersih
dan tidak mengandung data hilang. Dengan demikian,
tahapan imputasi tidak diperlukan, dan data dapat langsung diteruskan ke
proses pra-proses (scaling).
Distribusi kelas diperiksa menggunakan fungsi:
##
## 1 2 3
## 59 71 48
Tahap pra-proses data dilakukan untuk memastikan bahwa dataset berada dalam kondisi optimal sebelum diterapkan algoritma model-based clustering. Proses ini meliputi pembersihan data, pemeriksaan nilai hilang, penyesuaian tipe variabel, dan standardisasi fitur.
Berdasarkan hasil eksplorasi sebelumnya, dataset Wine tidak memiliki missing values dan tidak mengandung anomali struktural seperti kolom kosong atau duplikasi baris. Oleh karena itu, tahap pembersihan data hanya memastikan:
Proses imputasi tidak diperlukan karena hasil pemeriksaan menunjukkan seluruh kolom memiliki jumlah missing = 0. Dengan demikian, dataset dapat dilanjutkan tanpa modifikasi nilai.
Dataset Wine tidak memiliki variabel kategorikal, sehingga proses encoding (one-hot encoding atau label encoding) tidak diperlukan. Seluruh variabel bersifat numerik kontinu.
Algoritma model-based—khususnya Gaussian Mixture Models (GMM) dan Bayesian GMM—sangat sensitif terhadap perbedaan skala antar variabel, karena proses estimasi didasarkan pada kovarians antar fitur.
Oleh karena itu, dilakukan proses standardisasi menggunakan metode z-score scaling:
\[ z = \frac{x - \mu}{\sigma} \]
Standardisasi memastikan setiap variabel memiliki rata-rata 0 dan standar deviasi 1, sehingga:
Dalam implementasi R, proses ini dilakukan menggunakan:
Catatan: Variabel Class dikeluarkan dari proses scaling karena hanya digunakan untuk evaluasi clustering (bukan untuk training).
Reduksi dimensi dilakukan untuk membantu proses visualisasi cluster serta mengurangi kompleksitas fitur tanpa menghilangkan informasi penting. Dalam konteks model-based clustering seperti Gaussian Mixture Models (GMM) dan Bayesian GMM, reduksi dimensi juga dapat meningkatkan stabilitas estimasi kovarians.
Pada penelitian ini digunakan dua teknik reduksi dimensi, yaitu Principal Component Analysis (PCA) dan UMAP, dengan alasan karena keduanya mewakili metode linear dan non-linear sehingga memberikan sudut pandang komplementer terhadap struktur data.
PCA merupakan teknik transformasi linear yang memetakan data ke sekumpulan principal components yang menyerap variasi terbesar dalam dataset (Hotelling, 1933; Jolliffe & Cadima, 2016). PCA dipilih karena:
Alasan penggunaan PCA:
Hasil PCA
Dari hasil summary(pca_res), diperoleh bahwa:
Hal ini menunjukkan bahwa sebagian besar informasi struktur data dapat diringkas hanya dalam beberapa komponen utama.
Contoh kode R:
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.169 1.5802 1.2025 0.95863 0.92370 0.80103 0.74231
## Proportion of Variance 0.362 0.1921 0.1112 0.07069 0.06563 0.04936 0.04239
## Cumulative Proportion 0.362 0.5541 0.6653 0.73599 0.80162 0.85098 0.89337
## PC8 PC9 PC10 PC11 PC12 PC13
## Standard deviation 0.59034 0.53748 0.5009 0.47517 0.41082 0.32152
## Proportion of Variance 0.02681 0.02222 0.0193 0.01737 0.01298 0.00795
## Cumulative Proportion 0.92018 0.94240 0.9617 0.97907 0.99205 1.00000
InterpretasiPCA
PC1 menjelaskan 36.2% variasi data, menjadikannya komponen dengan informasi paling besar. Ini berarti sebagian besar perbedaan antar sampel anggur dapat dijelaskan oleh kombinasi linear fitur yang membentuk PC1.
PC2 menjelaskan 19.21% variasi, sehingga PC1 + PC2 bersama-sama menjelaskan 55.41% variasi total. Kedua komponen ini cukup untuk memberikan gambaran global struktur data dalam 2 dimensi.
PC3 menambah 11.12%, sehingga PC1–PC3 menjelaskan 66.53% total variasi. Tiga komponen ini sudah cukup menggambarkan mayoritas informasi pada dataset.
PC4 dan PC5 menambah ~7% dan ~6.5%, membuat PC1–PC5 mencakup ~80% variasi total. Ini menunjukkan bahwa 13 fitur asli dapat direduksi menjadi 5 dimensi tanpa kehilangan banyak informasi.
Komponen selebihnya (PC6–PC13) hanya menjelaskan variasi kecil (di bawah 5% per komponen), sehingga kontribusinya terhadap struktur utama data relatif rendah.
UMAP merupakan teknik reduksi dimensi non-linear yang dirancang untuk mengestimasi struktur manifold dari data berdimensi tinggi. Berbeda dengan PCA, UMAP mempertahankan kedekatan lokal antar sampel, sehingga menghasilkan representasi yang lebih baik untuk data dengan struktur cluster kompleks (McInnes et al., 2018).
Alasan penggunaan UMAP:
## umap embedding of 178 items in 2 dimensions
## object components: layout, data, knn, config
Penggunaan dua metode berbeda memiliki tujuan metodologis:
| Metode | Kelebihan Utama | Perannya dalam Penelitian |
|---|---|---|
| PCA | Linear, interpretatif, menjaga varians global | Digunakan untuk analisis struktur global, stabilisasi GMM, dan visualisasi berbasis komponen utama |
| UMAP | Non-linear, mempertahankan hubungan lokal | Digunakan untuk visualisasi cluster yang lebih jelas dan evaluasi pola non-linear |
Keduanya saling melengkapi:
Reduksi dimensi dilakukan karena beberapa alasan metodologis:
Pada bagian ini dilakukan penerapan seluruh metode clustering model-based yang diwajibkan untuk Case 4, yaitu:
Setiap algoritma dijalankan setelah proses scaling dan reduksi dimensi (jika digunakan). Evaluasi dilakukan berdasarkan pendekatan unsupervised menggunakan metrik seperti Silhouette Score, Davies-Bouldin Index, dan Calinski-Harabasz Index. Label asli (Wine Class) hanya digunakan untuk evaluasi tambahan (ARI/NMI), bukan untuk training.
Parameter utama yang digunakan dalam GMM:
Jumlah cluster (n_components) Ditentukan = 3 (berdasarkan 3 kelas wine asli).
Covariance type Pilihan: full, tied, diag, spherical. Model full dipilih karena memberikan fleksibilitas tertinggi dalam membentuk klaster berbentuk elips.
Metode inisialisasi (init_params) Default menggunakan k-means.
Jumlah iterasi maksimum (max_iter) Digunakan nilai default.
Perbandingan beberapa tipe kovarian dilakukan untuk memastikan struktur model terbaik berdasarkan skor evaluasi.
## Package 'mclust' version 6.1.2
## Type 'citation("mclust")' for citing this R package in publications.
## ----------------------------------------------------
## Gaussian finite mixture model fitted by EM algorithm
## ----------------------------------------------------
##
## Mclust VVE (ellipsoidal, equal orientation) model with 3 components:
##
## log-likelihood n df BIC ICL
## -2292.553 178 158 -5403.829 -5404.793
##
## Clustering table:
## 1 2 3
## 56 73 49
Analisis klaster dilakukan menggunakan Gaussian Mixture Model
(GMM) melalui fungsi Mclust. Berdasarkan proses
pemodelan, GMM mengestimasi struktur distribusi data dan memilih jumlah
komponen Gaussian optimal menggunakan kriteria Bayesian Information
Criterion (BIC).
Hasil summary model memberikan nilai berikut:
Kedekatan nilai ICL dan BIC menunjukkan bahwa pemisahan antar klaster relatif jelas, dengan tingkat ketidakpastian keanggotaan yang rendah. Artinya, model memiliki stabilitas klaster yang baik dan overlap antar komponen Gaussian cukup minimal.
GMM memilih 3 klaster optimal,
## label_gmm
## 1 2 3
## 56 73 49
Distribusi yang relatif seimbang menunjukkan bahwa struktur klaster tidak didominasi satu kelompok besar. Hal ini mengindikasikan bahwa data memang memiliki tiga segmen alami yang cukup terpisah.
Model GMM berhasil mengelompokkan data menjadi tiga klaster utama dengan pemisahan yang cukup jelas secara statistik. Jumlah anggota klaster yang relatif proporsional memperkuat bahwa struktur data mendukung segmentasi alami ke dalam tiga kelompok.
Untuk analisis lanjutan, karakteristik setiap klaster dapat diperdalam dengan:
## [1] 3
## [1] "VVE"
Plot tersebut menampilkan nilai BIC (Bayesian Information Criterion) untuk berbagai jumlah komponen klaster (1–9) dan berbagai tipe covariance structure (misalnya EII, VII, VVE, EVV, dll.).
Model terbaik adalah model dengan nilai BIC paling tinggi (paling mendekati nol).
Dalam konteks plot ini, nilai BIC yang berada di puncak merupakan model optimal.
1. Puncak BIC terjadi pada jumlah komponen = 3
Pada komponen 3 klaster, banyak garis dari berbagai model covariance berada pada titik BIC paling tinggi dibandingkan komponen lain. Ini berarti:
🔹 Model dengan 3 klaster memberikan keseimbangan terbaik antara kebaikan fit dan kompleksitas model. 🔹 Model ini tidak terlalu sederhana dan tidak terlalu kompleks.
Hasil ini konsisten dengan output Mclust yang memilih 3 klaster.
2. Setelah 3 klaster, nilai BIC mulai menurun
Mulai dari 4–9 klaster:
Ini menandakan bahwa data tidak memiliki struktur alami lebih dari 3 segmen utama.
3. Beberapa model covariance memberikan BIC yang lebih baik
Model-model seperti:
Cenderung menghasilkan nilai BIC tertinggi pada jumlah klaster = 3.
Ini berarti:
Model dengan varians & covariance yang lebih fleksibel cocok untuk data ini Struktur klaster tidak terlalu sederhana (spherical), tetapi membutuhkan bentuk elips yang lebih kompleks.
## [1] -2292.553
# Ambil parameter
params <- gmm_model$parameters
# 1. Mixing Proportions
mixing <- params$pro
mixing_df <- data.frame(
Cluster = paste0("Cluster ", 1:length(mixing)),
Proportion = round(mixing, 4)
)
mixing_df# 2. Mean per Cluster (tabel rapih)
mean_df <- as.data.frame(params$mean)
mean_df <- round(mean_df, 3)
mean_df# 3. Covariance Diagonal (VERSI TANPA ERROR)
cov_list <- params$variance$sigma
cov_df <- data.frame(
Cluster = paste0("Cluster ", 1:dim(cov_list)[3]),
DiagonalVariance = I(
lapply(1:dim(cov_list)[3], function(i) round(diag(cov_list[ , , i]), 3))
)
)
cov_df1. Jumlah Klaster Optimal = 3
2. Proporsi Klaster
Cluster 1 : 31.3%
Cluster 2 : 41.1% ← paling besar
Cluster 3 : 27.5%
3. Variabel Paling Membedakan Klaster (Berdasarkan Mean Loading)
Cluster 1 (Ciri Khas Utama)
Variabel yang sangat tinggi nilai positifnya (paling penting):
Klaster 1 berisi anggur/wine dengan kualitas tinggi, banyak fenol, flavonoid, alkohol lebih tinggi, dan kandungan proline tinggi.
Cluster 2 (Ciri Khas Utama)
Nilai loading paling besar (positif):
Nilai negatif signifikan:
Klaster 2 adalah wine dengan warna lebih terang, intensitas warna rendah, alkohol cenderung rendah, magnesium moderat.
Cluster 3 (Ciri Khas Utama)
Yang paling dominan:
Klaster 3 adalah wine dengan warna sangat pekat, malic acid tinggi, intensitas warna tinggi, tapi fenol dan flavonoid sangat rendah.
4. Ringkasan Karakter Setiap Klaster (Wajib Fokus Ini)
Cluster 1 – Wine “Quality High” / Premium
Cluster 2 – Wine “Light / Soft”
Cluster 3 – Wine “Dark, Acidic, Low Phenols”
Bayesian GMM merupakan perluasan dari Gaussian Mixture Models (GMM) dengan menambahkan prior terhadap parameter—biasanya Dirichlet untuk mixing proportion dan Normal–Wishart untuk mean serta kovarians. Keunggulannya adalah model dapat secara otomatis mengatur jumlah cluster efektif karena cluster dengan bobot sangat kecil dapat “dipangkas” oleh prior.
Parameter utama yang digunakan:
n_components (upper bound) Diset lebih besar dari 3 (misalnya 5–10). Bayesian GMM akan secara otomatis menghilangkan cluster yang tidak diperlukan.
weight_concentration_prior Mengontrol sparsity. Semakin kecil nilainya → jumlah cluster efektif semakin sedikit.
covariance_type Disamakan dengan GMM, yaitu
"full".
Implementasi Bayesian GMM di R lebih terbatas dibanding Python (sklearn). Salah satu pendekatan yang cukup kuat adalah menggunakan pendekatan variational Bayesian dari paket Rmixmod.
## Loading required package: Rcpp
## Rmixmod v. 2.1.10 / URI: www.mixmod.org
Jalankan Bayesian GMM (VBGMM)
## label_bayes
## 1
## 178
(Berdasarkan output: 63, 55, 60 → total 178 observasi, 3 cluster)
Variational Bayesian GMM (VBGMM) dengan jumlah cluster dipaksa menjadi 3 menghasilkan pembagian sebagai berikut:
Interpretasi yang tepat:
Model berhasil membentuk 3 cluster sebagaimana jumlah cluster yang dipaksakan (K = 3). Artinya, model membagi seluruh 178 sampel wine menjadi 3 kelompok berbeda sesuai pola distribusi yang ditemukan.
Pembagian cluster cukup seimbang Tidak ada cluster yang terlalu kecil atau terlalu dominan:
Ini mengindikasikan bahwa data memiliki pattern pemisahan yang wajar ketika dipetakan ke dalam 3 komponen Gaussian.
Cluster yang dihasilkan tidak berasal dari seleksi otomatis model, melainkan merupakan hasil penetapan jumlah cluster secara eksplisit untuk menjaga konsistensi perbandingan dengan GMM dan HMM.
VBGMM tidak menghapus komponen (tidak terjadi cluster collapse), sehingga 3 komponen yang ditentukan tetap dipertahankan oleh model.
Hasil ini kemudian dapat dievaluasi menggunakan Silhouette, DBI, CH-Index, ARI, dan NMI untuk melihat kualitas pemisahannya dibanding GMM dan HMM.
Plot Hasil Bayesian GMM (PCA Visualization)
Karena Rmixmod tidak punya plot() langsung untuk
clustering multivariat, kita pakai PCA:
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(ggplot2)
fviz_cluster(
list(data = wine_scaled, cluster = label_bayes),
geom = "point",
ellipse = TRUE,
palette = "jco"
)Plot di atas menunjukkan hasil visualisasi Bayesian GMM pada ruang PCA dua dimensi (Dim1 dan Dim2). Warna dan bentuk titik mewakili tiga cluster yang terbentuk dari model.
1. Terlihat tiga cluster yang terpisah dengan jelas
Cluster 1 (biru) Tersebar di area bagian atas, dengan pola menyebar namun tetap membentuk kelompok yang jelas.
Cluster 2 (kuning) Berada di sisi kanan plot dengan distribusi yang relatif lebih kompak.
Cluster 3 (abu-abu) Berada di sisi kiri plot dan cenderung lebih menyebar daripada cluster 2.
Ketiga area ini tampak memiliki batas (convex hull) yang tidak saling tumpang tindih secara signifikan, menunjukkan pemisahan cluster yang baik.
2. Struktur cluster terlihat cukup alami di ruang PCA
Walaupun PCA hanya menjelaskan 36.2% (Dim1) dan 19.2% (Dim2) dari total variasi data (sekitar 55%), pemisahan 3 cluster tetap tampak jelas. Artinya:
Tiga cluster yang terbentuk oleh Bayesian GMM memiliki struktur yang dapat divisualisasikan secara baik dalam ruang PCA.
3. Konsistensi dengan Hasil Label Model
Jumlah observasi per cluster:
Pemetaannya pada grafik juga menunjukkan masing-masing cluster memiliki ukuran yang relatif seimbang, sesuai output model.
Kesimpulan Interpretasi
Visualisasi PCA memperlihatkan bahwa Bayesian GMM berhasil memetakan data wine ke dalam tiga cluster yang terpisah, stabil, dan seimbang. Meskipun PCA hanya menangkap sekitar 55% variasi total, struktur pemisahan antar cluster tetap jelas dan mendukung hasil klastering numerik.
| Metode | Kelebihan | Kekurangan | Cocok Untuk |
|---|---|---|---|
| GMM | Akurasi sangat baik untuk data Wine; fleksibel | Sensitif scaling | Data numeric dengan cluster elliptical |
| Bayesian GMM | Belajar jumlah cluster otomatis; stabil | Implementasi R terbatas | Dataset dengan ketidakpastian tinggi |
| HMM | Menangkap dinamika transisi state | Tidak ideal untuk data non-sekuensial | Data time-series / sequential |
Tahap visualisasi dilakukan untuk memahami bagaimana objek-objek dalam dataset Wine terkelompok setelah proses clustering menggunakan GMM, Bayesian GMM, dan HMM. Karena dataset ini memiliki banyak fitur numerik, teknik reduksi dimensi seperti PCA dan UMAP digunakan untuk memproyeksikan data ke ruang berdimensi rendah sehingga pola klaster lebih mudah diamati.
#wine_scaled # data hasil scaling
#label_gmm # cluster dari Gaussian Mixture Model
#label_bayes # cluster dari Bayesian GMM
#label_hmm # cluster dari HMMPCA dua dimensi digunakan sebagai representasi awal untuk melihat persebaran data dan struktur cluster. Setiap titik merepresentasikan satu sampel wine yang dipetakan ke dua komponen utama (PC1 dan PC2). Warna titik menggambarkan label cluster hasil algoritma tertentu (misalnya GMM).
Tujuan PCA
Visualisasi PCA memberikan gambaran cepat mengenai:
# ============================================================
# PCA 2D Visualization for Clustering
# ============================================================
library(ggplot2)
library(gridExtra)
# ------------------------------------------------------------
# 1. Hitung PCA
# ------------------------------------------------------------
# prcomp() melakukan dekomposisi PCA.
# scale = FALSE karena data sudah discaling sebelumnya (wine_scaled).
pca_res <- prcomp(wine_scaled, scale = FALSE)
# Ambil hanya dua komponen utama pertama (PC1 dan PC2)
pca_df <- as.data.frame(pca_res$x[, 1:2])
colnames(pca_df) <- c("PC1", "PC2")
# ------------------------------------------------------------
# 2. Tambahkan label cluster dari 3 metode:
# - Gaussian Mixture Model (GMM)
# - Bayesian GMM
# - Hidden Markov Model (HMM)
# ------------------------------------------------------------
pca_df$GMM <- as.factor(label_gmm)
pca_df$Bayes <- as.factor(label_bayes)
pca_df$HMM <- as.factor(label_hmm)
# ------------------------------------------------------------
# 3. Plot PCA 2D untuk masing-masing metode clustering
# ------------------------------------------------------------
# Visualisasi GMM
p1 <- ggplot(pca_df, aes(PC1, PC2, color = GMM)) +
geom_point(size = 2) +
ggtitle("PCA 2D - Gaussian Mixture Model (GMM)") +
theme_minimal()
# Visualisasi Bayesian GMM
p2 <- ggplot(pca_df, aes(PC1, PC2, color = Bayes)) +
geom_point(size = 2) +
ggtitle("PCA 2D - Bayesian GMM") +
theme_minimal()
# Visualisasi HMM
p3 <- ggplot(pca_df, aes(PC1, PC2, color = HMM)) +
geom_point(size = 2) +
ggtitle("PCA 2D - Hidden Markov Model (HMM)") +
theme_minimal()
# ------------------------------------------------------------
# 4. Tampilkan tiga plot secara berdampingan
# ------------------------------------------------------------
grid.arrange(p1, p2, p3, ncol = 3)1. Gaussian Mixture Model (GMM) – Panel Kiri
Kesimpulan: Pemisahan cluster paling baik terjadi pada GMM.
2. Bayesian GMM – Panel Tengah
Seluruh titik diberi warna yang sama ⇒ model memilih hanya 1 cluster (label = 1).
Artinya Bayesian GMM tidak menemukan struktur cluster yang kuat dan menganggap data paling cocok sebagai satu kelompok besar.
Bisa terjadi karena:
Kesimpulan: Bayesian GMM meng-collapse menjadi 1 cluster, sehingga tidak memisahkan kelompok Wine.
3. Hidden Markov Model (HMM) – Panel Kanan
Kesimpulan: HMM menghasilkan cluster yang kurang stabil dan tidak terpisah dengan baik.
PCA tiga dimensi digunakan ketika dua komponen pertama belum cukup memisahkan cluster. Dengan menambah komponen ketiga, struktur cluster dapat terlihat lebih berbeda, terutama pada metode seperti GMM yang sensitif terhadap distribusi multivariat.
Visualisasi 3D membantu mengidentifikasi:
# ============================================================
# PCA 3D Visualization (Plotly)
# ============================================================
library(plotly)##
## Attaching package: 'plotly'
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
# ------------------------------------------------------------
# 1. Ambil tiga komponen utama pertama untuk visualisasi 3D
# ------------------------------------------------------------
pca_3d <- as.data.frame(pca_res$x[, 1:3])
colnames(pca_3d) <- c("PC1", "PC2", "PC3")
# ------------------------------------------------------------
# 2. PCA 3D - Gaussian Mixture Model (GMM)
# ------------------------------------------------------------
plot_ly(
data = pca_3d,
x = ~PC1, y = ~PC2, z = ~PC3,
color = ~factor(label_gmm), # Warna berdasarkan cluster GMM
type = 'scatter3d',
mode = 'markers'
) %>%
layout(
title = "PCA 3D - Gaussian Mixture Model (GMM)",
scene = list(
xaxis = list(title = "PC1"),
yaxis = list(title = "PC2"),
zaxis = list(title = "PC3")
)
)# ------------------------------------------------------------
# 3. PCA 3D - Bayesian GMM
# ------------------------------------------------------------
plot_ly(
data = pca_3d,
x = ~PC1, y = ~PC2, z = ~PC3,
color = ~factor(label_bayes),
type = 'scatter3d',
mode = 'markers'
) %>%
layout(
title = "PCA 3D - Bayesian GMM",
scene = list(
xaxis = list(title = "PC1"),
yaxis = list(title = "PC2"),
zaxis = list(title = "PC3")
)
)## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
# ------------------------------------------------------------
# 4. PCA 3D - Hidden Markov Model (HMM)
# ------------------------------------------------------------
plot_ly(
data = pca_3d,
x = ~PC1, y = ~PC2, z = ~PC3,
color = ~factor(label_hmm),
type = 'scatter3d',
mode = 'markers'
) %>%
layout(
title = "PCA 3D - Hidden Markov Model (HMM)",
scene = list(
xaxis = list(title = "PC1"),
yaxis = list(title = "PC2"),
zaxis = list(title = "PC3")
)
)1. GMM – Gaussian Mixture Model
(Plot pertama)
Interpretasi umum: GMM mampu menangkap struktur kelompok alami pada PCA dengan baik, menghasilkan pemisahan klaster yang rapi dan terdefinisi.
2. Bayesian GMM (Dirichlet Process / Variational Bayes)
(Plot kedua)
Interpretasi umum: Bayesian GMM bersifat lebih hati-hati dan sering “menggabungkan” klaster jika posterior tidak menemukan bukti kuat untuk memisahkan cluster. Hasilnya: data tampak membentuk satu kelompok besar tanpa struktur klaster yang jelas.
3. Hidden Markov Model (HMM)
(Plot ketiga)
Interpretasi umum: HMM menghasilkan klaster, tetapi dengan overlap tinggi dan struktur yang kurang jelas, menunjukkan bahwa model ini bukan pendekatan yang optimal untuk data statis seperti Wine.
UMAP digunakan sebagai proyek non-linear yang mampu mempertahankan hubungan lokal antar titik. Dibandingkan PCA, UMAP sering memberikan:
Plot UMAP dapat digunakan untuk mengevaluasi apakah model clustering mampu menangkap kelompok yang secara intrinsik terbentuk di dalam data.
# ============================================================
# UMAP 2D Visualization
# ============================================================
library(umap)
library(ggplot2)
library(gridExtra)
# ------------------------------------------------------------
# 1. Jalankan UMAP (default: 2 dimensi)
# ------------------------------------------------------------
umap_res <- umap(wine_scaled)
# ------------------------------------------------------------
# 2. Ambil hasil layout (UMAP1 dan UMAP2)
# ------------------------------------------------------------
umap_df <- as.data.frame(umap_res$layout)
colnames(umap_df) <- c("UMAP1", "UMAP2")
# ------------------------------------------------------------
# 3. Tambahkan label cluster ke data frame
# ------------------------------------------------------------
umap_df$GMM <- as.factor(label_gmm)
umap_df$Bayes <- as.factor(label_bayes)
umap_df$HMM <- as.factor(label_hmm)
# ------------------------------------------------------------
# 4. Plot UMAP 2D untuk masing-masing metode clustering
# ------------------------------------------------------------
# UMAP dengan cluster GMM
u1 <- ggplot(umap_df, aes(UMAP1, UMAP2, color = GMM)) +
geom_point(size = 2) +
ggtitle("UMAP 2D - Gaussian Mixture Model (GMM)") +
theme_minimal()
# UMAP dengan cluster Bayesian GMM
u2 <- ggplot(umap_df, aes(UMAP1, UMAP2, color = Bayes)) +
geom_point(size = 2) +
ggtitle("UMAP 2D - Bayesian GMM") +
theme_minimal()
# UMAP dengan cluster Hidden Markov Model
u3 <- ggplot(umap_df, aes(UMAP1, UMAP2, color = HMM)) +
geom_point(size = 2) +
ggtitle("UMAP 2D - Hidden Markov Model (HMM)") +
theme_minimal()
# ------------------------------------------------------------
# 5. Gabungkan ketiga plot dalam satu grid
# ------------------------------------------------------------
grid.arrange(u1, u2, u3, ncol = 3)1. Gaussian Mixture Model (GMM)
UMAP menunjukkan tiga cluster yang cukup jelas terpisah:
GMM mampu menangkap struktur non-linear yang disederhanakan UMAP, sehingga klusternya terdistribusi rapi dan tidak terlalu tumpang tindih.
Interpretasi:
GMM cukup stabil dan konsisten dalam memisahkan tiga pola utama pada ruang embedding UMAP.
2. Bayesian Gaussian Mixture Model (Bayes GMM)
Interpretasi:
Bayesian GMM menjadi over-conservative, kemungkinan karena prior yang terlalu ketat sehingga model “meruntuhkan” semua data ke satu komponen saja. Ini menunjukkan kegagalan clustering pada representasi UMAP.
3. Hidden Markov Model (HMM)
HMM menunjukkan tiga kelompok yang muncul cukup terpisah, mirip dengan GMM:
Pola pemisahannya sedikit berbeda, namun cluster tetap cenderung mengikuti pola vertikal UMAP.
Interpretasi: HMM mampu mengenali pola transisi secara tidak langsung melalui embedding, sehingga menghasilkan cluster yang cukup baik dan mirip dengan GMM.
Kesimpulan Singkat
| Model | Hasil Clustering pada UMAP | Kualitas |
|---|---|---|
| GMM | 3 cluster jelas terpisah | Baik |
| Bayesian GMM | Hampir satu cluster saja | Lemah |
| HMM | 3 cluster muncul jelas | Baik |
UMAP menegaskan bahwa GMM dan HMM menangkap struktur non-linear data, sedangkan Bayesian GMM gagal memisahkan cluster.
Bagian ini bertujuan untuk menilai kinerja algoritma clustering yang telah diterapkan, yaitu:
Evaluasi dilakukan secara kuantitatif dan komparatif, menggunakan metrik clustering dan membandingkan hasil dengan label asli (wine class), jika tersedia.
| Metrik | Tujuan | Penjelasan |
|---|---|---|
| Silhouette Score | Mengukur seberapa baik tiap titik berada dalam cluster-nya | Nilai antara -1 sampai 1. Nilai tinggi → cluster compact dan terpisah jelas. |
| Davies–Bouldin Index (DBI) | Mengukur kesamaan antar cluster | Nilai rendah → cluster lebih compact dan terpisah. |
| Calinski–Harabasz Index (CHI) | Mengukur rasio antara variansi antar cluster dan intra cluster | Nilai tinggi → cluster lebih jelas dan compact. |
| Adjusted Rand Index (ARI) | Membandingkan hasil clustering dengan label asli | Nilai 1 → hasil clustering identik dengan label asli; nilai 0 → random. |
| Normalized Mutual Information (NMI) | Mengukur kesamaan cluster dengan label asli | Nilai 1 → informasi cluster sama dengan label asli. |
| Runtime | Mengevaluasi efisiensi komputasi | Waktu eksekusi algoritma. |
| Stability | Mengukur konsistensi hasil clustering pada percobaan berbeda | Cluster stabil → hasil tidak berubah banyak saat data di-shuffle atau algoritma dijalankan ulang. |
# ===============================
# Evaluasi Clustering
# ===============================
library(clusterSim) # setiap sesi## Loading required package: cluster
library(cluster) # silhouette
library(fpc) # DB index, CH index
library(mclust) # ARI
library(aricode) # NMI
library(microbenchmark)
data_mat <- wine_scaled # Data hasil scaling
# ===============================
# Fungsi aman untuk Silhouette
# ===============================
get_sil <- function(label, data_mat){
if(length(unique(label)) < 2){
return(NA) # Tidak bisa dihitung jika cluster cuma 1
} else {
return(mean(silhouette(label, dist(data_mat))[, 3]))
}
}
# ----- 1. Silhouette Score -----
sil_gmm <- get_sil(label_gmm, data_mat)
sil_bayes <- get_sil(label_bayes, data_mat)
sil_hmm <- get_sil(label_hmm, data_mat)
# ----- 2. Davies–Bouldin Index -----
dbi_gmm <- index.DB(data_mat, label_gmm)$DB
dbi_bayes <- index.DB(data_mat, label_bayes)$DB## Warning in max(R[i, ][is.finite(R[i, ])]): no non-missing arguments to max;
## returning -Inf
dbi_hmm <- index.DB(data_mat, label_hmm)$DB
# ----- 3. Calinski–Harabasz Index -----
# CH tidak boleh cluster = 1 → beri NA
safe_ch <- function(label, data_mat){
if(length(unique(label)) < 2){
return(NA)
} else {
return(calinhara(data_mat, label))
}
}
chi_gmm <- safe_ch(label_gmm, data_mat)
chi_bayes <- safe_ch(label_bayes, data_mat)
chi_hmm <- safe_ch(label_hmm, data_mat)
# ----- 4. ARI & NMI -----
true_label <- wine$Class
ari_gmm <- ARI(true_label, label_gmm)
ari_bayes <- ARI(true_label, label_bayes)
ari_hmm <- ARI(true_label, label_hmm)
nmi_gmm <- NMI(true_label, label_gmm)
nmi_bayes <- NMI(true_label, label_bayes)
nmi_hmm <- NMI(true_label, label_hmm)
# ----- 5. Gabung semua hasil -----
eval_table <- data.frame(
Method = c("GMM", "Bayesian GMM", "HMM"),
Silhouette = round(c(sil_gmm, sil_bayes, sil_hmm), 3),
DB_Index = round(c(dbi_gmm, dbi_bayes, dbi_hmm), 3),
CH_Index = round(c(chi_gmm, chi_bayes, chi_hmm), 3),
ARI = round(c(ari_gmm, ari_bayes, ari_hmm), 3),
NMI = round(c(nmi_gmm, nmi_bayes, nmi_hmm), 3)
)
eval_tableTabel berikut menampilkan hasil evaluasi tiga metode clustering, yaitu GMM, Bayesian GMM, dan HMM, berdasarkan lima metrik evaluasi: Silhouette, Davies-Bouldin Index, Calinski-Harabasz Index, ARI, dan NMI.
1. Silhouette Score
Silhouette score menggambarkan seberapa baik setiap observasi berada pada klaster yang benar serta seberapa jauh jaraknya dari klaster lain. Nilai yang lebih tinggi menunjukkan struktur klaster yang lebih jelas.
GMM memberikan struktur klaster yang paling baik berdasarkan metrik ini.
2. Davies–Bouldin Index
Davies–Bouldin Index mengukur tingkat kemiripan antar-klaster. Nilai yang lebih rendah menandakan bahwa klaster lebih terpisah dengan baik.
GMM kembali menunjukkan performa terbaik pada metrik ini.
3. Calinski–Harabasz Index
Calinski–Harabasz Index mengukur kekuatan pemisahan antar-klaster dengan mempertimbangkan sebaran internal klaster dan jarak antar-klaster. Nilai yang lebih tinggi menunjukkan pemisahan yang lebih kuat.
GMM menunjukkan pemisahan klaster yang paling baik.
4. Adjusted Rand Index (ARI)
ARI mengukur kesesuaian antara hasil clustering dengan label asli dari dataset Wine. Nilai mendekati satu menunjukkan kesesuaian yang sangat baik.
GMM memberikan hasil yang paling mendekati struktur asli dataset.
5. Normalized Mutual Information (NMI)
NMI mengukur kesamaan antara klaster yang terbentuk dengan label asli. Nilai mendekati satu menunjukkan kesamaan yang tinggi.
GMM sekali lagi menunjukkan performa tertinggi.
Kesimpulan Umum
Berdasarkan lima metrik evaluasi yang digunakan, GMM adalah metode clustering dengan performa terbaik pada dataset Wine. Model ini menghasilkan klaster yang paling kompak, paling terpisah, dan paling sesuai dengan struktur asli data. Bayesian GMM berada pada posisi kedua dengan performa menengah. HMM menjadi metode dengan performa paling rendah pada dataset ini karena klaster yang terbentuk kurang stabil dan kurang sejalan dengan label asli.
Penelitian ini telah melakukan proses pemodelan klaster pada UCI Wine Dataset menggunakan tiga pendekatan berbeda, yaitu Gaussian Mixture Model, Bayesian Gaussian Mixture Model, dan Hidden Markov Model. Seluruh model diberi data yang telah melalui proses standardisasi serta dilakukan visualisasi menggunakan PCA untuk memahami pola dan distribusi antar-observasi.
Hasil evaluasi menunjukkan bahwa Gaussian Mixture Model merupakan metode yang paling unggul di antara ketiganya. Metode ini menghasilkan nilai Silhouette tertinggi, Davies–Bouldin Index terendah, dan Calinski–Harabasz Index tertinggi, yang menandakan bahwa struktur klaster yang dihasilkan bersifat paling kompak dan paling terpisah. Selain itu, nilai Adjusted Rand Index dan Normalized Mutual Information yang tinggi menunjukkan bahwa hasil clustering GMM paling mendekati label asli data Wine.
Bayesian Gaussian Mixture Model menunjukkan performa yang cukup baik namun tidak sekuat GMM. Model ini tetap mampu menemukan tiga klaster, tetapi struktur klaster cenderung sedikit lebih tumpang tindih dan kurang terpisah dibandingkan GMM. Hal ini sesuai dengan sifat pendekatan Bayesian yang cenderung melakukan regularisasi terhadap jumlah klaster sehingga model lebih konservatif, terutama bila data tidak memberikan sinyal pemisahan yang sangat kuat.
Sementara itu, Hidden Markov Model memberikan performa terendah pada dataset ini. Model ini menghasilkan klaster yang kurang terpisah dan tidak sesuai dengan struktur label asli. Hal ini dapat dijelaskan karena HMM lebih tepat digunakan untuk data yang memiliki hubungan sekuensial atau temporal, sedangkan dataset Wine merupakan data tabular tanpa dependensi antar-observasi.
Secara keseluruhan, penelitian ini menunjukkan bahwa Gaussian Mixture Model merupakan metode yang paling efektif untuk mengelompokkan UCI Wine Dataset, baik dari sisi kualitas klaster maupun kesesuaiannya dengan struktur ground truth.
Berdasarkan temuan penelitian, beberapa rekomendasi dapat diberikan sebagai berikut:
Gaussian Mixture Model disarankan sebagai metode utama untuk permasalahan clustering pada dataset Wine maupun dataset lain yang memiliki karakteristik serupa. Model ini mampu menangkap struktur distribusi yang kompleks dan memberikan hasil yang konsisten.
Bayesian Gaussian Mixture Model dapat digunakan sebagai alternatif ketika diperlukan model yang lebih stabil, lebih konservatif dalam menentukan jumlah klaster, atau ketika tujuan penelitian adalah mengeksplorasi ketidakpastian model. Namun, kualitas klasternya tetap perlu dibandingkan dengan GMM pada setiap kasus.
Hidden Markov Model tidak direkomendasikan untuk data tabular non-sekuensial, karena model ini lebih tepat diterapkan pada data yang mengandung hubungan waktu atau urutan antar tahap. Untuk dataset seperti Wine, performanya cenderung kurang optimal.
Penelitian lanjutan dapat mempertimbangkan metode clustering lainnya, seperti DBSCAN, Spectral Clustering, atau Hierarchical Clustering, guna memperkaya analisis dan melihat apakah terdapat metode lain yang mampu mengungguli GMM pada data ini.
Visualisasi lanjutan, seperti UMAP atau t-SNE, dapat digunakan untuk memperdalam interpretasi karakteristik masing-masing klaster, terutama bila dataset memiliki korelasi antar variabel yang cukup tinggi.
Dengan mempertimbangkan hasil yang diperoleh, Gaussian Mixture Model dapat dinyatakan sebagai pendekatan terbaik untuk pemodelan klaster pada UCI Wine Dataset dalam penelitian ini.