Week 1's decision stump was the weakest useful model there is.
This chapter stacks fifty of them into one of the strongest classifiers of its era.
Each new stump is aimed at the last one's mistakes.
Carry a weight on every training point. Start them uniform, then repeat:
The final call is a weighted vote of every stump, then take the sign.
200 points, two concentric classes from make_gaussian_quantiles. Inner blob
vs surrounding shell.
No axis-aligned line splits this — a single stump tops out near 0.67.
Weighted error, then the vote:
εt=i=1∑Nwi(t)1[ht(xi)=yi] αt=21ln(εt1−εt)Reweight — misses grow, hits shrink — then vote by sign:
wi(t+1)=Ztwi(t)exp(−αtyiht(xi)) H(x)=sign(t=1∑Tαtht(x))Point SIZE is its current weight. Missed points swell and pull the next stump. Orange line: the new stump. Shaded grid: the ensemble boundary sharpening.
Every stump stays terrible (ε ≈ 0.4). The intelligence is in the accumulation.
Train error slides to zero. Test error bottoms near round 17, then drifts up — later rounds chase the noise in the class overlap.
Single stump 0.63. Our AdaBoost 0.88. sklearn's 0.92. Both boosted models hit 0.98 on training.