t-Distributed Stochastic Neighbour Embedding (t-SNE) takes points that live in a high-dimensional space — customer features, gene-expression profiles, word vectors — and arranges them on a 2D map so that points which were close in the original space stay close on the map. It does this by turning distances into probabilities of being neighbours, then nudging a random 2D layout, step by step, until its own neighbour probabilities match.
Because t-SNE only tries to preserve local neighbour relationships, the sizes of clusters and the gaps between them on the final map are not meaningful — a famous caveat popularised by the interactive essay "How to Use t-SNE Effectively" (Wattenberg, Viégas & Johnson, 2016).
A live, running t-SNE embedding: a synthetic high-dimensional dataset floats above a floor where its gradient-descent projection unfolds in real time, so you can watch perplexity reshape which points end up as neighbours.
The floor shows an actual t-SNE optimisation — Gaussian neighbour probabilities computed from the high-dimensional data, matched against a Student-t neighbour distribution in 2D via real gradient descent, not a scripted animation.
Drag the perplexity slider and watch the embedding restart and settle differently: too low fragments clusters into cliques, too high blurs distinct clusters together. Change cluster separation and count to make the underlying problem easier or harder.
t-SNE preserves local neighbourhoods, not global geometry — cluster sizes and the gaps between them on the final map carry no reliable meaning, which is why the same dataset can look different every run.