Fiches › Carte › Ponts › pont 04

La variance d'une moyenne corrélée

Pont. Une seule ligne d'algèbre — Var(moyenne de B termes de variance σ² corrélés deux à deux par ρ) = ρσ² + (1 − ρ)σ²/B — et le premier terme ne dépend pas de B. Moyenner ne réduit que la part non corrélée ; le reste est un plancher. Dérivée une fois ici, elle explique pourquoi une forêt tire des features au hasard, pourquoi la LOOCV a une variance élevée, et pourquoi un SE sur des lignes dépendantes est trop optimiste. Fil rouge : σ² = 1 et ρ = 0,5 — cent termes valent 0,505, dix en valent 0,550.

Ce que ce pont suppose acquis
  • 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.
Hypothèses posées
H1Échangeabilité. Les B termes ont la même variance σ² et la même corrélation ρ pour toutes les paires. Sinon la formule reste exacte en remplaçant ρ par ρ̄, la corrélation moyenne sur les B(B − 1) paires — c'est ce qui la rend transportable (pas 6). H2Rien n'est supposé sur ce que les termes estiment. Arbres, erreurs de plis, lignes d'une table : la formule ne connaît que σ² et ρ. C'est pourquoi elle se relit telle quelle d'un domaine à l'autre. H3Variance seulement. Moyenner ne déplace pas le centre : E[moyenne] = E[un terme]. Ce pont est muet sur le biais, qui ne bouge pas d'un pouce quand B monte (b03 pas 6).

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 ρσ².

Var(X̄) = 1⁄B² [ B σ² + B(B − 1) ρσ² ] = ρσ² + (1 − ρ) σ²/B

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. »

Application — compter les cases, B = 10, ρ = 0,5, σ² = 1

La matrice de covariance a 10 × 10 = 100 cases. Dix diagonales à 1, quatre-vingt-dix hors diagonale à 0,5.

10 × 1 / 100 = 0,100  ·  90 × 0,5 / 100 = 0,450  →  0,550

Les covariances pèsent 90 cases sur 100, et déjà 82 % du résultat. Monter B ne fait que renforcer leur part :

BVar(X̄)/σ²part des covariancesreste à gagner
11,00000 %0,5000
100,550081,8 %0,0500
1000,505098,0 %0,0050
1 0000,500599,8 %0,0005
∞0,5000100 %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

Beff = 1 / [ ρ + (1 − ρ)/B ]  →  1/ρ quand B → ∞

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. »

Application — les cinq lieux, une seule formule
lieules B termesd'où vient ρle bouton
Bagging, forêtB arbreslignes et features en communm par split
k-fold, LOOCVk erreurs de plismodèles presque égauxk = 5 à 10
SE d'une moyennen lignesun même sujet, une sériegrouper
BootstrapB tirages avec remisela dépendance des lignespar bloc
Ensemble de modèlesK modèlesmêmes données, mêmes erreursdes 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.

Figure 1 — le plancher que B ne franchit pas

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. »

Application — deux forêts, en unités de σ² (un arbre seul)

ρ = 0,5 : m = p, du bagging pur, arbres très semblables. ρ = 0,05 : m petit, arbres largement décorrélés.

ρB = 10B = 100plancherBeff max
0,500,55000,50500,502,0
0,050,14500,05950,0520,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. »

Application — n = 1 000, en unités de la variance d'un pli

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émakρVar de la moyennekeff
5-fold50,40,52001,92
10-fold100,40,46002,17
10-fold, modèles semblables100,90,91001,10
LOOCV1 0000,90,90011,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 :

Var(x̄) = σ²⁄n · [ 1 + (m − 1) ρ ]   ·   neff = n / [ 1 + (m − 1) ρ ]

« 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. »

Application — 1 000 lignes, 50 utilisateurs × 20 lignes, σ = 1
ρ intra-utilisateureffet de grappeneffSE de x̄
0 — lignes indépendantes1,001 0000,0316
0,051,955130,0442
0,204,802080,0693
0,5010,50950,1025
1 — lignes identiques20,00500,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.

Figure 2 — l'intervalle que σ/√n promet, et celui qu'on obtient

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. »

Quatre limites
  • 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é

À retenir
  1. 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 ρσ².
  2. Autre lecture : Beff = 1/[ρ + (1 − ρ)/B] plafonne à 1/ρ. À ρ = 0,5 : cent termes valent 0,505 σ², soit deux termes indépendants.
  3. 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.
  4. 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.
  5. Moyenner ne réduit que la part non corrélée — et ne touche pas au biais (b03).
« La variance d'une moyenne de B termes corrélés est ρσ² plus (1 − ρ)σ²/B : le second terme s'éteint avec B, le premier jamais. C'est pourquoi une forêt aléatoire tire des features au hasard pour baisser ρ, pourquoi la LOOCV a une variance élevée, et pourquoi le SE de lignes dépendantes est trop optimiste. »

Chaîne verbalisée — une prise, à voix haute

4 maillons · clique pour révéler après avoir dit
  1. 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/ρ.
  2. 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.
  3. 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.
  4. 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.