Fiche d’exercices 4
Fiche d’exercices — Séance 4 : des données propres, préparer avant d’apprendre
Introduction au ML – Dr. El Hadji Bassirou TOURÉ – DMI \(\cdot\) FST \(\cdot\) UCAD \(\bullet\) Travail à la main, sans machine
Cette fiche reprend, exercice par exercice, les calculs de la Séance 4 : taux de manquants, imputation par la médiane, encodage one-hot, standardisation (z-score), le modèle des \(k\) plus proches voisins à la main, le réglage de \(k\) par la paire de scores, puis la fuite de données et le Pipeline \(f = m \circ \varphi\). Répondre directement sur la fiche.
Aides numériques (valables pour toute la fiche). Quelques racines carrées utiles :
| \(u\) | \(1\) | \(2\) | \(2{,}5\) | \(4{,}09\) | \(8\) | \(10\) | \(13{,}70\) | \(1{,}049\) |
|---|---|---|---|---|---|---|---|---|
| \(\sqrt{u}\) | \(1{,}00\) | \(1{,}41\) | \(1{,}58\) | \(2{,}02\) | \(2{,}83\) | \(3{,}16\) | \(3{,}70\) | \(32{,}4\) |
Médiane d’un nombre pair de valeurs \(=\) moyenne des deux valeurs centrales (valeurs triées). Distance euclidienne en dimension \(d\) : \(d(x,x') = \sqrt{\sum_{j=1}^{d}(x_j - x'_j)^2}\).
Exercice 1 – Taux de manquants
Au poste de santé de Tivaouane, un registre de \(400\) patients a été audité. Après remplacement des zéros impossibles par NaN, on compte les valeurs manquantes par colonne :
| colonne | glycémie | tension | insuline | IMC | fièvre |
|---|---|---|---|---|---|
| nombre de NaN | \(8\) | \(28\) | \(180\) | \(12\) | \(0\) |
| \(m_j\) |
- Rappeler la formule du taux de manquants \(m_j\), puis remplir la dernière ligne du tableau.
Espace de calcul :
- On envisage de jeter toute ligne contenant au moins un trou. En supposant que les colonnes à trous ne se chevauchent pas, combien de patients perdrait-on au plus ? Combien en resterait-il ? Quelle proportion du jeu cela représente-t-il ?
Espace de calcul :
Patients perdus (au plus) : restants : proportion perdue :
- Pour chacune des cinq colonnes, proposer le traitement le plus raisonnable (imputation par la médiane / aucune action), et justifier en une ligne.
Exercice 2 – Médiane et imputation
Une mini-colonne d’insuline (\(\mu\)U/mL) de huit patients, après remplacement des zéros impossibles, contient : \[92 \text{NaN} 145 110 \text{NaN} 130 88 410\]
- Trier les valeurs observées (sans les NaN), puis calculer la médiane.
Espace de calcul :
Valeurs triées :
médiane \(=\)
- Donner la colonne après imputation par la médiane (les valeurs observées ne bougent pas).
| position | \(1\) | \(2\) | \(3\) | \(4\) | \(5\) | \(6\) | \(7\) | \(8\) |
|---|---|---|---|---|---|---|---|---|
| valeur imputée |
- Calculer la moyenne des valeurs observées. Combien de valeurs observées la moyenne dépasse-t-elle ? Conclure : pourquoi la médiane est-elle préférable ici ?
Espace de calcul :
moyenne \(=\) la moyenne dépasse valeurs sur \(6\).
Exercice 3 – Encodage one-hot
Une colonne « groupe sanguin » prend quatre modalités : A, AB, B, O (rangées dans cet ordre alphabétique).
Combien de colonnes binaires le one-hot produit-il ?
Encoder les trois patients suivants (une case « chaude » par ligne) :
| groupe | A | AB | B | O |
|---|---|---|---|---|
| « B » | ||||
| « O » | ||||
| « AB » |
- Pourquoi ne pas coder simplement \(\text{A}=1,\ \text{AB}=2,\ \text{B}=3,\ \text{O}=4\) ? Expliquer en termes d’ordre et de distance.
- Calculer la distance euclidienne entre les vecteurs one-hot de « A » et de « B ». Que vaudrait-elle pour deux modalités quelconques distinctes ? Qu’en conclure sur la géométrie produite par le one-hot ?
Espace de calcul :
\(d(\text{one-hot A},\ \text{one-hot B}) =\)
Exercice 4 – Standardisation (z-score)
Sur le jeu d’entraînement, deux colonnes ont les statistiques suivantes : hémoglobine \(\mu = 12{,}5\), \(\sigma = 1{,}8\) (g/dL) glycémie \(\mu = 120\), \(\sigma = 28\) (mg/dL).
- Rappeler la formule du z-score, puis calculer celui d’un patient à hémoglobine \(15{,}2\) g/dL. Interpréter en une phrase.
Espace de calcul :
\(z =\)
- Un patient du jeu de test a une hémoglobine de \(9{,}8\) g/dL. Calculer son z-score. Question clé : faut-il recalculer \(\mu\) et \(\sigma\) en incluant ce patient ? Justifier.
Espace de calcul :
\(z =\)
- Un troisième patient a une glycémie de \(162\) mg/dL. Calculer son z-score, et le comparer à celui de la question (a). Que permet cette comparaison, alors que les deux colonnes ont des unités différentes ?
Espace de calcul :
\(z =\)
Exercice 5 – Les \(k\) plus proches voisins, à la main
Cinq patients d’entraînement sont décrits par deux caractéristiques déjà standardisées \((z_1, z_2)\) et une classe (P \(=1\), N \(=0\)). On veut classer un nouveau patient \(\star = (0{,}0,\ 1{,}0)\).
| voisin | \(z_1\) | \(z_2\) | classe |
|---|---|---|---|
| \(A\) | \(1{,}0\) | \(2{,}0\) | \(1\) |
| \(B\) | \(-1{,}0\) | \(1{,}0\) | \(0\) |
| \(C\) | \(0{,}5\) | \(-0{,}5\) | \(1\) |
| \(D\) | \(3{,}0\) | \(0{,}0\) | \(1\) |
| \(E\) | \(-2{,}0\) | \(-1{,}0\) | \(0\) |
- Calculer la distance euclidienne de chaque voisin à \(\star\), puis donner le rang (du plus proche au plus lointain).
| voisin | calcul de la distance | distance | rang |
|---|---|---|---|
| \(A\) | |||
| \(B\) | |||
| \(C\) | |||
| \(D\) | |||
| \(E\) |
Donner la prédiction pour \(k = 3\) : voisins retenus classes \(f(\star) =\)
Donner la prédiction pour \(k = 5\) : classes \(f(\star) =\)
Pourquoi choisit-on presque toujours \(k\) impair en classification binaire ?
- L’échelle est une condition de validité. Trois patients sont décrits par (âge, insuline) en unités brutes : Awa \(= (28,\ 100)\), Cheikh \(= (31,\ 300)\), Fatou \(= (65,\ 108)\). Sur le train, âge : \(\mu = 35\), \(\sigma = 10\) ; insuline : \(\mu = 150\), \(\sigma = 100\).
(e.1) En unités brutes, calculer \(d(\text{Awa}, \text{Cheikh})\) et \(d(\text{Awa}, \text{Fatou})\). Qui paraît la plus proche d’Awa ?
Espace de calcul :
\(d_{\text{brut}}(\text{Awa},\text{Cheikh}) =\) \(d_{\text{brut}}(\text{Awa},\text{Fatou}) =\) plus proche :
(e.2) Standardiser les trois patients (z-score de chaque coordonnée), puis recalculer les deux distances. Qui est maintenant la plus proche d’Awa ?
Espace de calcul :
\(d_{\text{std}}(\text{Awa},\text{Cheikh}) =\) \(d_{\text{std}}(\text{Awa},\text{Fatou}) =\) plus proche :
(e.3) L’ordre des voisins s’est-il inversé ? Expliquer en une phrase ce que la standardisation a corrigé.
Exercice 6 – Le réglage de \(k\) : diagnostic
Sur un jeu de dépistage, le kNN a été entraîné puis évalué pour trois valeurs de \(k\). Baseline majoritaire : \(0{,}66\). Attention au sens de lecture : un petit \(k\) donne un modèle complexe.
| \(k\) | accuracy train | accuracy test | écart train \(-\) test | diagnostic |
|---|---|---|---|---|
| \(1\) | \(1{,}00\) | \(0{,}71\) | ||
| \(15\) | \(0{,}80\) | \(0{,}78\) | ||
| \(300\) | \(0{,}67\) | \(0{,}66\) |
Remplir la colonne des écarts.
Remplir la colonne diagnostic (sous-ajusté / bien ajusté / sur-ajusté), puis justifier chaque cas en une phrase, en s’appuyant sur l’écart et sur la baseline.
\(k = 1\) :
\(k = 15\) :
\(k = 300\) :
Valeur de \(k\) à retenir : sur la foi de quel chiffre ?
Le réglage \(k = 1\) a la meilleure accuracy d’entraînement (\(1{,}00\)). Expliquer pourquoi ce chiffre ne doit jamais servir à choisir un modèle, et faire le lien avec la profondeur de l’arbre (Séance 3).
Exercice 7 – Fuite de données et Pipeline
- Pour chaque protocole, dire s’il y a fuite et, le cas échéant, laquelle : variable fuyarde (une colonne contient la réponse) ou prétraitement fuyard (\(\mu\), \(\sigma\), médianes appris hors du train).
| protocole | fuite ? laquelle ? |
|---|---|
| (1) Prédire une réadmission avec la colonne « durée du séjour courant ». | |
| (2) Standardiser tout le jeu, puis faire le split train/test. | |
| (3) Imputer le train avec les médianes du train, puis le test avec ces mêmes médianes. | |
(4) Faire le split, puis appeler fit_transform du scaler sur le jeu de test. |
- La chaîne \(\varphi\) à la main. Un patient du test traverse le Pipeline \(f = m \circ \varphi\). Les paramètres ont été appris sur le train : \(\text{med}_{\text{insuline}} = 120\) ; glycémie \(\mu = 120\), \(\sigma = 28\) ; insuline \(\mu = 150\), \(\sigma = 100\) ; âge \(\mu = 35\), \(\sigma = 10\). Remplir le tableau étape par étape.
| étape | glycémie | insuline | âge |
|---|---|---|---|
| brut | \(162\) | NaN | \(28\) |
| après imputation | |||
| après z-score |
Chaque nombre injecté vient-il du train ou du test ? Pourquoi est-ce essentiel ?
- Remettre la chaîne dans l’ordre. Les cinq étapes d’une étude propre, en désordre : (1) score sur le test ; (2)
train_test_split; (3) remplacer les zéros impossibles par NaN ; (4)fitdu Pipeline sur le train ; (5) construire le Pipeline (imputation \(\to\) standardisation \(\to\) modèle).
Ordre correct :
Où une inversion de \(2\) et \(4\) (fit avant le split) créerait-elle une fuite, et de quel type ?
Pour cette séance
Le cours
À lire en ligne