Aller au contenu principal

Quiz — Entrainement et evaluation de modeles

Quiz 30 min Module 2

Instructions

Ce quiz couvre les concepts du Module 2 : entrainement, evaluation et serialisation de modeles ML. Il comprend 25 questions en 3 sections.

SectionThemeQuestions
AConcepts d'entrainement10
BMetriques d'evaluation8
CSerialisation et versionnement7

Pour chaque question, choisissez la meilleure reponse parmi les options, puis cliquez sur "Voir la reponse" pour verifier.


Section A — Concepts d'entrainement (10 questions)

Question 1

Quel est le role principal de l'ensemble de validation dans un pipeline ML ?

  • A) Entrainer le modele sur plus de donnees
  • B) Evaluer la performance finale du modele
  • C) Selectionner les hyperparametres et comparer les modeles
  • D) Augmenter la taille du jeu d'entrainement
Voir la reponse

Reponse : C

L'ensemble de validation est utilise pour ajuster les hyperparametres et comparer les modeles pendant le developpement. L'ensemble de test (B) est reserve pour l'evaluation finale unique. L'ensemble de validation ne participe jamais a l'entrainement (A) ni n'augmente les donnees (D).


Question 2

Vous decoupez un jeu de donnees de 1000 echantillons en 60% train, 20% validation, 20% test. Combien d'echantillons chaque ensemble contient-il ?

  • A) Train : 600, Val : 200, Test : 200
  • B) Train : 800, Val : 100, Test : 100
  • C) Train : 600, Val : 300, Test : 100
  • D) Train : 700, Val : 150, Test : 150
Voir la reponse

Reponse : A

60% de 1000 = 600 (train), 20% de 1000 = 200 (validation), 20% de 1000 = 200 (test). C'est le decoupage standard 60/20/20.


Question 3

Que signifie le parametre stratify=y dans train_test_split ?

  • A) Les donnees sont triees par ordre croissant de y
  • B) La proportion de chaque classe dans y est preservee dans chaque sous-ensemble
  • C) Les echantillons sont melanges aleatoirement
  • D) Seules les classes majoritaires sont conservees
Voir la reponse

Reponse : B

stratify=y assure que chaque decoupage contient les memes proportions de classes que le jeu de donnees original. C'est crucial pour les jeux de donnees desequilibres. Par exemple, si le jeu de donnees a 70% de classe 0 et 30% de classe 1, chaque decoupage aura egalement environ 70/30.


Question 4

En validation croisee 5-Fold, combien de fois le modele est-il entraine au total ?

  • A) 1 fois
  • B) 4 fois
  • C) 5 fois
  • D) 25 fois
Voir la reponse

Reponse : C

En K-Fold avec K=5, le jeu de donnees est decoupe en 5 folds. Le modele est entraine 5 fois, chaque fois en utilisant un fold different comme validation et les 4 autres comme entrainement. Le score final est la moyenne des 5 scores obtenus.


Question 5

Quelle est la principale difference entre GridSearchCV et RandomizedSearchCV ?

  • A) GridSearch est plus rapide que RandomSearch
  • B) GridSearch teste toutes les combinaisons, RandomSearch echantillonne aleatoirement
  • C) RandomSearch ne fait pas de validation croisee
  • D) GridSearch ne fonctionne qu'avec les modeles lineaires
Voir la reponse

Reponse : B

GridSearchCV teste exhaustivement toutes les combinaisons de la grille de parametres. RandomizedSearchCV echantillonne un nombre fixe (n_iter) de combinaisons aleatoires de l'espace de recherche. RandomSearch est generalement plus efficace quand l'espace de recherche est grand, car certains hyperparametres ont plus d'impact que d'autres.


Question 6

Un modele a un score d'entrainement de 0.99 et un score de test de 0.65. Quel est le diagnostic ?

  • A) Sous-apprentissage
  • B) Bon ajustement
  • C) Surapprentissage
  • D) Fuite de donnees
