La force du nombre : les méthodes d’ensemble
Département de Mathématiques et Informatique, Faculté des Sciences et Techniques, Université Cheikh Anta Diop de Dakar
Contenu
La Séance 7 a réglé un arbre du mieux possible : bien dosé, il atteignait AUC \(0{,}73\) sur le paludisme — puis butait. Cette séance dépasse ce plafond non pas en perfectionnant un modèle, mais en en combinant beaucoup, selon deux philosophies opposées.
Souple ou stable : il faut choisir
Un arbre profond mémorise l’entraînement — variance élevée : déplacez quelques patients, et l’arbre change du tout au tout. Un arbre bridé généralise mais manque de finesse — biais élevé. La validation croisée (Séance 7) trouvait le meilleur compromis, mais ce compromis est un plafond : un seul arbre ne peut être à la fois souple et stable.
Rappel chiffré de la Séance 7, sur la durée d’hospitalisation : l’arbre de profondeur \(10\) obtenait \(R^2 = 0{,}726\) en entraînement mais \(0{,}461\) en test — l’écart signe la variance. Le bridant à la profondeur \(6\), on stabilisait à \(R^2 \approx 0{,}55\), sans jamais aller plus haut.
L’idée en une phrase
Plutôt que de chercher l’arbre parfaitement dosé, on laisse chaque arbre être imparfait — puis on en combine un grand nombre, de sorte que leurs défauts se compensent.
Deux façons de combiner, qui structurent toute la séance :
Réduire la variance, ou réduire le biais : deux familles, deux mécaniques, qu’il faut comprendre séparément avant de les opposer.
Analogie
Un jury de quartier juge une affaire. Chaque juré pris isolément se trompe souvent — disons une fois sur trois. Mais si leurs erreurs sont indépendantes (ils ne se copient pas), la majorité se trompe bien plus rarement que chacun : les fautes des uns sont noyées par les votes corrects des autres. Un collège de votants médiocres mais variés surpasse n’importe lequel d’entre eux.
L’idée en une phrase
Agréger les prédictions de nombreux modèles décorrélés fait tomber l’erreur de l’ensemble en dessous de l’erreur de chaque membre — à la stricte condition que leurs erreurs ne soient pas les mêmes.
Définition
Pour \(M\) votants indépendants ayant chacun raison avec probabilité \(p > 0{,}5\), la probabilité que la majorité ait raison suit une loi binomiale, et croît vers \(1\) avec \(M\).
\[ P(\text{majorité correcte}) \;=\; \sum_{k > M/2} \binom{M}{k}\, p^k (1-p)^{M-k} \]
Pour \(p > 0{,}5\), cette somme tend vers \(1\) quand \(M\) grandit (théorème du jury de Condorcet, 1785). La condition \(p > 0{,}5\) est indispensable : si chaque votant fait pire que le hasard, la majorité empire elle aussi. Et tout repose sur l’indépendance — la formule binomiale n’est valable que si les erreurs ne sont pas corrélées.
Des jurés indépendants, chacun correct à \(65\,\%\), décision à la majorité :
| nombre de jurés | majorité correcte |
|---|---|
| \(1\) | \(0{,}650\) |
| \(3\) | \(0{,}718\) |
| \(11\) | \(0{,}851\) |
| \(51\) | \(0{,}986\) |
Onze votants à \(65\,\%\) atteignent \(85\,\%\) ; cinquante et un, près de \(99\,\%\). Mais l’indépendance est tout : cinquante et un jurés qui copient le même se trompent encore \(35\,\%\) du temps. Tout l’art du métier sera de fabriquer des arbres qui ne se ressemblent pas.
Pourquoi moyenner aide — et ce que ça ne corrige pas
Moyenner plusieurs modèles ne change pas leur biais commun : si tous se trompent dans le même sens, la moyenne aussi. En revanche, cela réduit leur variance — les écarts individuels dus au hasard du tirage se compensent. C’est exactement le profil d’un arbre profond : beaucoup de variance, peu de biais.
De là, les deux stratégies de la séance, désormais nommées précisément : (1) prendre des modèles à variance élevée et la faire tomber en moyennant — le bagging et les forêts ; (2) prendre des modèles à biais élevé et le réduire en les enchaînant — le boosting. La prochaine section quantifie exactement de combien moyenner réduit la variance, et pourquoi la décorrélation y est décisive.
Énoncé
Correction
(a) Mieux : avec \(p = 0{,}70 > 0{,}5\) et l’indépendance, la majorité dépasse \(0{,}70\) (et grimpe vers \(1\) avec le nombre). (b) Exactement \(0{,}70\) — onze avis identiques valent un seul avis ; la corrélation parfaite annule tout le bénéfice de la foule. (c) Non, elle aggrave : \(p = 0{,}40 < 0{,}5\), donc la majorité fait pire que \(40\,\%\) — une foule de votants sous le hasard converge vers l’erreur. Conditions vitales : \(p > 0{,}5\) et indépendance.
L’idée en une phrase
Pour fabriquer des arbres différents à partir d’un seul jeu de données, on entraîne chacun sur un échantillon bootstrap — un tirage avec remise de même taille — puis on agrège : vote majoritaire en classification, moyenne en régression. C’est le bagging (bootstrap aggregating).
Chaque arbre voit une version légèrement déformée des données : certains patients en double, d’autres absents. Les arbres diffèrent donc, leurs erreurs se décorrèlent un peu, et la moyenne gagne en stabilité. Reste à comprendre ce qu’est précisément ce tirage, et combien il laisse de patients de côté.
Un tirage avec remise sur six patients
Six patients numérotés \(1\) à \(6\). Un échantillon bootstrap tire \(6\) fois avec remise — un même patient peut sortir plusieurs fois, un autre pas du tout : \[\text{tirage} : \{2,\ 3,\ 4,\ 5,\ 5,\ 6\} \;\Rightarrow\; \text{vus} : \{2,3,4,5,6\}, \text{absent} : \{1\}.\] Le patient \(5\) compte double (il pèsera plus dans cet arbre) ; le patient \(1\) n’a pas servi — il est out-of-bag (OOB) pour cet arbre. Un autre arbre tirera un autre échantillon, laissera d’autres patients de côté : c’est cette diversité qui décorrèle les arbres.
Sur un grand jeu, la proportion de patients vus se stabilise à une valeur remarquable — que le calcul suivant établit.
La limite \(1 - 1/e\)
À chaque tirage, un patient donné a une chance \(\tfrac{1}{n}\) d’être choisi, donc \(1 - \tfrac{1}{n}\) de ne pas l’être. Les \(n\) tirages étant indépendants, la probabilité qu’il soit absent des \(n\) tirages est le produit.
\[ P(\text{absent}) = \Big(1 - \tfrac{1}{n}\Big)^{n} \xrightarrow[n \to \infty]{} \frac{1}{e} \approx 0{,}368 \]
(Rappel : \(\big(1 + \tfrac{x}{n}\big)^n \to e^{x}\) ; ici \(x = -1\), d’où \(e^{-1}\).) Donc un patient a \(\approx 37\,\%\) de chances d’être out-of-bag, et \(\approx \mathbf{63\,\%}\) de figurer dans l’échantillon. Vérification : \(n = 6 \to 0{,}335\) ; \(n = 100 \to 0{,}366\) ; \(n = 10\,000 \to 0{,}368\). La convergence est rapide.
Un seul jeu de données engendre plusieurs échantillons bootstrap ; un arbre par échantillon, entraîné indépendamment ; les prédictions sont agrégées en une seule (moyenne ou vote). Chaque arbre est individuellement instable — mais leurs instabilités se compensent à l’agrégation. Comme les arbres ne dépendent pas les uns des autres, on peut les entraîner en parallèle.
Définition
Soit \(B\) échantillons bootstrap, et \(\hat f_b\) l’arbre entraîné sur le \(b\)-ième. La prédiction du bagging agrège les \(B\) arbres : par moyenne des probabilités (classification, ou régression), ou par vote majoritaire des classes.
\[ \hat f_{\text{bag}}(x) \;=\; \frac{1}{B}\sum_{b=1}^{B} \hat f_b(x) \]
Les arbres baggés sont délibérément profonds (non élagués) : leur biais est faible, et le bagging se charge d’écraser leur variance. C’est l’inverse du réflexe « bridons l’arbre » de la Séance 7 — ici, on veut des arbres instables, car on dispose du moyen de les stabiliser collectivement.
L’idée en une phrase
Puisque chaque patient est OOB pour environ un tiers des arbres, on peut le faire prédire par ces arbres-là seulement — qui ne l’ont jamais vu. En agrégeant ces prédictions OOB sur tous les patients, on obtient une estimation de performance sans réserver de jeu de validation.
Le mécanisme reproduit exactement l’esprit de la validation croisée (Séance 7) — juger chaque donnée par des modèles qui l’ignorent — mais il est offert par le bagging sans calcul supplémentaire : les arbres qui n’ont pas vu un patient existent déjà, il suffit de les interroger. C’est un avantage propre aux méthodes baggées.
Un score gratuit
Un bagging de \(100\) arbres sur le paludisme affiche un score OOB de \(0{,}869\) (accuracy), calculé sans toucher au test : chaque patient d’entraînement a été prédit par les \(\approx 37\) arbres qui ne l’avaient pas dans leur échantillon. C’est un diagnostic immédiat de la qualité de l’ensemble, disponible à la fin du fit.
Deux nuances. L’OOB est une accuracy : sur cette classe rare (\(11{,}8\,\%\) de positifs), \(0{,}869\) doit se lire en regard de la baseline \(0{,}882\) (Séance 6) — ce bagging ne la bat pas en accuracy, et il faudra le juger à l’AUC. Et le test reste scellé : l’OOB sert au développement, pas au verdict final.
Énoncé
Un échantillon bootstrap est tiré sur cinq patients \(\{1,2,3,4,5\}\) ; le tirage donne \(\{2,\ 2,\ 4,\ 5,\ 5\}\). (a) Quels patients sont vus, lesquels sont out-of-bag ? (b) Le patient \(3\) peut-il servir à évaluer l’arbre entraîné sur ce tirage, et pourquoi ? (c) Sur un très grand jeu, quelle fraction de patients un échantillon bootstrap laisse-t-il en moyenne de côté ?
Correction
(a) Vus : \(\{2, 4, 5\}\) (le \(2\) et le \(5\) comptent double) ; out-of-bag : \(\{1, 3\}\). (b) Oui — le patient \(3\) n’a pas servi à entraîner cet arbre, il en est OOB ; le faire prédire par cet arbre est une évaluation honnête, car l’arbre ne l’a jamais mémorisé. (c) Environ \(1/e \approx \mathbf{37\,\%}\) sont laissés de côté (et \(\approx 63\,\%\) retenus) — la limite de \(\big(1 - 1/n\big)^n\).
Des arbres baggés peuvent rester semblables
Si une variable est très prédictive, tous les arbres baggés la choisissent en haut de leur structure — ils se ressemblent malgré le bootstrap, et leurs erreurs restent fortement corrélées. Or moyenner des modèles corrélés ne réduit presque pas la variance : le bénéfice de la foule s’effondre quand les votants se ressemblent.
Pour mesurer l’enjeu, il faut quantifier exactement comment la corrélation entre arbres limite la réduction de variance — c’est l’objet de la formule suivante, et elle justifiera à elle seule l’ingrédient des forêts.
Définition
La variance de la moyenne de \(B\) modèles, chacun de variance \(\sigma^2\) et deux à deux corrélés au coefficient \(\rho\), n’est pas \(\sigma^2/B\) : un terme irréductible subsiste, gouverné par \(\rho\).
\[ \operatorname{Var}\!\Big(\tfrac{1}{B}\textstyle\sum_b \hat f_b\Big) \;=\; \rho\,\sigma^2 \;+\; \frac{1-\rho}{B}\,\sigma^2 \;\xrightarrow[B \to \infty]{}\; \rho\,\sigma^2 \]
Lecture décisive : ajouter des arbres (\(B \to \infty\)) fait disparaître le second terme, mais laisse \(\rho\,\sigma^2\). La variance de l’ensemble ne descend jamais sous la corrélation entre arbres. Donc : pour gagner, il ne suffit pas d’ajouter des arbres — il faut baisser \(\rho\). C’est toute la raison d’être de la forêt aléatoire.
À corrélation \(\rho = 0{,}9\) (arbres baggés qui se ressemblent), cent arbres ne font tomber la variance que de \(1{,}0\) à \(0{,}90\) — presque rien. À \(\rho = 0{,}3\) (arbres décorrélés), de \(1{,}0\) à \(0{,}31\). À \(\rho = 0\) (idéal inatteignable), à \(0{,}01\). Le message est sans appel : la décorrélation, pas le nombre, est le vrai levier. Reste à savoir comment décorréler — et la forêt a une idée simple.
L’idée en une phrase
La forêt aléatoire ajoute au bagging un second hasard : à chaque coupure de chaque arbre, seules max_features variables tirées au sort sont candidates. Aucun arbre ne peut alors s’appuyer systématiquement sur la même variable dominante — leur corrélation \(\rho\) chute, et la moyenne devient bien plus efficace.
L’astuce est subtile : on dégrade volontairement chaque arbre (en lui cachant des variables) pour améliorer l’ensemble. Un arbre pris seul devient un peu moins bon ; mais comme les arbres se ressemblent moins, leur moyenne — la seule chose qui compte — gagne sur le tableau précédent.
Définition
Une forêt aléatoire est un bagging d’arbres profonds où chaque nœud ne choisit sa coupure que parmi max_features variables tirées au hasard. La prédiction est la moyenne des probabilités des \(B\) arbres ainsi décorrélés.
\[ \hat p(x) \;=\; \frac{1}{B}\sum_{b=1}^{B} \hat p_b(x) \qquad (B = \texttt{n\_estimators},\ \text{coupures sur } \texttt{max\_features} \text{ variables}) \]
Deux réglages principaux : n_estimators (le nombre d’arbres) et max_features (le degré de décorrélation). Le défaut de max_features est \(\sqrt{d}\) variables par coupure en classification — un point de départ éprouvé. Une variante, les extra-trees, pousse le hasard plus loin en tirant aussi les seuils au sort : encore plus de décorrélation, des arbres encore plus faibles.
AUC de validation croisée selon le nombre d’arbres : \(1 \to 0{,}53\) ; \(20 \to 0{,}63\) ; \(100 \to 0{,}65\) ; \(500 \to 0{,}66\). C’est la formule de variance en action : le terme \(\tfrac{1-\rho}{B}\sigma^2\) s’éteint, on bute sur le plancher \(\rho\,\sigma^2\). Propriété capitale qui en découle : ajouter des arbres à une forêt ne fait jamais sur-apprendre — la courbe monte puis plafonne. n_estimators n’est donc pas à régler finement : on en met « assez » (quelques centaines), le surcoût est en temps de calcul, pas en qualité.
Le seul réglage vraiment sensible de la forêt
max_features dose directement la corrélation \(\rho\) : petit \(\Rightarrow\) arbres très décorrélés (mais chacun plus faible) ; grand (toutes les variables) \(\Rightarrow\) on retombe sur le bagging, \(\rho\) élevé. C’est un compromis entre décorrélation et force individuelle.
Sur le paludisme, AUC de validation croisée
max_features |
\(1\) | \(2\) | \(3\) | \(\sqrt{d}\) | toutes |
|---|---|---|---|---|---|
| AUC CV | \(0{,}659\) | \(0{,}657\) | \(0{,}649\) | \(0{,}657\) | \(0{,}647\) |
La valeur la plus restrictive (\(1\) variable par coupure) donne ici la meilleure AUC, et « toutes les variables » (le bagging pur) la plus faible — confirmation directe : sur ces données, plus on décorrèle, mieux c’est. L’écart reste modeste car le problème ne compte que \(5\) variables.
L’idée en une phrase
La forêt peut mesurer combien chaque variable a fait baisser l’impureté (Gini, Séance 3), cumulé sur tous les nœuds qui l’utilisent et tous les arbres — donnant un classement de l’utilité apparente des variables.
C’est l’un des attraits majeurs des forêts : là où la logistique offrait des poids (Séance 6), la forêt offre un score d’importance par variable, applicable même quand les relations sont non linéaires. Séduisant — mais cette mesure recèle un piège sérieux, que le cas du paludisme va révéler crûment.
Lecture prudente
Sur le paludisme, glycémie, hémoglobine et âge ressortent « importantes » — alors que, par construction des données, la maladie ne dépend que de la saison et de la fièvre. Pourquoi cette trahison ? Ces variables continues offrent une multitude de seuils de coupure possibles : les arbres s’en servent abondamment pour fragmenter le bruit, gonflant leur impureté cumulée. L’importance par impureté favorise mécaniquement les variables à forte cardinalité, même non causales.
À retenir : l’importance suggère des pistes, elle ne prouve aucune causalité — et se méfie tout particulièrement des variables continues. Une mesure plus fiable (l’importance par permutation) existe, mais dépasse le cadre de la séance.
from sklearn.ensemble import RandomForestClassifier
foret = RandomForestClassifier(n_estimators=300, # assez d'arbres (ca plafonne)
max_features="sqrt", # decorrelation (defaut)
oob_score=True, # validation gratuite
random_state=0, n_jobs=-1)
foret.fit(X_train, y_train)
print(foret.oob_score_) # estimation OOB, sans toucher au test
print(foret.feature_importances_) # a lire avec prudence
proba = foret.predict_proba(X_test)[:, 1]Aucun StandardScaler : les arbres travaillent par seuils, insensibles à l’échelle — contrairement à la logistique de la Séance 6 qui l’exigeait. n_jobs=-1 entraîne les arbres en parallèle : le bagging est trivialement parallélisable, chaque arbre étant indépendant des autres.
Énoncé
Deux forêts sont entraînées sur le même problème. Forêt A : max_features=1, AUC CV \(0{,}74\). Forêt B : max_features \(=\) toutes les variables, AUC CV \(0{,}70\). (a) Laquelle a les arbres les plus décorrélés ? (b) Pourquoi B, qui a des arbres individuellement meilleurs, obtient-elle un ensemble moins bon ? (c) Que vaudrait B, conceptuellement, par rapport à un simple bagging ?
Correction
(a) A : moins de variables candidates par coupure \(\Rightarrow\) arbres plus variés \(\Rightarrow\) \(\rho\) plus faible. (b) Parce que la performance de l’ensemble dépend de \(\rho\,\sigma^2\), pas de la qualité d’un arbre seul : les arbres de B se ressemblent (tous prennent la variable dominante), leur moyenne réduit peu la variance. (c) B est un bagging : « toutes les variables candidates à chaque coupure » supprime le second hasard de la forêt — d’où sa corrélation élevée et son moindre rendement.
Analogie
Un élève qui révise : il traite une série d’exercices, repère ceux qu’il a ratés, et concentre la révision suivante sur ses fautes — pas sur ce qu’il maîtrise déjà. Le boosting fait pareil : chaque nouvel arbre se concentre sur ce que les précédents ont mal prédit. Les arbres ne votent plus en parallèle (comme la forêt) ; ils se succèdent, chacun corrigeant le cumul de tous ceux d’avant.
L’idée en une phrase
Le boosting construit les arbres séquentiellement : chacun est entraîné à rattraper l’erreur résiduelle de la somme des arbres déjà construits. On réduit ainsi le biais — l’exact opposé de la forêt, qui réduisait la variance.
Quatre points, premier arbre
Jouet de régression : \(x = (1,2,3,4)\), \(y = (2,3,5,9)\). Le gradient boosting part d’une prédiction constante, puis ajoute des arbres (ici des souches : profondeur \(1\)) ajustés sur les résidus.
MSE de départ : \(7{,}19\).
Mise à jour et deuxième arbre
La MSE chute étape par étape : \(7{,}19 \to 1{,}17 \to 0{,}47\). Chaque arbre ne corrige que le reste laissé par les précédents — jamais la cible entière.
La prédiction finale est la somme de tous les arbres, \(F_0 + h_1 + h_2 + \dots\), et non leur moyenne : différence structurelle avec le bagging, où l’on divisait par \(B\).
Les pointillés rouges — les résidus que chaque arbre doit rattraper — raccourcissent visiblement à chaque étape : la prédiction (en vert) épouse de mieux en mieux la cible. C’est exactement le comportement « apprendre de ses fautes » de l’analogie, rendu quantitatif.
Boosting et descente de gradient sont une même idée
Pour la perte MSE \(\tfrac12 (y - F)^2\), la dérivée par rapport à la prédiction \(F\) est \(-(y - F) = -\,\text{résidu}\). Ajuster un arbre sur les résidus, c’est donc le faire pointer dans la direction \(-\nabla(\text{perte})\) : un pas de descente de gradient, mais dans l’espace des fonctions au lieu de l’espace des poids.
\[ r_i \;=\; y_i - F(x_i) \;=\; -\,\frac{\partial}{\partial F}\Big[\tfrac12\big(y_i - F(x_i)\big)^2\Big] \]
La descente de gradient de la Séance 5 déplaçait des poids \((b, \mathbf{w})\) ; le gradient boosting ajoute des fonctions (des arbres), chacune approximant le gradient négatif de la perte. C’est la même mécanique d’optimisation, et c’est pourquoi il fonctionne avec n’importe quelle perte dérivable — dont la log-loss de la Séance 6 pour la classification.
L’idée en une phrase
Ajouter chaque arbre en entier corrige vite mais brutalement — et finit par rattraper le bruit. On multiplie donc chaque arbre par un petit taux d’apprentissage learning_rate \(\nu\) : des pas plus petits, plus nombreux, plus prudents.
\[ F_{m}(x) \;=\; F_{m-1}(x) \;+\; \nu \cdot h_m(x) \qquad (\nu = \texttt{learning\_rate} \in\, ]0,\ 1]) \]
C’est le même \(\nu\) que le pas de la descente de gradient (Séance 5) : trop grand, on oscille et on rattrape le bruit ; trop petit, on progresse lentement. learning_rate et n_estimators se règlent donc ensemble — un \(\nu\) petit exige plus d’arbres pour le même progrès, mais généralise mieux.
AUC de validation croisée sur le paludisme, selon le couple \((\nu, \texttt{n\_estimators})\). Le meilleur coin est en haut à gauche — \(\nu = 0{,}01\), peu d’arbres : \(0{,}698\). En bas à droite — \(\nu = 1\), beaucoup d’arbres : \(0{,}610\), le modèle a rattrapé le bruit de l’entraînement. À l’exact opposé de la forêt : là où ajouter des arbres faisait plafonner sans risque, ici « plus d’arbres » à grand pas dégrade. Le boosting est plus puissant, mais exige le réglage soigneux de la Séance 7.
from sklearn.ensemble import GradientBoostingClassifier
gb = GradientBoostingClassifier(n_estimators=100, # arbres sequentiels
learning_rate=0.1, # pas (a regler avec n_estimators)
max_depth=3, # arbres FAIBLES (peu profonds)
random_state=0)
gb.fit(X_train, y_train)
proba = gb.predict_proba(X_test)[:, 1]Trois différences de fond avec la forêt : les arbres sont peu profonds (des « apprenants faibles » — le biais sera réduit par le nombre d’étapes, pas par la profondeur de chacune) ; l’entraînement est séquentiel, donc non parallélisable (chaque arbre attend la prédiction du précédent) ; et le couple learning_rate/n_estimators doit être réglé. Les bibliothèques XGBoost et LightGBM en sont des versions optimisées, omniprésentes dans les compétitions et l’industrie.
Énoncé
Sur trois points, la prédiction courante est \(F_1 = (3;\ 5;\ 8)\) et la cible \(y = (4;\ 4;\ 10)\). (a) Calculer les résidus \(r_2 = y - F_1\). (b) Une souche prédit ces résidus par \((+0{,}5;\ +0{,}5;\ +2)\) ; avec \(\nu = 0{,}5\), donner la nouvelle prédiction \(F_2\). (c) La somme des carrés des résidus a-t-elle diminué ? (d) Un point a-t-il été sur-corrigé ?
Correction
(a) \(r_2 = (4-3;\ 4-5;\ 10-8) = (\mathbf{+1;\ -1;\ +2})\). (b) \(F_2 = F_1 + 0{,}5\,(0{,}5;\ 0{,}5;\ 2) = (3{,}25;\ 5{,}25;\ 9{,}00)\). (c) Avant : \(1 + 1 + 4 = 6\) ; après : \(0{,}5625 + 1{,}5625 + 1 = \mathbf{3{,}125}\) — oui, l’erreur a diminué de moitié. (d) Le point \(2\) : son résidu était \(-1\), la souche a ajouté \(+0{,}25\), l’éloignant légèrement (de \(5\) à \(5{,}25\), alors que la cible est \(4\)). Le pas prudent corrige globalement mais peut sur-corriger localement ; d’autres arbres rattraperont.
Le tableau qui tranche
| forêt aléatoire (bagging) | gradient boosting | |
|---|---|---|
| arbres | profonds, forts | peu profonds, faibles |
| construits | en parallèle (indépendants) | en série (chacun corrige) |
| agrégation | moyenne / vote (\(\div B\)) | somme pondérée (\(+ \nu h_m\)) |
| réduit surtout | la variance | le biais |
| trop d’arbres ? | plafonne (sans risque) | sur-apprend (dérive) |
| réglage clé | max_features (peu sensible) |
\(\nu\) et n_estimators (délicat) |
| parallélisable | oui | non |
Une règle de pouce, à nuancer toujours par la validation croisée :
n_estimators) et d’un risque réel de sur-apprentissage ;Mais « plus précis en général » ne veut pas dire « plus précis ici » : le cas du paludisme va le rappeler avec force.
Cinq modèles sur le paludisme, jugés à l’AUC en validation croisée et sur le test (méthode de la Séance 7) : baseline \(0{,}50\) ; logistique \(0{,}71\) ; arbre réglé \(0{,}73\) ; forêt \(0{,}68\) ; gradient boosting \(0{,}72\). Surprise : les ensembles ne dominent pas. L’arbre réglé et la logistique font aussi bien, voire mieux.
Pourquoi les ensembles ne gagnent pas ici
Le risque de paludisme, dans ces données, dépend essentiellement de deux variables de façon simple (saison, fièvre — c’est ainsi que le jeu est construit). Un modèle linéaire ou un petit arbre capture déjà ce signal. Les forêts et le boosting, en cherchant des interactions complexes dans des variables continues non causales (glycémie, âge), se laissent distraire par le bruit — leur puissance se retourne contre elles.
Ce n’est pas un défaut des ensembles : c’est une inadéquation entre la complexité du modèle et celle du problème. La même forêt, sur un jeu riche en interactions, écraserait la logistique.
La morale, généralisée
Aucun modèle n’est supérieur dans l’absolu (c’est le théorème dit du « no free lunch »). La complexité d’un modèle doit être justifiée par les données : on n’emploie une forêt ou un boosting que si le gain en validation croisée le démontre.
Conséquence pratique, qui prolonge la discipline de la Séance 7 : comparer honnêtement tous les candidats — du plus simple au plus puissant — par validation croisée, puis, à performance égale, préférer le plus simple. Le plus simple est plus rapide à entraîner, plus facile à déployer, plus interprétable, et moins sujet au sur-apprentissage. La puissance ne se paie que lorsqu’elle rapporte.
Énoncé
Sur un problème, on mesure en validation croisée : logistique AUC \(0{,}71\), forêt \(0{,}72\), gradient boosting réglé \(0{,}80\). Sur un autre problème : logistique \(0{,}90\), forêt \(0{,}88\), boosting \(0{,}90\). Pour chaque problème, quel modèle retenir, et que peut-on deviner sur la nature du signal ?
Correction
Problème 1 : le boosting (\(0{,}80\)) domine nettement — le signal contient probablement des interactions complexes que le linéaire et la forêt simple ne captent pas ; la puissance est ici justifiée, on retient le boosting. Problème 2 : les trois se valent (\(\approx 0{,}90\)) — le signal est largement linéaire, et l’on choisit la logistique : même performance, modèle plus simple, plus rapide, plus interprétable. À performance égale, la simplicité l’emporte.
De bout en bout
1. Établir une baseline et un modèle simple (logistique, arbre réglé — Séances 6 et 7) \(\to\) 2. essayer une forêt aléatoire (quelques centaines d’arbres, défauts) : robuste, peu de réglage, OOB pour un premier diagnostic \(\to\) 3. si le signal semble riche, essayer un gradient boosting et régler \(\nu\)/n_estimators par validation croisée \(\to\) 4. comparer tous les candidats à l’AUC en CV, jamais sur le test \(\to\) 5. à performance égale, choisir le plus simple \(\to\) 6. verdict final sur le test scellé, une seule fois.
L’essentiel
max_features variables par coupure (décorrélation) ; n_estimators plafonne (jamais de sur-apprentissage).n_estimators décisif ; peut sur-apprendre.n_estimators d’une forêt : inutile, ça plafonne — en mettre « assez » suffit.n_estimators d’un boosting à grand learning_rate : sur-apprentissage garanti.Séance 9 — Apprendre sans étiquettes
Jusqu’ici, chaque patient portait une étiquette à prédire (durée, paludisme) : c’était l’apprentissage supervisé. La Séance 9 lâche les étiquettes : comment regrouper des patients similaires sans savoir d’avance en quels groupes — le clustering (\(k\)-moyennes) — et comment résumer des données à beaucoup de variables en en gardant l’essentiel — la réduction de dimension (PCA).