6  🧪 Évaluation des Modèles

6.1 📊 Métriques de Classification

Le piège des métriques de vanité

En 2026, l’industrie a enfin compris que l’Accuracy (exactitude) est souvent une “métrique de vanité”. Dans un système de détection de fraude où 99,9 % des transactions sont légitimes, une précision globale de 99,9 % peut être atteinte par un modèle qui ne détecte absolument rien. L’ingénierie moderne exige donc une vision multidimensionnelle du risque (Imani et al. 2026).

6.1.1 📊 Matrice de Confusion

La matrice de confusion est votre outil de diagnostic fondamental. Elle agit comme un bilan sanguin pour l’algorithme en classant les résultats en quatre quadrants (“Classification: Justesse, Rappel, Précision Et Métriques Associées | Machine Learning” 2026) :

  • Vrais Positifs (TP) : Le modèle a prédit “Positif” et c’était vrai.
  • Vrais Négatifs (TN) : Le modèle a prédit “Négatif” et c’était vrai.
  • Faux Positifs (FP) : La “fausse alerte”. Le modèle a prédit “Positif” mais c’était faux.
  • Faux Négatifs (FN) : Le “cas manqué”. Le modèle a prédit “Négatif” mais c’était positif.

6.1.2 ⚖️ Précision vs Rappel

En tant qu’architecte, votre choix de métrique dépend du coût de l’erreur dans le monde réel (Pedigo 2026).

  • La Précision (Fiabilité) :
    • Question clé : “Sur toutes mes alertes, combien étaient vraies ?”
    • Optimisation : À optimiser lorsque le coût d’une fausse alerte est trop élevé.
    • Exemple : Un filtre anti-spam (classer un mail important en spam bloque l’utilisateur).
  • Le Rappel (Exhaustivité) :
    • Question clé : “Sur tous les cas réels, combien en ai-je capturés ?”
    • Optimisation : À optimiser lorsque rater un cas positif est extrêmement dangereux.
    • Exemple : Le diagnostic médical (mieux vaut une fausse alerte qu’un cancer non soigné).

6.1.3 🏆 Scores Globaux

Pour ne pas avoir à choisir entre les deux, on utilise des scores de synthèse :

  1. F1-Score : C’est la moyenne harmonique entre précision et rappel. Il est indispensable pour les jeux de données déséquilibrés car il pénalise fortement les modèles qui sacrifient l’une des deux mesures (Bañuelos 2026).
  2. ROC-AUC : Mesure la capacité du modèle à séparer les classes. Un score de 1.0 est parfait, 0.5 équivaut au hasard.
  • Attention : Pour des données extrêmement déséquilibrées (ex: 1 fraude pour 10 000 transactions), le ROC-AUC est souvent trop optimiste. On préférera alors le PR-AUC (Precision-Recall AUC) (Imani et al. 2026).

6.1.4 🌳 Boussole des Métriques

Pour guider le choix de votre indicateur d’évaluation selon la distribution de vos classes et la nature des risques métiers, suivez cet arbre décisionnel :

flowchart TD
    A[Choix de la Métrique] --> B{Données Équilibrées ?}
    B -->|Oui| C[Accuracy]
    B -->|Non| D{Quel est le pire risque ?}
    
    D -->|Fausse Alerte / FP| E[Optimiser la Précision]
    D -->|Cas Manqué / FN| F[Optimiser le Rappel]
    D -->|Équilibre Critique| G[F1-Score]
    
    style E fill:#dc322f,stroke:#073642,color:#fdf6e3
    style F fill:#859900,stroke:#073642,color:#fdf6e3

6.2 ⚙️ Optimisation des Hyperparamètres

Les manettes de l’algorithme

Les hyperparamètres ne sont pas appris par le modèle (comme les poids d’un réseau de neurones), ils sont définis par vous avant l’entraînement. C’est la profondeur maximale de votre Arbre de Décision, ou le paramètre K de votre algorithme KNN. Un modèle XGBoost mal réglé sera souvent battu par une simple Régression Logistique bien réglée (“Hyperparameter Tuning: Grid Search, Random Search, and Bayesian Optimization” 2024).

Pour trouver la combinaison parfaite d’hyperparamètres (le Tuning), l’industrie a connu trois grandes ères.