Voir la reponse

Reponse : C

Un grand ecart entre le score d'entrainement (0.99) et le score de test (0.65) est le signe classique du surapprentissage. Le modele a memorise les donnees d'entrainement mais ne generalise pas aux nouvelles donnees. Solutions : ajouter de la regularisation, reduire la complexite du modele ou collecter plus de donnees.


Question 7

Quelle strategie corrige le mieux un probleme de sous-apprentissage ?

  • A) Ajouter plus de regularisation (L2)
  • B) Reduire le nombre de features
  • C) Utiliser un modele plus complexe
  • D) Reduire la taille du jeu d'entrainement
Voir la reponse

Reponse : C

Le sous-apprentissage signifie que le modele est trop simple pour capturer les patterns des donnees. La solution est d'augmenter la complexite : utiliser un modele plus puissant (Random Forest au lieu de Regression Logistique), ajouter des features ou reduire la regularisation. Les options A, B et D aggraveraient le probleme.


Question 8

Que represente le "biais" dans le compromis biais-variance ?

  • A) L'erreur due a la sensibilite du modele au bruit des donnees
  • B) L'erreur systematique due aux hypotheses simplificatrices du modele
  • C) L'erreur irreductible inherente aux donnees
  • D) L'erreur due au manque de donnees d'entrainement
Voir la reponse

Reponse : B

Le biais est l'erreur systematique causee par les hypotheses simplificatrices du modele. Un modele a biais eleve (ex. : regression lineaire sur des donnees non lineaires) sous-apprend les patterns. La variance (A) est l'erreur due a la sensibilite aux fluctuations des donnees. L'erreur irreductible (C) est le bruit intrinseque.


Question 9

Dans une courbe d'apprentissage, les scores d'entrainement et de validation convergent a un niveau eleve. Quelle est l'interpretation ?

  • A) Surapprentissage severe
  • B) Sous-apprentissage — besoin d'un modele plus complexe
  • C) Bon ajustement — le modele generalise bien
  • D) Fuite de donnees — les scores sont trop eleves
Voir la reponse

Reponse : C

Quand les deux courbes convergent a un niveau eleve, cela signifie que le modele apprend bien les donnees d'entrainement ET generalise bien sur les donnees de validation. C'est le scenario ideal. Le surapprentissage (A) montre un grand ecart entre les deux courbes. Le sous-apprentissage (B) montre les deux courbes a un niveau bas.


Question 10

Quel type de validation croisee est le plus approprie pour les donnees de series temporelles ?

  • A) K-Fold standard
  • B) K-Fold stratifie
  • C) Leave-One-Out
  • D) Time Series Split
Voir la reponse

Reponse : D

Time Series Split respecte l'ordre chronologique des donnees : les donnees d'entrainement precedent toujours les donnees de test dans le temps. Les autres methodes (A, B, C) melangent aleatoirement les donnees, ce qui causerait une fuite temporelle de donnees — utiliser des donnees futures pour predire le passe.


Section B — Metriques d'evaluation (8 questions)

Question 11

Dans une matrice de confusion, que represente un "Faux Positif" ?

  • A) Le modele predit Positif et c'est correct
  • B) Le modele predit Negatif et c'est correct
  • C) Le modele predit Positif mais la vraie valeur est Negative
  • D) Le modele predit Negatif mais la vraie valeur est Positive
Voir la reponse

Reponse : C

Un Faux Positif (FP) = le modele a dit "Positif" (premiere partie) mais s'est trompe ("Faux"). La vraie etiquette est Negative. C'est une erreur de type I (fausse alarme). Exemple : un email legitime classe comme spam. L'option D decrit un Faux Negatif (erreur de type II).


Question 12

Un systeme de detection de cancer a les resultats suivants : VP=90, FP=10, FN=30, VN=870. Quelle est la precision ?

  • A) 0.90
  • B) 0.75
  • C) 0.97
  • D) 0.96
