Permutation feature importance measures how much a trained model relies on one input feature, without touching the model itself. For feature j, on a held-out set of N samples:
PI_j = acc(baseline) − mean_k[ acc(X with column j shuffled) ]
for k = 1..K:
X'_j = random permutation of column j
keep all other columns and true labels fixed
acc_k = accuracy of model(X') vs true labels
PI_j = acc(baseline) − mean(acc_k), σ_j = std(acc_k)
Shuffling a feature destroys any real statistical relationship between that column and the label while leaving its marginal distribution and every other feature untouched. If the model actually depends on feature j, accuracy drops after the shuffle — the size of the drop is the importance score. If the model ignores feature j (pure noise), shuffling it changes almost nothing, so PI_j ≈ 0 (and can even be slightly negative from sampling noise).
- Feature buttons — choose which column's permutation to preview in the point cloud before running the full test.
- Repeats K — how many independent shuffles are averaged per feature; more repeats shrink the ± σ error bar.
- Run Permutation Test — plays all 3×K shuffles in sequence: points slide along the tested axis to a shuffled value, correct points stay teal and newly-misclassified points turn red, and the bar for that feature grows toward its final mean importance.
- New Dataset — resamples 140 points from the same generating rule so you can confirm the ranking is stable, not a fluke of one sample.
This dataset is generated so the true label mostly depends on x₁ and x₂ (weights 2.6 and 2.2) with x₃ contributing almost nothing (weight 0.15) — a built-in irrelevant feature. A correct permutation-importance run should reveal exactly that: large bars for x₁/x₂, a near-zero bar for x₃. This is the same technique scikit-learn's permutation_importance and R's vip package compute — model-agnostic, unlike SHAP or tree-specific gain scores.