Why ensembling works: averaging cancels independent error
What it is
If n models each have error variance v and their errors are uncorrelated, the variance of their average is v/n. If the errors are correlated with average correlation rho, the average's variance floors out at rho * v no matter how many models you add.
Why it matters
That single formula is the design brief for every ensemble method. It says two things: add more models (which is cheap), and above all make their errors *less similar* (which is where all the actual technique lives).
In the real world: Like asking several experienced underwriters and averaging their views; individual mistakes cancel out.
Visual example
sqrt(rho + (1-rho)/n)Ensemble error against the number of members, at three levels of error correlation. Correlation sets the floor; count only decides how fast you reach it.
Where the floor comes from
var(mean) = rho x v + (1 - rho) x v / n
as n -> infinity the second term vanishes, leaving rho x v
rho = 0.6 -> sd floor sqrt(0.6) = 0.775: a 22% reduction, whatever n is
rho = 0.2 -> sd floor sqrt(0.2) = 0.447: a 55% reduction
Why this matters
Every mechanism in this module — bootstrapping rows, subsampling features at each split — exists to push rho down. That is what moves you from the red curve to the orange one, and it matters far more than moving right along either.
Common misconception
Wrong idea: more models in the ensemble always means less error.
Correct idea: error falls toward rho * v and then stops. Past a few hundred trees you are buying compute, not accuracy.
import numpy as np
rng = np.random.default_rng(0)
# 200 models, each unbiased with sd 1, sharing correlation rho
def ensemble_sd(n, rho):
return np.sqrt(rho + (1 - rho) / n)
for rho in [0.0, 0.2, 0.6]:
print(rho, [round(ensemble_sd(n, rho), 3) for n in (1, 10, 100, 1000)])
# 0.0 -> [1.0, 0.316, 0.1, 0.032] independent: keeps shrinking
# 0.6 -> [1.0, 0.804, 0.777, 0.775] correlated: stuck near sqrt(0.6)Ensembling five models that are all the same algorithm on the same data with different seeds, and expecting a large gain. Their errors are ~0.95 correlated, so you get almost nothing — you paid five times the compute for a fraction of a point. Diversity is the resource being spent, not model count.