Voir la reponse

Reponse : A

Precision = VP / (VP + FP) = 90 / (90 + 10) = 90 / 100 = 0.90

Cela signifie que parmi toutes les predictions "cancer", 90% sont effectivement des cancers. Le rappel serait VP / (VP + FN) = 90 / 120 = 0.75, et l'exactitude = (VP + VN) / Total = 960/1000 = 0.96.


Question 13

Avec les memes resultats (VP=90, FP=10, FN=30, VN=870), quel est le rappel ?

  • A) 0.90
  • B) 0.75
  • C) 0.97
  • D) 0.96
Voir la reponse

Reponse : B

Rappel = VP / (VP + FN) = 90 / (90 + 30) = 90 / 120 = 0.75

Cela signifie que le modele detecte 75% des vrais cas de cancer. 25% des cas sont manques (Faux Negatifs). Dans un contexte medical, ce rappel est insuffisant — idealement on veut un rappel > 0.95 pour ne manquer presque aucun cas.


Question 14

Pour un systeme de detection de fraude bancaire, quelle metrique doit etre priorisee ?

  • A) Exactitude
  • B) Precision
  • C) Rappel
  • D) Specificite
Voir la reponse

Reponse : C

Le rappel est priorise car le cout d'un Faux Negatif (laisser passer une fraude) est beaucoup plus eleve qu'un Faux Positif (bloquer temporairement une transaction legitime). On prefere quelques fausses alarmes plutot que de manquer de vraies fraudes. L'exactitude (A) est trompeuse car la fraude represente < 1% des transactions.


Question 15

Pourquoi l'exactitude est-elle une metrique trompeuse sur un jeu de donnees desequilibre ?

  • A) Parce qu'elle est trop complexe a calculer
  • B) Parce qu'un modele predisant toujours la classe majoritaire obtient un score eleve
  • C) Parce qu'elle ne tient pas compte du nombre de features
  • D) Parce qu'elle necessite un ensemble de test plus grand
Voir la reponse

Reponse : B

Sur un jeu de donnees avec 95% de classe A et 5% de classe B, un modele qui predit toujours la classe A aura 95% d'exactitude. Pourtant ce modele est completement inutile — il ne detecte aucun cas de classe B. C'est le "paradoxe de l'exactitude". Utilisez le score F1, l'AUC-ROC ou la precision/rappel pour les jeux de donnees desequilibres.


Question 16

Que mesure l'AUC-ROC (Aire sous la courbe ROC) ?

  • A) L'erreur moyenne des predictions
  • B) La capacite du modele a distinguer les classes positives et negatives a differents seuils
  • C) Le nombre de features utilisees par le modele
  • D) La vitesse d'entrainement du modele
Voir la reponse

Reponse : B

L'AUC-ROC mesure la capacite de discrimination du modele : la probabilite qu'un echantillon positif recoive un score plus eleve qu'un echantillon negatif, a travers tous les seuils de classification. AUC de 0.5 = classificateur aleatoire. AUC de 1.0 = classificateur parfait. C'est une metrique independante du seuil.


Question 17

Quelle metrique de regression penalise le plus les grandes erreurs ?

  • A) MAE (Mean Absolute Error)
  • B) MSE (Mean Squared Error)
  • C) MAPE (Mean Absolute Percentage Error)
  • D) R² (Coefficient de determination)
Voir la reponse

Reponse : B

Le MSE (Mean Squared Error) met les erreurs au carre. Une erreur de 10 contribue 100 au MSE, tandis qu'une erreur de 2 ne contribue que 4. Cette mise au carre penalise disproportionnellement les grandes erreurs. Le MAE (A) traite toutes les erreurs proportionnellement. Le MAPE (C) normalise par la valeur reelle. Le R² (D) mesure la variance expliquee.


Question 18

