AdaBoost turns a pool of weak learners (here: axis-aligned decision stumps on a 2D plane) into one strong classifier by training them sequentially, each one focused on the previous learner's mistakes:
1. init weights w_i = 1/N for all N samples
2. fit stump h_t minimizing weighted error ε_t = Σ w_i·[h_t(x_i)≠y_i]
3. learner weight α_t = ½·ln((1-ε_t)/ε_t)
4. reweight w_i ← w_i·exp(-α_t·y_i·h_t(x_i)), then renormalize Σw_i=1
5. final vote F(x) = sign( Σ_t α_t·h_t(x) )
- Dot size = the sample's current weight — misclassified points grow after every round, forcing the next stump to pay attention to them.
- Ring outline marks samples the current ensemble F(x) still gets wrong (toggle off in Display).
- Background shading is the combined decision region sign(F(x)) — a single stump can only cut the plane once, but the weighted vote of several stumps carves out a boundary no single stump could draw (this dataset is XOR-like and not linearly separable by one stump).
- A stump with εt near 0 gets a large αt (trusted heavily); one near 0.5 gets αt near 0 (barely trusted) — exactly the "weighted committee" idea behind Random Forest, Gradient Boosting and stacking.
- The strip below the plane plots εt and αt per round so you can watch the committee's trust converge as easy cases get resolved.
Real-world relevance: this is the same mechanism behind AdaBoost.M1 and its descendants (LogitBoost, gradient boosting), used for face detection (Viola-Jones), fraud scoring and any setting where combining many weak rules beats hand-tuning one strong one.
Drag the plane to pan, scroll or pinch to zoom — the boosting math itself is view-independent, only the drawing changes.