Drag to rotate the feature space · scroll to zoom · lower chart tracks real training error across boosting rounds
This page runs a genuine AdaBoost (AdaBoost.M1) ensemble of decision-stump weak learners on a synthetic e-commerce dataset. Each simulated shopping session has five features — session duration, items in cart, cart value, page views and a returning-visitor flag — and a label generated from a real non-linear rule (a quick low-engagement bounce OR a high-value cart from a first-time visitor) plus roughly 8% label noise. Because no single axis-aligned stump can separate that rule, the ensemble's training error genuinely decreases only as more stumps combine.
Each boosting round performs an exhaustive weighted search over every feature, candidate threshold and split polarity to find the stump with lowest weighted classification error under the current per-sample weights, computes its vote weight (alpha) from that error rate, then exponentially upweights the samples it misclassified before renormalising all weights to sum to one — the exact textbook AdaBoost update.
Why do misclassified points visibly grow?
Each round's exponential weight update multiplies a misclassified sample's weight by e^(alpha), and the rendered point size is tied directly to that same weight — so a session the ensemble keeps getting wrong swells round after round until a future stump is finally forced to fix it.
Is the test accuracy real generalisation?
Yes — the held-out test set is generated from the same underlying rule but is never used to pick stumps or update weights, so its accuracy each round is a genuine measure of how well the growing ensemble generalises beyond the training sessions it was fit on.