Un modele de regression a un R² de 0.85. Comment l'interpreter ?

  • A) Le modele a 85% d'exactitude
  • B) Le modele explique 85% de la variance de la variable cible
  • C) Le modele a 15% d'erreur
  • D) 85% des predictions sont exactes
Voir la reponse

Reponse : B

R² = 0.85 signifie que le modele explique 85% de la variance de la variable cible. Les 15% restants sont dus a des facteurs non captures par le modele (features manquantes, bruit aleatoire). R² de 1.0 = predictions parfaites. R² de 0 = le modele ne fait pas mieux que predire la moyenne. R² negatif = le modele est pire que la moyenne.


Section C — Serialisation et versionnement (7 questions)

Question 19

Quel est le principal risque de securite associe a pickle.load() ?

  • A) Le fichier peut etre trop grand pour la memoire
  • B) Les donnees peuvent etre corrompues pendant la transmission
  • C) Un fichier pickle malveillant peut executer du code arbitraire lors du chargement
  • D) Les fichiers pickle ne sont pas compatibles entre les systemes d'exploitation
Voir la reponse

Reponse : C

pickle.load() peut deserialiser et executer du code Python arbitraire. Un attaquant peut creer un fichier pickle qui, une fois charge, execute des commandes systeme malveillantes (suppression de fichiers, installation de malware, etc.). C'est pourquoi vous ne devez jamais charger un fichier pickle d'une source non fiable. ONNX est une alternative plus sure car il ne peut pas executer de code arbitraire.


Question 20

Quel est le principal avantage de joblib par rapport a pickle pour les modeles ML ?

  • A) Joblib est plus securise
  • B) Joblib est plus rapide et offre une compression native pour les grands tableaux NumPy
  • C) Joblib fonctionne avec tous les langages de programmation
  • D) Joblib ne necessite pas de fichier sur disque
Voir la reponse

Reponse : B

Joblib est optimise pour les objets contenant de grands tableaux NumPy, ce qui est le cas de la plupart des modeles scikit-learn. Il est 2 a 10 fois plus rapide que pickle pour ces objets et offre une compression integree (compress=3). Note : joblib a les memes risques de securite que pickle (A est faux). Il ne fonctionne qu'en Python (C est faux).


Question 21

Quel format de serialisation permet de deployer un modele en Python, C++, JavaScript et sur mobile ?

  • A) Pickle
  • B) Joblib
  • C) ONNX
  • D) JSON
Voir la reponse

Reponse : C

ONNX (Open Neural Network Exchange) est un format standardise et portable qui permet de deployer des modeles sur tout runtime compatible (Python, C++, JavaScript, mobile avec ONNX Runtime). Pickle (A) et joblib (B) sont limites a Python. JSON (D) peut stocker des parametres mais pas un modele complet avec son architecture.


Question 22

Pourquoi devrait-on serialiser le pipeline complet (pretraitement + modele) et pas seulement le modele ?

  • A) Pour reduire la taille du fichier
  • B) Pour s'assurer que le meme pretraitement est applique en production qu'en entrainement
  • C) Pour accelerer l'inference
  • D) Pour rendre le modele compatible avec ONNX
Voir la reponse

Reponse : B

Si vous ne serialisez que le modele sans le pretraitement (StandardScaler, OneHotEncoder, etc.), vous devez reproduire manuellement le meme pretraitement en production. La moindre difference (moyenne/ecart-type different, categorie inconnue) produit des predictions incorrectes. Serialiser le pipeline complet assure la coherence entre l'entrainement et la production.


Question 23

Quel code illustre une "fuite de donnees" ?

  • A)
X_train, X_test = train_test_split(X, ...)
scaler.fit_transform(X_train)
scaler.transform(X_test)
  • B)
scaler.fit_transform(X)
X_train, X_test = train_test_split(X_scaled, ...)
  • C)
pipeline = Pipeline([('scaler', StandardScaler()), ('clf', model)])
pipeline.fit(X_train, y_train)
  • D)