6.2.2 🧠 Optimisation Bayésienne

En 2026, l’outil Optuna est devenu le standard absolu pour remplacer les anciennes méthodes de recherche. L’optimisation bayésienne agit comme un chercheur d’or : plutôt que de creuser au hasard, elle apprend de ses forages précédents pour déduire où se trouve le filon.

  • Algorithme TPE (Tree-structured Parzen Estimator) :
    1. Sépare l’historique des essais en deux groupes : les bons et les mauvais résultats.
    2. Modélise mathématiquement ces densités de probabilité : l(x) pour les bons et g(x) pour les mauvais.
    3. Choisit les hyperparamètres qui maximisent le ratio l(x)/g(x). Il cible donc les zones à succès et fuit les échecs.
  • Élagage (Pruning) : Super-pouvoir d’Optuna. S’il détecte que la courbe d’apprentissage à mi-parcours est désastreuse par rapport aux essais précédents, il stoppe l’entraînement prématurément, économisant d’immenses ressources de calcul.

Interactif : La course à l’Optimum

Visualisez pourquoi l’approche Bayésienne écrase les anciennes méthodes. Observez comment chaque algorithme tente de trouver le point le plus bas (le minimum d’erreur) sur une fonction de coût.

🏎️ Simulateur de Course à l’Optimum

Sélectionnez une stratégie de recherche et lancez l’entraînement. Observez comment chaque algorithme “creuse” pour tenter de trouver le fond de la vallée (l’optimum global). Le score affiché est l’erreur (Loss) : le but est d’atteindre 0.0.

viewof searchStrategy = Inputs.radio(
  ["Grid Search (Force Brute)", "Random Search (Aléatoire)", "Optimisation Bayésienne (TPE/Optuna)"],
  { value: "Grid Search (Force Brute)", label: "Stratégie de recherche :" }
)

viewof runSimulation = Inputs.button("Lancer l'entraînement")

6.2.3 💻 Optuna vs Scikit-Learn

import optuna
from xgboost import XGBClassifier

# 1. On définit une "fonction objectif" à optimiser
def objective(trial):
    # Optuna suggère intelligemment des valeurs à chaque essai
    param = {
        'max_depth': trial.suggest_int('max_depth', 3, 9),
        'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.3)
    }
    
    # On entraîne le modèle avec ces paramètres
    model = XGBClassifier(**param)
    model.fit(X_train, y_train)
    score = model.score(X_test, y_test)
    
    return score # Optuna va essayer de maximiser ce score

# 2. On lance l'étude (Le chercheur d'or se met au travail)
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=50) # 50 essais intelligents

print("Meilleurs hyperparamètres :", study.best_params)

6.3 🕵️‍♂️ Mission 6

Charlie se vante sur le Dark Web : son algorithme de détection de la police aurait une “Accuracy” de 90%. Il se croit intouchable et a confirmé la transaction de ce soir pour la vente des sujets d’examen.

Vous avez réussi à intercepter les données de test de son algorithme. Exécutez la cellule pour examiner les résultats bruts de ses 100 dernières simulations :

import pandas as pd
import numpy as np

# 0 = Pas de police (Voie libre), 1 = Police présente (Danger)
# Dans 90 cas sur 100, il n'y a pas de police. Charlie a simplement fait un modèle qui prédit TOUJOURS 0 !
y_vrai = np.array([0]*90 + [1]*10)
y_prediction = np.array([0]*100)

print(f"Précision globale (Accuracy) calculée par Charlie : {np.mean(y_vrai == y_prediction) * 100}%")

90% de précision… Cela semble excellent. Mais en tant que Data Detectives, vous savez qu’il faut regarder sous le capot, surtout quand les événements (la présence de la police) sont rares.

Votre objectif : Générez la Matrice de Confusion pour analyser les erreurs du modèle de Charlie. Combien de fois son IA a-t-elle indiqué “Voie libre” (0) alors que la police était “Présente” (1) ? C’est ce qu’on appelle les Faux Négatifs, et c’est notre porte d’entrée !

6.4 🚢 Déploiement et MLOps

Le syndrome du ‘Ça marche sur ma machine’

