Clustering
Advanced 13 min read Clustering

Gaussian Mixture Models

Soft, elliptical clusters

GMM models data as a weighted sum of Gaussian clusters with soft memberships, estimated by EM — capturing elliptical blobs, overlapping clusters and cluster covariances.

GMMEM algorithmsoft clusteringmixture modelcovariancelikelihood
Prerequisites: Cluster Evaluation
Before we start

What you will learn

  • Describe a K-Gaussian mixture and its parameters (weights, means, covariances)
  • Explain EM's expectation and maximization iterations
  • Choose soft vs hard clustering and multiclass covariance types
Introduction

What is this?

A Gaussian Mixture Model assumes data was drawn from a mixture of K Gaussians, each with mean, covariance and weight. EM alternates: (E) compute per-point soft membership (responsibility) given current parameters; (M) re-estimate parameters weighted by memberships to maximize likelihood. Outputs cluster probabilities per row (soft clustering), elliptical boundaries, and a likelihood-based model selection tool (BIC/AIC).

Motivation

Why do you need it?

  • Overlapping clusters deserve posterior probabilities, not hard slicings.
  • Gaussian-shaped (elliptical) data is the common case — KMeans forces circles.
  • EM's memberships power uncertainty-aware downstream decisions.
  • BIC/AIC provide an information principled pick of k — outperforming bare silhouette.
Think about it

Mental model

Imagine

Assigning students to study groups by 'best-fit tutor' probabilities

Think of

Soft GMM membership

Each student gets some probability of belonging to each tutor's group (0.7/0.3), and tutors re-fit their teaching topics to the assembled mix. Everyone learns the group best-matched — softly.

Mechanics

How it works

  • Initialize K sets of (weight, mean, covariance), e.g., from a KMeans start.
  • E-step: compute each point's responsibility per Gaussian (posterior over components).
  • M-step: re-estimate weights, means and covariances as membership-weighted statistics.
  • Repeat until likelihood converges.
  • Pick k by BIC/AIC (trade likelihood vs parameter count); convert soft memberships to labels by argmax when hard groups are needed.

EM loop.

Init
E-step
M-step
Converge
Hands-on

Examples

Soft membership and BIC sweep

Soft membership and BIC sweep
import numpy as np
from sklearn.mixture import GaussianMixture
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=800, centers=3, n_features=4, random_state=0)
X = (X - X.mean(0)) / (X.std(0) + 1e-9)
for k in [2, 3, 4, 6]:
g = GaussianMixture(n_components=k, random_state=0).fit(X)
print(f"k={k}: BIC {g.bic(X):.1f} AIC {g.aic(X):.1f}")
g3 = GaussianMixture(n_components=3, random_state=0).fit(X)
probs = g3.predict_proba(X[:6])
print("soft memberships (3 rows):", np.round(probs, 3))
print("hard labels (argmax):", g3.predict(X[:6]))

BIC bottoms out near the true k=3, and predict_proba returns a soft membership vector per row — usable for uncertainty-aware decisions, not just a class id.

Real world

In production

  • Customer behavioral segments with overlap: posters rarely map to one bucket.
  • Anomaly detection on Gaussian-shaped telemetry: log-likelihood of the mixture scores novelty.
  • Automatic image/audio background modeling: vision/audio contexts are Gaussian mixtures.
Guidelines

Best practices

  • Standardize features; start parameters from KMeans for a good launch; prefer BIC over arbitrary k; watch for singular covariance warnings (too few points per component).
Watch out

Common mistakes

  • Hard argmax when overlap is the point; expecting GMM to capture heavy-tailed or uniform-shaped structure (it's Gaussian-shaped); ignoring singular covariance collapse on small/duplicated folds.
When things break

Debugging tips

  • Convergence warnings -> data has degenerate Gaussians; increase min_covar.
  • BIC curve monotone decreasing suspiciously => model just swallowing parameters; check k relative to n.
  • Membership entropy ~ log(k) for most rows => clusters overlap so much they may not exist.
Interviews

Interview checkpoint

Test yourself

Quick quiz

0/2
1

The E-step computes:

2

BIC/AIC choose k by:

Go deeper

Official documentation