Computing Library › Machine Learning
Machine Learning

Bagging

Bagging trains models on bootstrap resamples and averages them, cutting variance without raising bias.

Bootstrap aggregating

Bagging, short for bootstrap aggregating, trains many copies of a model on different bootstrap samples of the data, then averages their predictions (or takes a majority vote). Each bootstrap sample draws n points with replacement, so it omits some points and duplicates others. Averaging the resulting models reduces variance while leaving bias roughly unchanged.

Why it reduces variance

Kronos motion — lego machine

If models were independent, averaging m of them would divide their variance by m. Bootstrap samples overlap, so the models are correlated and the reduction is smaller, but still substantial. Bagging therefore helps most with high-variance, low-bias learners, above all deep decision trees.

python
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bag = BaggingClassifier(DecisionTreeClassifier(),
                        n_estimators=200, oob_score=True)
bag.fit(X_train, y_train)

Out-of-bag estimate

Each point is out of bag for roughly a third of the models. Predicting it with only those models gives an out-of-bag error estimate that approximates cross-validation without a separate holdout.

Bagging and random forests

Random forests are bagging applied to trees plus random feature selection at each split, which further decorrelates the trees. Bagging is the parallel, variance-reducing counterpart to boosting, which is sequential and reduces bias.