En 2026, un modèle bloqué dans un Notebook Jupyter n’est qu’un “artefact inutile”. Le MLOps (Machine Learning Operations) est la discipline qui fusionne la Data Science et le DevOps pour transformer un code de recherche en un service logiciel industriel, robuste et accessible par des millions d’utilisateurs.

Le cycle de vie d’un modèle en production repose sur la résolution de trois grands défis : la mémoire, le partage, et l’accès.

6.4.1 📖 Traçabilité (MLflow & DVC)

Lorsqu’un Data Scientist fait 50 essais d’optimisation (voir Module 6.2), il oublie souvent quels paramètres ont donné quel résultat.

  • MLflow : C’est le standard industriel pour le suivi des expérimentations (Experiment Tracking). Il enregistre automatiquement chaque version de votre code, les hyperparamètres utilisés, et les métriques de performance obtenues. Son composant Model Registry fait office de “tour de contrôle” pour approuver le passage d’un modèle en production (Sharma 2026).
  • DVC (Data Version Control) : Fait la même chose que Git, mais pour vos énormes fichiers de données (qui sont trop lourds pour GitHub).

6.4.2 📦 Encapsulation (Docker & uv)

Imaginons que votre modèle fonctionne parfaitement sur votre ordinateur portable (Windows, Python 3.10, Pandas 2.0). Si vous l’envoyez sur le serveur de production (Linux, Python 3.12, Pandas 3.0), il va planter instantanément.

  • La Conteneurisation (Docker) : Docker résout ce problème d’environnement. Il crée une “boîte” (un conteneur) qui englobe votre modèle d’IA, la bonne version de Python, et exactement les bibliothèques nécessaires. Ce conteneur est immuable : s’il marche chez vous, il marchera à l’identique sur n’importe quel serveur au monde (Mathukiya 2026).
  • L’outil “uv” : En 2026, l’outil pip a largement été remplacé par uv (écrit en Rust) pour installer les bibliothèques Python. Il est 10 à 100 fois plus rapide, ce qui permet de construire ces conteneurs Docker de manière quasi-instantanée.

6.4.3 🔌 Service API (FastAPI)

Votre modèle est dans un conteneur, mais comment une application web ou mobile (ex: l’application de votre banque) peut-elle lui “parler” pour obtenir une prédiction ?

On utilise une API REST.

  • FastAPI : C’est le framework Python ultra-dominant pour servir des modèles. Il est asynchrone (très rapide) et génère automatiquement sa propre documentation technique (Otto 2026).
  • Le Fonctionnement : L’application web envoie une requête HTTP contenant un fichier JSON avec les données du client. FastAPI reçoit le JSON, le donne au modèle XGBoost, récupère la prédiction, et la renvoie à l’application web sous forme de réponse JSON.

Comprendre le système : L’API de Prédiction

Manipulez cette simulation pour comprendre comment un logiciel externe interagit avec votre modèle ML via une API REST (FastAPI).

🌐 Simulateur d’API de Prédiction

Testez cette interface client. Modifiez les paramètres du crédit et cliquez sur “Envoyer”. Observez comment l’application cliente transforme vos actions en un fichier JSON, l’envoie sur le réseau, et comment le serveur ML (FastAPI) calcule et renvoie sa prédiction.

viewof age = Inputs.range([18, 80], {value: 35, step: 1, label: "Âge de l'emprunteur :"})
viewof salary = Inputs.range([1500, 10000], {value: 3000, step: 100, label: "Salaire mensuel (€) :"})
viewof amount = Inputs.range([1000, 100000], {value: 50000, step: 1000, label: "Montant demandé (€) :"})
viewof sendBtn = Inputs.button("🚀 Envoyer la requête POST /predict")

6.4.4 🏗️ L’Architecture MLOps Complète

Le cycle de vie complet du déploiement industriel d’un modèle d’IA s’articule autour d’un pipeline automatisé, de l’expérimentation locale jusqu’au service Cloud exposé aux clients :

graph LR
    subgraph Developpement [Environnement Local]
        A[Notebook Jupyter] -->|Entraînement| B(MLflow Tracking)
    end
    
    subgraph Package [Intégration]
        B -->|Validation| C{Model Registry}
        C -->|Approuvé| D[Image Docker\n+ FastAPI]
    end
    
    subgraph Production [Serveur Cloud]
        D -->|Déploiement| E((API REST))
        F[Application Web] -- "JSON: {Age: 35...}" --> E
        E -- "JSON: {Fraude: 95%}" --> F
    end

    style Developpement fill:#268bd2,stroke:#073642,color:#fdf6e3
    style Package fill:#6c71c4,stroke:#073642,color:#fdf6e3
    style Production fill:#859900,stroke:#073642,color:#fdf6e3

