🧬 t-SNE Explained: How Perplexity Shapes the Clusters You See
A hands-on look at how t-SNE turns high-dimensional customer or gene-expression data into 2D maps, why perplexity is the dial that matters most, and why the distances on the resulting plot can mislead you.
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.
🔬 What It Demonstrates
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.
🎮 How to Use
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.
💡 Did You Know?
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.
A hands-on look at how t-SNE turns high-dimensional customer or gene-expression data into 2D maps, why perplexity is the dial that matters most, and why the distances on the resulting plot can mislead you.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install