- La variance d'une somme. Var(X + Y) = Var X + Var Y + 2 Cov(X, Y) : l'additivité n'est vraie qu'à covariance nulle (l09 notion 2), et Cov = ρσXσY (notion 4). Tout ce pont est cette parenthèse, comptée.
- Var(x̄) = σ²/n et le 1/√n (l10 notions 3 et 5). C'est le cas ρ = 0 de la formule d'ici : le cas particulier, pas le cas général.
- Le geste du bootstrap : rééchantillonner n lignes avec remise, et les 37 % de lignes laissées dehors (p01-05 pas 3–4).
- Bagging, forêts, k-fold ne sont pas redéfinis : p07-02 et p06-02 les portent. Ce pont ne fournit qu'un chiffre, le même partout.
Une formule, quatre habits
La formule, dérivée une fois tronc
La moyenne de B termes a pour variance la somme de toutes les cases de la matrice de covariance, divisée par B². Il y a B cases diagonales valant σ², et B(B − 1) cases hors diagonale valant ρσ².
Le second terme s'éteint avec B ; le premier ne le voit pas. Quand B → ∞ il reste ρσ². À ρ = 0 on retrouve σ²/B, le 1/√B familier — un cas particulier, pas la règle.
« La moyenne de B termes a pour variance la somme des B² cases de la matrice de covariance sur B², donc B variances et B(B − 1) covariances, donc ρσ² plus (1 − ρ)σ² sur B, donc un plancher à ρσ² que moyenner ne franchit pas. »
La matrice de covariance a 10 × 10 = 100 cases. Dix diagonales à 1, quatre-vingt-dix hors diagonale à 0,5.
Les covariances pèsent 90 cases sur 100, et déjà 82 % du résultat. Monter B ne fait que renforcer leur part :
| B | Var(X̄)/σ² | part des covariances | reste à gagner |
|---|---|---|---|
| 1 | 1,0000 | 0 % | 0,5000 |
| 10 | 0,5500 | 81,8 % | 0,0500 |
| 100 | 0,5050 | 98,0 % | 0,0050 |
| 1 000 | 0,5005 | 99,8 % | 0,0005 |
| ∞ | 0,5000 | 100 % | 0 |
Passer de 10 à 100 termes gagne 0,045 ; passer de 100 à l'infini en gagne 0,005. Dix fois plus de calcul pour un centième de variance : c'est la ligne à retenir, avant de savoir de quels termes on parle.
Deux lectures du même nombre : le plancher et le B efficace tronc
Première lecture, le plancher : ρσ² est ce qui reste après un nombre infini de termes. Seconde lecture, plus parlante : combien de termes indépendants cette moyenne vaut-elle ? On pose Var = σ²/Beff, ce qui donne
Un plafond d'information, pas un plancher de variance : à ρ = 0,5 on ne dépassera jamais 2 termes indépendants, quel que soit B. Le bouton n'est donc pas B mais ρ.
« Écrire la variance comme σ² sur un nombre efficace de termes, donc B efficace vaut un sur ρ plus (1 − ρ) sur B, donc ce nombre plafonne à un sur ρ, donc toute l'ingénierie porte sur ρ et pas sur B. »
| lieu | les B termes | d'où vient ρ | le bouton |
|---|---|---|---|
| Bagging, forêt | B arbres | lignes et features en commun | m par split |
| k-fold, LOOCV | k erreurs de plis | modèles presque égaux | k = 5 à 10 |
| SE d'une moyenne | n lignes | un même sujet, une série | grouper |
| Bootstrap | B tirages avec remise | la dépendance des lignes | par bloc |
| Ensemble de modèles | K modèles | mêmes données, mêmes erreurs | des modèles variés |
Où c'est écrit : p07-02 · p06-02 · l10 notion 6 et p01-01 casse · p01-05 casse · b03 pas 6.
Les colonnes 2 et 3 sont tout le travail de lecture : nommer les B termes, puis dire ce qu'ils partagent. Un bagging partage 63 % des lignes et les features dominantes ; deux plis d'une k-fold partagent presque tout leur entraînement ; deux lignes d'un même utilisateur partagent l'utilisateur ; un bootstrap de lignes, lui, ne partage rien — et c'est précisément son erreur.
Le chiffre qui tue le réflexe « plus ». Pour descendre à 1 % au-dessus du plancher il faut B = (1 − ρ)/(0,01 ρ) : 100 termes à ρ = 0,5, 900 à ρ = 0,1, 1 900 à ρ = 0,05. Plus ρ est bas, plus B sert — le nombre ne paie que là où la corrélation est déjà basse.
Var(X̄)/σ² contre B, en échelle log de 1 à 200. Bleu : ρ = 0, la droite en σ²/B qui descend sans fin. Violet : la courbe à ρ choisi ; rouge : son plancher ρσ². Le trait vert entre les deux points mesure tout ce que rapporte le passage de 10 à 100 termes. Monte ρ : les deux courbes se séparent d'emblée et le violet s'écrase sur son plancher avant B = 20. À ρ = 0,5, cent arbres valent à peine mieux que dix — 0,505 contre 0,550 — et jamais mieux que deux arbres indépendants.
Habit 1 — bagging et forêts : le bootstrap fabrique ρ
Les B arbres d'un bagging sont entraînés sur des rééchantillons du même jeu : deux bootstraps partagent environ 40 % des lignes distinctes, et les mêmes features dominantes s'imposent dans tous. D'où ρ > 0, mécaniquement.
Une forêt aléatoire ne change rien à B : elle tire m features au hasard à chaque split pour empêcher les arbres de se ressembler. Elle achète du ρ bas au prix d'arbres un peu moins bons chacun — donc d'un σ² un peu plus grand.
« Les arbres partagent leurs lignes et leurs features, donc ρ est strictement positif, donc ajouter des arbres bute sur ρσ², donc le réglage d'une forêt est m et non B. »
ρ = 0,5 : m = p, du bagging pur, arbres très semblables. ρ = 0,05 : m petit, arbres largement décorrélés.
| ρ | B = 10 | B = 100 | plancher | Beff max |
|---|---|---|---|---|
| 0,50 | 0,5500 | 0,5050 | 0,50 | 2,0 |
| 0,05 | 0,1450 | 0,0595 | 0,05 | 20,0 |
À B = 100, passer de ρ = 0,5 à ρ = 0,05 fait tomber la variance de 0,505 à 0,0595 — huit fois moins. Aucun nombre d'arbres ne produit ce gain à ρ = 0,5 : le plancher est à 0,50, et mille arbres n'y descendent qu'à 0,5005.
Le bootstrap entre deux fois dans un bagging, et c'est le même 37 %. Chaque arbre voit 1 − (1 − 1/n)n ≈ 63,2 % des lignes : c'est ce recouvrement qui fabrique ρ. Il en laisse 36,8 % dehors : ce sont les lignes out-of-bag, sur lesquelles se lit gratuitement l'erreur (p01-05 pas 4, p07-02). Un seul tirage, deux conséquences opposées — une variance qui plafonne, une validation offerte.
Même argument pour un ensemble de modèles hétérogènes : moyenner cinq gradient boostings réglés pareil rapporte presque rien, un GBM plus un modèle linéaire plus un kNN rapporte beaucoup. Ce n'est pas le nombre, c'est ρ.
Habit 2 — k-fold et LOOCV : ρ ≈ 1, donc k ne sert plus
L'erreur estimée par validation croisée est la moyenne de k erreurs de plis. En LOOCV, les n modèles sont entraînés sur des jeux qui diffèrent d'une ligne : ils sont quasi identiques, leurs erreurs aussi, donc ρ ≈ 1.
La formule s'applique mot pour mot avec B = k : la moyenne de mille erreurs quasi parfaitement corrélées a presque la variance d'une seule. C'est la vraie raison de préférer k = 5 ou 10 — pas le temps de calcul.
« Les k modèles d'une validation croisée partagent presque toutes leurs lignes, donc leurs erreurs sont corrélées, donc la moyenne des k erreurs a une variance proche de ρσ², donc monter k jusqu'à n n'achète presque aucune précision. »
Les ρ sont des hypothèses de lecture, pas des mesures : une k-fold à k modéré donne des modèles assez différents (ρ ≈ 0,4), une LOOCV des modèles quasi identiques (ρ ≈ 0,9).
| schéma | k | ρ | Var de la moyenne | keff |
|---|---|---|---|---|
| 5-fold | 5 | 0,4 | 0,5200 | 1,92 |
| 10-fold | 10 | 0,4 | 0,4600 | 2,17 |
| 10-fold, modèles semblables | 10 | 0,9 | 0,9100 | 1,10 |
| LOOCV | 1 000 | 0,9 | 0,9001 | 1,11 |
Entre le 10-fold et la LOOCV à ρ = 0,9 : cent fois plus d'entraînements pour faire passer la variance de 0,9100 à 0,9001, soit 0,0099. Mille plis valent 1,11 pli indépendant. Et le gain réel du 10-fold sur le 5-fold ne vient pas de k mais de ρ : c'est le même 0,4 ici, d'où un maigre 1,92 → 2,17.
Le versant biais — k petit entraîne sur moins de lignes, donc surestime l'erreur — est l'autre moitié du réglage et vit dans b03 pas 5. Ce pont ne traite que la largeur.
Habit 3 — le SE d'une moyenne, et le bootstrap qui l'imite casse
Ici les B termes sont les n lignes elles-mêmes. Vingt lignes d'un même utilisateur ne sont pas vingt observations : elles se ressemblent, donc ρ > 0, donc σ²/n est faux — trop petit.
Avec n lignes en grappes de m, corrélées par ρ à l'intérieur et indépendantes entre grappes, la corrélation moyenne sur les paires vaut ρ̄ = (m − 1)ρ/(n − 1), et la formule du pas 1 donne l'effet de grappe :
« Les lignes d'un même utilisateur sont corrélées, donc la corrélation moyenne sur les paires n'est pas nulle, donc la variance de la moyenne est σ²/n multipliée par 1 + (m − 1)ρ, donc l'échantillon compte neff lignes et pas n. »
| ρ intra-utilisateur | effet de grappe | neff | SE de x̄ |
|---|---|---|---|
| 0 — lignes indépendantes | 1,00 | 1 000 | 0,0316 |
| 0,05 | 1,95 | 513 | 0,0442 |
| 0,20 | 4,80 | 208 | 0,0693 |
| 0,50 | 10,50 | 95 | 0,1025 |
| 1 — lignes identiques | 20,00 | 50 | 0,1414 |
À ρ = 0,2, le vrai SE est 2,19 fois celui qu'annonce σ/√n : 0,0693 contre 0,0316. Un intervalle « 95 % » calculé naïvement (± 0,0620 au lieu de ± 0,1358) ne couvre en réalité que 62,9 % — un test sur quatre déclaré significatif ne l'est pas.
Et le bootstrap ne rattrape rien. Rééchantillonner les 1 000 lignes avec remise pose implicitement ρ̄ = 0 : le bootstrap reproduit fidèlement le mauvais modèle et sort le même 0,0316, trop petit du même facteur 2,19 (p01-05 casse). Le correctif n'est pas plus de rééchantillons, c'est de rééchantillonner les 50 utilisateurs — bootstrap par grappe, ou par bloc pour une série temporelle. Même geste partout : ramener l'unité de tirage à ce qui est réellement indépendant.
Chaque barre est une expérience entière : 50 utilisateurs, 20 lignes chacun, 1 000 lignes en tout, résumées par leur moyenne. Les deux traits bleus sont l'intervalle ± 1,96 σ/√n — ce que promet la formule qui ignore les grappes. Tire 500 fois à ρ = 0 : l'histogramme remplit exactement les traits. Monte ρ : il déborde largement sans que les traits bougent, parce que n n'a pas changé — seul neff a fondu. C'est la panne, vue de face.
Où ça casse — quatre pannes, la même partout casse
La formule est exacte ; ce qui casse est son usage. Trois des quatre pannes sont des façons de ne pas regarder ρ, la quatrième est de croire qu'on peut le mesurer.
« Le gain de moyenner vit entièrement dans ρ, donc compter B sans regarder ρ ne dit rien, donc ρ est ce qu'il faut estimer, donc — comme il est presque toujours inestimable — on le baisse par construction plutôt qu'on ne le mesure. »
- Compter B sans regarder ρ. « Plus d'arbres », « plus de lignes », « plus de rééchantillons », « plus de plis » : dès que ρ domine, aucun de ces « plus » ne bouge le résultat. Le test mental coûte une division : Beff plafonne à 1/ρ — à ρ = 0,5 il vaut 2, et mille termes n'y changent rien.
- ρ ne se mesure presque jamais. Il faudrait les covariances entre arbres, entre plis, entre lignes, sur des tirages répétés qu'on n'a pas. On le baisse par construction — features tirées au hasard, blocs, grappes, modèles hétérogènes — et on vérifie l'effet, pas la cause. Un ρ « estimé » sur un seul jeu de données est une hypothèse de lecture, jamais un chiffre : les 0,4 et 0,9 du pas 4 en sont.
- Un ρ commun n'existe pas (H1). C'est ρ̄, la corrélation moyenne sur les paires, qui entre dans la formule — et elle reste exacte. Mais deux structures très différentes peuvent donner le même ρ̄ : une grappe énorme noyée dans des lignes indépendantes, ou une dépendance faible et diffuse. La variance de la moyenne est la même ; la forme de sa distribution, elle, ne l'est pas, et les quantiles du bootstrap non plus.
- Un ρ négatif n'est pas un cadeau non plus. Var ≥ 0 impose ρ ≥ −1/(B − 1) : à B = 10 la corrélation ne peut pas descendre sous −0,111, à B = 100 sous −0,010. L'anti-corrélation fait mieux que l'indépendance, mais de moins en moins à mesure que B monte — il n'existe pas de plancher négatif à exploiter.
Résumé
- Var(moyenne de B corrélés) = ρσ² + (1 − ρ)σ²/B : B variances plus B(B − 1) covariances, sur B². Le second terme s'éteint, le premier jamais — plancher ρσ².
- Autre lecture : Beff = 1/[ρ + (1 − ρ)/B] plafonne à 1/ρ. À ρ = 0,5 : cent termes valent 0,505 σ², soit deux termes indépendants.
- Bagging : baisser ρ par m plutôt que monter B (0,505 → 0,0595). LOOCV : ρ ≈ 0,9, mille plis valent 1,11 pli, donc k = 5–10.
- SE et bootstrap : n lignes en grappes de m donnent neff = n/[1 + (m − 1)ρ]. Le bootstrap de lignes pose ρ̄ = 0 et se trompe du même facteur : rééchantillonner les groupes.
- Moyenner ne réduit que la part non corrélée — et ne touche pas au biais (b03).
Chaîne verbalisée — une prise, à voix haute
- Dérive Var(moyenne) pour B termes corrélés.Somme des B² cases de la matrice de covariance sur B² : B variances σ² et B(B − 1) covariances ρσ². Soit ρσ² + (1 − ρ)σ²/B, plancher ρσ², et Beff plafonné à 1/ρ.
- Même argument, autre habit : pourquoi la forêt tire-t-elle m features ?Pour baisser ρ. B ne franchit pas le plancher : à ρ = 0,5, cent arbres donnent 0,505 σ² et l'infini 0,50. Passer à ρ = 0,05 donne 0,0595 — huit fois moins, à B égal. Le bootstrap lui-même fabrique ρ : 63 % de lignes en commun.
- Pourquoi la LOOCV a-t-elle une variance élevée ?n modèles qui diffèrent d'une ligne, donc quasi identiques, donc ρ ≈ 0,9. Mille plis valent 1,11 pli indépendant : 0,9001 au lieu de 0,9100 pour un 10-fold. Cent fois le calcul pour 1 % de variance. D'où k = 5 ou 10.
- Que fait-on d'un SE sur des lignes d'un même utilisateur ?On le corrige par l'effet de grappe : neff = n/[1 + (m − 1)ρ]. 1 000 lignes, 20 par utilisateur, ρ = 0,2 → neff = 208 et SE × 2,19. Le bootstrap de lignes répète l'erreur : rééchantillonner les utilisateurs.
Ponts et cartes
ml::bagging (le plancher ρσ², m contre B, OOB) · stats::variance (variance d'une somme, covariance, B efficace) · ml::validation (k-fold, variance de la LOOCV) · stats::bootstrap (bootstrap par bloc et par grappe).
Une carte qui résiste après ce pont est une carte à refondre, pas une section à relire.