scores = cross_val_score(pipeline, X_train, y_train, cv=5)
Voir la reponse

Reponse : B

Dans l'option B, scaler.fit_transform(X) calcule la moyenne et l'ecart-type sur l'ensemble du jeu de donnees (y compris les donnees de test) avant le decoupage. Cela signifie que le scaler contient des informations de l'ensemble de test, ce qui constitue une fuite de donnees. Les options A, C et D sont correctes car le pretraitement ne voit jamais les donnees de test.


Question 24

Vous chargez un modele serialise et obtenez un ConvergenceWarning. L'exactitude est de 0.52 alors qu'elle etait de 0.95 pendant l'entrainement. Quelle est la cause la plus probable ?

  • A) Le modele a ete corrompu pendant la sauvegarde
  • B) La version de scikit-learn est differente de celle utilisee pendant l'entrainement
  • C) L'ensemble de test est trop petit
  • D) Le fichier est trop grand
Voir la reponse

Reponse : B

Un ConvergenceWarning combine a une chute drastique de performance au chargement est le signe classique d'une incompatibilite de version de scikit-learn. Les structures internes des estimateurs changent entre les versions, ce qui peut corrompre silencieusement le modele. La solution est de reentrainer avec la version actuelle ou de revenir a la version originale (enregistree dans les metadonnees).


Question 25

Quelle est la meilleure pratique pour le versionnement de modeles ML en production ?

  • A) Ecraser le fichier du modele a chaque nouvel entrainement
  • B) Sauvegarder chaque version avec un nom unique, des metadonnees (metriques, hyperparametres, date) et les versions des dependances
  • C) Ne garder que la derniere version et la precedente
  • D) Utiliser git pour versionner les fichiers binaires de modeles directement
Voir la reponse

Reponse : B

La meilleure pratique est de conserver chaque version du modele avec un nom unique (ex. : model_v1.2.0_2025-03-15.joblib) accompagne de metadonnees completes : metriques de performance, hyperparametres, date d'entrainement, versions de Python et des librairies. Cela permet le retour arriere, l'audit, les tests A/B et la tracabilite. L'option A est dangereuse (pas de retour arriere). L'option D n'est pas recommandee car git n'est pas concu pour les gros fichiers binaires (utilisez plutot DVC ou MLflow).


Resultats

Comptez vos reponses correctes et evaluez votre niveau :

ScoreNiveauRecommandation
23-25 / 25⭐⭐⭐ ExcellentVous maitrisez les concepts du Module 2. Passez au Module 3 !
18-22 / 25⭐⭐ BonBonne comprehension. Revisez les questions que vous avez manquees.
13-17 / 25⭐ AdequatRelisez attentivement les sections Concepts et Serialisation.
0-12 / 25❌ InsuffisantRecommencez le module depuis le debut et refaites le TP2.

Points cles a retenir

📝 Resume des concepts essentiels

Concepts d'entrainement :

  • Toujours decouper en train/validation/test (60/20/20)
  • Validation croisee K-Fold pour des estimations robustes
  • GridSearch vs RandomSearch selon la taille de l'espace de recherche
  • Surapprentissage = train >> test, Sous-apprentissage = les deux bas
  • Compromis biais-variance = trouver l'equilibre

Metriques d'evaluation :

  • Matrice de confusion = base de toutes les metriques de classification
  • Precision = pertinence des predictions positives
  • Rappel = couverture des vrais positifs
  • F1 = moyenne harmonique de la precision/rappel
  • AUC-ROC = discrimination independante du seuil
  • Choisir la metrique selon le cout des erreurs

Serialisation :

  • Pickle : simple mais dangereux (code arbitraire)
  • Joblib : optimise pour sklearn, compression integree
  • ONNX : portable multi-plateforme, plus securise
  • Toujours serialiser le pipeline complet
  • Toujours sauvegarder les metadonnees (versions, metriques)
  • MLflow pour le suivi et le registre de modeles