6.5 🚨 Surveillance et Dérive

Un modèle naît en mourant

Il existe un mythe tenace selon lequel une fois déployé, le travail du Data Scientist est terminé. En réalité, un modèle commence à “pourrir” dès son premier jour en production (“AI Model Monitoring in Production: Drift and Decay in 2026” 2026). Un algorithme est figé dans le passé (ses données d’entraînement), tandis que le monde réel, lui, évolue en permanence. Ce phénomène de dégradation silencieuse s’appelle la Dérive (Drift).

Il est vital de comprendre que si un modèle d’IA se trompe de plus en plus au fil du temps, ce n’est pas parce que son code s’est cassé, mais parce que le monde a changé.

6.5.1 📉 Les Deux Dérives

On distingue deux phénomènes majeurs qui nécessitent une surveillance algorithmique constante.

  • Dérive des Données (Data Drift) : La relation métier reste vraie, mais la population d’entrée a changé.
    • La Métaphore : Vous avez appris à conduire dans une petite ville de campagne (données d’entraînement) et on vous lâche en plein Paris. Les règles du code sont identiques, mais l’environnement (distribution des données) a totalement muté.
    • Exemple Business : Un modèle de crédit entraîné sur des clients de plus de 40 ans reçoit soudainement des profils étudiants de 20 ans.
  • Dérive de Concept (Concept Drift) : Les données d’entrée semblent identiques, mais la vérité mathématique a changé (les règles du jeu ont changé dans votre dos).
    • Exemple Business : La détection de fraude. Un achat de 500€ de nuit depuis l’étranger était systématiquement une fraude en 2024. En 2026, avec les néo-banques, c’est devenu banal et légitime. Le concept même de la fraude a évolué.

Interactif : Le Simulateur de Dérive

Pour bien saisir la différence entre ces deux dérives, manipulez ce simulateur. Observez comment la ligne de décision (votre modèle figé) devient obsolète face à l’évolution du monde.

🚨 Simulateur de Crash Silencieux (Drift)

Le graphique ci-dessous représente votre modèle en production. Le fond de couleur (Bleu/Rouge) représente les zones de décision figées de l’algorithme. Observez comment la précision de votre modèle s’effondre lorsque le monde réel (les points) évolue, sans même qu’une ligne de code n’ait été modifiée.

// 1. Contrôles de simulation
viewof driftMode = Inputs.radio(
  [
    "État Initial (Tout va bien)", 
    "💥 Data Drift (Changement de population)", 
    "🎭 Concept Drift (Changement de comportement)"
  ],
  { value: "État Initial (Tout va bien)", label: "État du Monde Réel :" }
)

6.5.2 🕵️‍♂️ Boucle de Ré-entraînement

Pour survivre à la dérive, les architectures MLOps de 2026 intègrent des mécanismes de Continuous Training (Entraînement Continu) (“Model Monitoring & Drift Detection” 2026).

  • Indicateur d’Alarme (PSI) : Le Population Stability Index compare la distribution statistique des données d’aujourd’hui avec celle du jour de l’entraînement. Si le PSI dépasse 0.2, une alerte rouge est levée : la population a trop muté.
  • Boucle de Ré-entraînement : Dès que le PSI dépasse la limite, le pipeline extrait les données récentes, ré-entraîne le modèle, valide s’il est plus performant, et le déploie de manière transparente.

graph LR
    A[Modèle en Production] -->|Monitoring en temps réel| B{Détection de Drift ?}
    B -->|PSI > 0.2| C[Extraction des données récentes]
    B -->|PSI < 0.2| A
    C --> D[Ré-entraînement automatique\nvia Optuna]
    D --> E{Le nouveau modèle\nest-il meilleur ?}
    E -->|Oui| F[Déploiement Transparent\n(Shadow Mode)]
    E -->|Non| G[Alerte Data Scientist]
    F --> A
    
    style B fill:#dc322f,stroke:#073642,color:#fdf6e3
    style E fill:#cb4b16,stroke:#073642,color:#fdf6e3
    style F fill:#859900,stroke:#073642,color:#fdf6e3

