Each base learner is a decision stump: a single threshold on one input, so its boundary is a line parallel to an axis. AdaBoost trains the stumps one after another; before each new stump it raises the weight of the points the committee so far gets wrong. In the left panel every circle's radius is the weight wn(m) used to train the latest stump (dashed white line), and the green line is the boundary of the whole committee sign(∑ αl yl(x)). The right panels follow the training error and the exponential error that AdaBoost minimises, and place every training point on the error functions of Figure 14.3 at its margin zn = tn fm(xn).
With αm = ln((1 − εm)/εm), the exponential error (1/N)∑n exp(−tnfm(xn)) equals ∏l 2√(εl(1 − εl)) exactly; it bounds the training error because exp(−z) ≥ 1 whenever z ≤ 0 (Freund and Schapire 1997).
fit_stump, adaboost, adaboost_curves, fig14_2, fig14_3); checks in code/checks_ch14.py.