Fiche d’exercices 4

Fiche d’exercices de la séance 4 d’Introduction au Machine Learning.
Auteurs

Dr. El Hadji Bassirou TOURÉ · DMI/FST/UCAD

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\)
  1. Rappeler la formule du taux de manquants \(m_j\), puis remplir la dernière ligne du tableau.

Espace de calcul :

  1. 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 :

  1. 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\]

  1. Trier les valeurs observées (sans les NaN), puis calculer la médiane.

Espace de calcul :

Valeurs triées :

médiane \(=\)

  1. 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
  1. 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).

  1. Combien de colonnes binaires le one-hot produit-il ?

  2. Encoder les trois patients suivants (une case « chaude » par ligne) :

groupe A AB B O
« B »
« O »
« AB »
  1. 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.

  1. 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).

  1. 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 =\)

  1. 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 =\)

  1. 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\)
  1. 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\)
  1. Donner la prédiction pour \(k = 3\) : voisins retenus classes \(f(\star) =\)

  2. Donner la prédiction pour \(k = 5\) : classes \(f(\star) =\)

  3. Pourquoi choisit-on presque toujours \(k\) impair en classification binaire ?

  1. 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\)
  1. Remplir la colonne des écarts.

  2. 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\) :

  1. Valeur de \(k\) à retenir : sur la foi de quel chiffre ?

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

  1. 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.
  1. 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 ?

  1. 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) fit du 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

Retour au sommet