← Sophie Xu

Interactive demo

Steam Performance Sandbox

A multilayer perceptron, written from scratch in JavaScript and trained in your browser while you watch. It predicts how many owners a game will pick up from its price, review score, genre, age, and whether it is multiplayer — and it races a linear regression on the same data, because the interesting question is not whether a network fits, but whether the extra machinery earns its place.

What is real and what is not. The data is synthetic — generated in your browser from a ground-truth function, so the page is self-contained and reproducible. The modelling is entirely real: the network, backpropagation, the Adam optimiser, the train/test split, R², and the permutation importances are all computed live in about 500 lines of plain JavaScript, with no libraries of any kind. The original project ran the same method over a 100,000-row Steam catalogue in Python.

Setup

Test R² — network

Test R² — linear

Advantage

Epoch

0

Train loss

Loss train held-out

Held-out loss peeling away from training loss is the model starting to memorise rather than generalise.

Predicted vs actual perfect fit

Held-out games only. The tighter the cloud hugs the diagonal, the better the model is doing on data it has never seen.

Permutation importance

Each feature is shuffled in the held-out set and the model re-scored. The bar is how much R² collapses without it. Genre's six one-hot columns are shuffled together — permuting them separately would invent games with two genres and overstate the damage.

Ask the model

Describe a hypothetical release and the trained network estimates its owners.

Estimated owners

train the model first