Fiche d’exercices 7
Fiche d’exercices — Séance 7 : la validation croisée
Introduction au ML – Dr. El Hadji Bassirou TOURÉ – DMI \(\cdot\) FST \(\cdot\) UCAD \(\bullet\) Travail à la main, sans machine
Cette fiche applique, exercice par exercice, les outils de la Séance 7 : la variance d’un découpage unique, la validation croisée à \(k\) plis (calculée à la main), la stratification, le réglage d’un hyperparamètre par courbe de validation, le budget d’une grille GridSearchCV, et la frontière honnête entre réglage et test. Répondre directement sur la fiche.
Aides numériques (valables pour toute la fiche). Régression linéaire par les formules fermées de la Séance 5 (équation normale) : \[w = \frac{\sum_i (x_i - \bar x)(y_i - \bar y)}{\sum_i (x_i - \bar x)^2}, \qquad b = \bar y - w\,\bar x, \qquad \text{MSE} = \frac{1}{m}\sum_{i=1}^{m}\big(y_i - \hat y_i\big)^2.\] Validation croisée à \(k\) plis : \(\displaystyle \text{CV}_k = \frac{1}{k}\sum_{j=1}^{k}\text{score}_j\) — on rapporte la moyenne et la dispersion.
Exercice 1 – La variance d’un seul découpage
Une même recette (Pipeline standardisation \(+\) régression logistique) est évaluée cinq fois sur le paludisme, en changeant seulement la graine du découpage train/test. On obtient les AUC : \[0{,}74 0{,}77 0{,}73 0{,}76 0{,}75 \qquad (\text{somme} = 3{,}75).\]
- Calculer la moyenne et l’étendue (max \(-\) min), puis commenter la dispersion.
Espace de calcul :
moyenne \(=\) étendue \(=\)
- Un collègue n’a fait qu’un découpage et rapporte « AUC \(= 0{,}77\) ». Que vaut réellement cette annonce ?
- Quelle conclusion peut-on légitimement tirer des cinq mesures ?
Exercice 2 – La validation croisée à la main
Jeu-jouet : \(x = (1, 2, 3, 4, 5, 6)\), \(y = (1, 1, 2, 4, 4, 6)\). Validation croisée à 3 plis consécutifs : \(\{1,2\}\), \(\{3,4\}\), \(\{5,6\}\). À chaque tour, on ajuste une droite (équation normale, aide ci-dessus) sur les quatre points restants, puis on mesure la MSE sur les deux points mis de côté.
- Pour chacun des trois tours, donner l’ensemble d’entraînement, la droite apprise \((b, w)\), les prédictions et la MSE de validation. Remplir le tableau (laisser la trace des calculs dans la zone prévue).
| tour | entraîne sur | droite \((b, w)\) | prédictions (valid.) | MSE |
|---|---|---|---|---|
| \(1\) | ||||
| \(2\) | ||||
| \(3\) |
Espace de calcul :
- En déduire \(\text{CV}_3\) (et, si possible, l’écart-type des trois MSE).
Espace de calcul :
\(\text{CV}_3 =\)
- Trois droites différentes ont été ajustées : laquelle garde-t-on comme modèle final ? Justifier.
Exercice 3 – La stratification
Sur un entraînement de \(50\) patients dont \(10\) paludéens (\(20\,\%\)), une validation croisée à \(5\) plis de \(10\) patients chacun est lancée. Un découpage KFold (sans stratification) répartit les positifs ainsi, pli par pli : \[4 3 0 2 1 \qquad (\text{total} = 10).\]
- Calculer la part de positifs dans chaque pli.
| pli | \(1\) | \(2\) | \(3\) | \(4\) | \(5\) |
|---|---|---|---|---|---|
| positifs | \(4\) | \(3\) | \(0\) | \(2\) | \(1\) |
| part de positifs |
- Qu’a de problématique le 3e pli ? (Penser au calcul du rappel et de l’AUC.)
- Que produirait
StratifiedKFoldà la place (nombre de positifs et part par pli) ? Pourquoi est-ce la règle en classification ?
Espace de calcul :
Exercice 4 – Dépouiller une validation croisée
Deux recettes sont en compétition. La recette A est évaluée par CV à \(5\) plis : scores \((0{,}81;\ 0{,}84;\ 0{,}79;\ 0{,}83;\ 0{,}78)\), de somme \(4{,}05\). La recette B n’a été évaluée que par un unique découpage : score \(0{,}85\).
- Calculer la moyenne et la dispersion (amplitude) de A.
Espace de calcul :
moyenne de A \(=\) dispersion \(\approx\)
- Peut-on conclure « B bat A » ? Justifier en s’appuyant sur la variance du découpage.
- Quel protocole rendrait la comparaison équitable ?
Exercice 5 – Lire une courbe de validation
Pour régler la profondeur d’un arbre prédisant la durée d’hospitalisation, on attribue à chaque valeur candidate sa note de validation croisée (\(R^2\) à \(5\) plis) : \[\small \begin{array}{c|ccccccccc} \text{profondeur} & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 9 & 12\\ \hline R^2\ \text{CV} & 0{,}31 & 0{,}45 & 0{,}54 & 0{,}58 & 0{,}60 & 0{,}59 & 0{,}55 & 0{,}47 & 0{,}33 \end{array}\]
Quelle profondeur retenir ?
Lire les deux branches de la courbe en termes de biais et de variance.
- Réentraînée à la profondeur retenue, la recette donne \(R^2 = 0{,}58\) sur le test. Cet écart avec \(0{,}60\) est-il inquiétant ? Justifier.
Exercice 6 – Budgéter une grille GridSearchCV
On règle un arbre par GridSearchCV sur deux hyperparamètres : max_depth \(\in \{3, 5, 7, 9, 11\}\) et min_samples_leaf \(\in \{1, 10, 50\}\), en validation croisée à \(5\) plis.
- Combien de combinaisons la grille contient-elle ? Combien d’entraînements de modèle la recherche déclenche-t-elle (sans compter le réentraînement final) ?
Espace de calcul :
combinaisons \(=\) entraînements \(=\)
- Si un entraînement dure \(2\) secondes, combien de temps la recherche prend-elle ?
Espace de calcul :
durée \(=\)
- On double chacune des deux listes (\(10\) profondeurs, \(6\) valeurs de feuille). Quel est le nouveau nombre d’entraînements ? Quel principe cela illustre-t-il ?
Espace de calcul :
nouveau total \(=\)
Exercice 7 – Trois protocoles, un seul honnête
On veut régler le seuil de décision d’un classifieur du paludisme (la Séance 6 avait laissé ce réglage en suspens). Pour chaque protocole, dire s’il est honnête, et nommer la fuite le cas échéant (variable fuyarde / prétraitement fuyard / test consulté).
| protocole | honnête ? fuite ? |
|---|---|
| (P1) Choisir le seuil sur le jeu de test, en gardant celui qui y maximise la précision. | |
| (P2) Standardiser tout l’entraînement une seule fois, puis lancer la CV qui choisit le seuil. | |
(P3) Obtenir des probabilités hors-échantillon par cross_val_predict sur l’entraînement, y choisir le seuil, puis juger une fois sur le test. |
Justifier brièvement chaque verdict :
(P1)
(P2)
(P3)
Question finale : après un GridSearchCV, le best_score_ est-il une estimation fiable de la performance future ? Justifier.
Pour cette séance
Le cours
À lire en ligne