SAMME and Multiclass AdaBoost
SAMME extends AdaBoost from two-class to multi-class problems by changing how much vote each weak learner earns, so a weak learner only needs to beat random guessing among K classes rather than 50/50.
Prerequisites: AdaBoost and Exponential Loss
Original AdaBoost was built for two-class problems, where a weak learner only needs to beat 50% accuracy to be useful. Extending it naively to classes breaks down, because a weak learner only needs to beat accuracy (random guessing among options) to still be informative — with 10 classes, 15% accuracy is actually a strong signal, not a weak one, but classic AdaBoost's weighting formula would treat it as barely better than useless.
SAMME (Stagewise Additive Modeling using a Multi-class Exponential loss) fixes AdaBoost's vote-weighting formula for classes by adding a term, so a weak learner beating chance-level accuracy — which is , not , when there are classes — still earns a positive, meaningful vote.
Worked example. With 4 classes, random guessing gets 25% accuracy. A weak learner that achieves 35% accuracy is doing meaningfully better than chance, even though it looks weak in absolute terms. SAMME's weight formula, , adds to the standard AdaBoost weight for this 4-class case — ensuring the learner still receives a sizable positive vote instead of being penalized as if it needed to beat 50%. Without that correction term, a formula calibrated for two classes would undervalue every weak learner as the number of classes grows.
A related variant, SAMME.R, uses class-probability estimates from each weak learner (similar in spirit to Real AdaBoost) rather than hard class labels, typically converging faster and to a better solution — most modern boosting libraries implement SAMME.R as their multiclass default.
Practice in interviews
Further reading
- Zhu, Rosset, Zou & Hastie, 'Multi-class AdaBoost' (2009)