6.5.3 ⚖️ L’EU AI Act

En 2026, surveiller la dérive n’est plus seulement une bonne pratique technique, c’est une obligation légale.

L’EU AI Act (Législation européenne sur l’IA) impose des contraintes sévères sur les modèles déployés, en particulier ceux dits “à haut risque” (banque, médical, ressources humaines) (Pregasen 2026) :

  • Article 15 (Robustesse) : Exige que les modèles maintiennent leur précision tout au long de leur cycle de vie et soient surveillés contre les dégradations statistiques (“Article 15: Accuracy, Robustness and Cybersecurity | EU Artificial Intelligence Act” 2026).
  • Une entreprise dont l’algorithme “dérive” au point de devenir discriminatoire (ex: un Data Drift qui le pousse à refuser systématiquement des crédits à une minorité) s’expose à des amendes se chiffrant en millions d’euros. Le MLOps est votre bouclier juridique.

6.6 🌉 Conclusion et Transition

Nous avons maintenant des modèles robustes et évalués. La dernière étape, et non la moindre, consiste à communiquer ces résultats de manière claire et impactante aux parties prenantes.

C’est l’art que nous allons explorer dans le Chapitre 7 : Communication des Résultats.

“AI Model Monitoring in Production: Drift and Decay in 2026.” 2026. Logiciel. 2026. https://logiciel.io/blog/ai-model-monitoring-drift-decay-2026.
“Article 15: Accuracy, Robustness and Cybersecurity | EU Artificial Intelligence Act.” 2026. European Union. 2026. https://artificialintelligenceact.eu/article/15/.
Bañuelos, Jaime. 2026. “F1 Score: Precision-Recall Balance.” Openlayer. 2026. https://www.openlayer.com/blog/post/f1-score-precision-recall-balance.
“Classification: Justesse, Rappel, Précision Et Métriques Associées | Machine Learning.” 2026. Google for Developers. 2026. https://developers.google.com/machine-learning/crash-course/classification/accuracy-precision-recall?hl=fr.
“Hyperparameter Tuning: Grid Search, Random Search, and Bayesian Optimization.” 2024. Keylabs. 2024. https://keylabs.ai/blog/hyperparameter-tuning-grid-search-random-search-and-bayesian-optimization/.
Imani, Mehdi, Majid Joudaki, Ayoub Bagheri, and Hamid R. Arabnia. 2026. “Why ROC-AUC Is Misleading for Highly Imbalanced Data : In-Depth Evaluation of MCC, F2-Score, h-Measure, and AUC-Based Metrics Across Diverse Classifiers.” Technologies 14 (1). https://www.diva-portal.org/smash/record.jsf?pid=diva2:2037946.
Mathukiya, Jash. 2026. “MLOps in 2026: Best Practices for Scalable ML Deployment.” Kernshell. 2026. https://www.kernshell.com/best-practices-for-scalable-machine-learning-deployment/.
“Model Monitoring & Drift Detection.” 2026. DS STREAM. 2026. https://www.dsstream.com/provider/model-monitoring-drift-detection.
Otto. 2026. “Build a Production-Ready FastAPI Backend in 2026: 5 Templates That Ship in Minutes.” DEV Community. 2026. https://dev.to/ottoaria/build-a-production-ready-fastapi-backend-in-2026-5-templates-that-ship-in-minutes-1kfl.
Pedigo, Mark. 2026. “Précision Et Rappel : Le Guide Essentiel Du Machine Learning.” DataCamp. 2026. https://www.datacamp.com/fr/tutorial/precision-vs-recall.
Pregasen, Melissa. 2026. “U.s. Companies Face EU AI Act’s Possible August 2026 Compliance Deadline | Insights.” Holland & Knight. 2026. https://www.hklaw.com/en/insights/publications/2026/04/us-companies-face-eu-ai-acts-possible-august-2026-compliance-deadline.
Sharma, Swapnil. 2026. “8 MLOps Best Practices You Should Implement in 2026.” Azilen Technologies. 2026. https://www.azilen.com/blog/mlops-best-practices/.