Gaussian Mixture Models

"K-Means Versi Probabilitas (Soft Clustering)"

1. Apa itu GMM?

K-Means itu kaku. Sebuah titik HARUS milik Cluster A atau Cluster B. (Hard Clustering).
GMM lebih fleksibel. Sebuah titik bisa 70% Cluster A dan 30% Cluster B. (Soft Clustering).

GMM berasumsi bahwa data dihasilkan dari campuran beberapa Distribusi Normal (Gaussian).

2. Visualisasi: Bukan Bulatan Sempurna

Cluster 1
Cluster 2
Titik Galau
Prob: (40% Merah, 60% Biru)

K-Means hanya melihat "Jarak". GMM melihat "Jarak + Variance (Sebaran)". Cluster 1 di atas berbentuk lonjong (Variance di sumbu X besar). K-Means akan gagal di sini, GMM berhasil.

3. Algoritma Expectation-Maximization (EM)

Cara kerjanya mirip update centroid di K-Means, tapi lebih canggih:

  1. E-Step (Expectation): Hitung probabilitas setiap titik masuk ke setiap cluster. (Berdasarkan parameter Mean & Variance saat ini).
  2. M-Step (Maximization): Update Mean & Variance cluster berdasarkan bobot probabilitas tadi.
  3. Ulangi sampai konvergen.

4. Implementasi Python (Scikit-Learn)

from sklearn.mixture import GaussianMixture
import numpy as np

# 1. Data
X = np.array([[1, 2], [5, 4], [1, 0], [10, 2], [10, 4], [10, 0]])

# 2. Model GMM
# n_components=2 (Jumlah distribusi/cluster)
gmm = GaussianMixture(n_components=2, random_state=0)

# 3. Training
gmm.fit(X)

# 4. Prediksi Label
labels = gmm.predict(X)

# 5. Prediksi Probabilitas (Soft Clustering)
probs = gmm.predict_proba(X)
print("Probabilitas Data Pertama:")
print(f"Cluster 0: {probs[0][0]:.4f}")
print(f"Cluster 1: {probs[0][1]:.4f}")
# Output misal: Cluster 0: 0.9999, Cluster 1: 0.0001