ScaleRank turns a table (rows are items, numeric columns are features) into a 2-D map in which items that are similar in the data sit close together.
No 2-D map can keep every distance of many-dimensional data, so every method chooses what to keep. t-SNE and UMAP keep each point's closest neighbours but tend to lose how the groups are arranged relative to each other. PCA and MDS keep the large-scale layout but blur local detail.
ScaleRank makes this choice a setting. It works with neighbour ranks: for each point, which points are its 1st, 2nd, …, K-th nearest. During the optimisation it repeatedly takes a point, a neighbourhood size K, one point inside that neighbourhood and several outside it. Then it moves the map so the inside point ends up closer than the outside ones.
The Scale slider (γ) controls how often each K is drawn, with probability proportional to K−γ:
- γ = 0 weights all neighbourhood sizes equally, which favours the global layout.
- Larger γ concentrates on small neighbourhoods, which favours local detail.
It never builds the N × N table of ranks. Exact ranks come from each point's 100 nearest neighbours, and larger ranks are estimated from random subsamples.
Using the page
- Load a CSV or TSV file, or the demo data. Numeric columns are used as features; pick a column to colour the points by. Open Columns used to leave columns out.
- Columns are standardised by default, so each one counts equally. With more than 50 columns, the data are first reduced to 50 principal components.
- Drag to pan, scroll to zoom, double-click to fit the map to the view.
- Colour → neighbours kept shows, for each point, the share of its 10 nearest neighbours that the map kept; dark regions are reliable, light ones are not.
Reading the quality table
- Neighbours
- How many of each point's 10 nearest neighbours in the data are also among its 10 nearest in the map (RNX at K = 10). 0 = no better than a random map, 1 = all kept.
- Scales
- The same score averaged over every neighbourhood size, from the closest neighbour to the whole data set, with small sizes weighted more (log-scaled AUC of RNX).
- Distances
- Rank correlation between distances in the data and in the map: is the global arrangement of groups kept?
- Time
- Time to compute the map in this browser.
Higher is better in every column but Time. No map wins every column, because keeping local neighbours and keeping the global layout pull against each other.
t-SNE and UMAP
Both are included for comparison and run only when you ask for them. They follow the defaults of openTSNE and umap-learn, with two differences: UMAP starts from PCA, and t-SNE uses Barnes-Hut without FFT acceleration.
Privacy
Everything runs in your browser through WebAssembly. Your file is read locally and is never uploaded.
More
How the method came about, the benchmark behind it and the main experiments so far: research notes (日本語).
Source code: github.com/tsjshg/scalerank-web