Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ La thèse est volontairement classique : on ne peut évaluer ce qu'un agent gén
> **Au-delà du socle — classes déséquilibrées.** Le notebook [2.12](2.12-Donnees-Desequilibrees.ipynb) sort du cadre des huit chapitres pour traiter le cas où la classe d'intérêt est rare (fraude, défaut, anomalie, régime de marché). La ROC y apparaît comme une métrique qui **ment** — sur une classe à ~3 %, le taux de faux positifs reste bas *par construction* — et la **courbe Precision-Recall** comme la métrique honnête. Cinq stratégies y sont comparées sur le même protocole multi-seed (`class_weight`, sous-échantillonnage, sur-échantillonnage naïf, SMOTE, et « ne rien faire »), avec la matrice de confusion et la courbe PR pour chacune ; le tableau final montre qu'**aucune stratégie ne domine partout** — le choix dépend du coût d'un faux négatif face à un faux positif. Le seuil optimal n'y est pas `0.5` mais celui qui minimise le **coût attendu** (pont vers la théorie de la décision), et le piège de la **fuite SMOTE-avant-split** y est démontré puis corrigé.
> **Le geste du praticien.** Le notebook [2.13](2.13-Analyse-Erreurs.ipynb) ferme la boucle : mesurer (2.4, 2.5) ne suffit pas, il faut **diagnostiquer**. Sur un modèle au score global correct (accuracy 82.2%, aucune alerte), l'analyse par tranches révèle une **poche** à 67.6% d'erreur — 115 étiquettes d'entraînement corrompues par un incident d'intégration, invisibles de toute métrique globale. Le workflow : tranches → worst-k (les deux côtés de la matrice) → confiance → cause → correction **mesurée** (−42.3 points sur la poche) — ce qui distingue un praticien d'un tourneur d'hyperparamètres (le tuning, lui, ne répare rien : 67.6% → 67.6%).
> **Ouvrir la boîte noire, honnêtement.** Le notebook [2.14](2.14-Explicabilite-SHAP-LIME-Contrefactuels.ipynb) prend le relais du diagnostic : expliquer **une décision individuelle** — pourquoi ce dossier-là, à 70.7% de risque ? Trois moteurs réels consommés (pas de réimplémentation jouet) : **Tree SHAP** (exact, additivité vérifiée à 1.1e-16), **Kernel SHAP** (espace brut, le pipeline comme boîte noire — même top-5, reconstruction exacte), **LIME** (surrogate local linéaire, R² 0.496) et **DiCE** pour les contrefactuels (3 plans d'action, probabilité ramenée de 0.707 à ~0.35-0.40). Le fil rouge honnête : ces outils produisent des **récits**, pas des causes — LIME instable de seed en seed (σ jusqu'à 0.0352), la base de référence SHAP déplace la valeur de base (0.3135 vs 0.2132) sans changer le classement, et Rudin 2019 rappelle qu'un modèle intrinsèquement interprétable évite le problème. Ponts posés vers Causal-Bridges/ (SHAP n'est **pas** de la causalité), PyMC-05 et Infer-5 (inférence causale), Tweety-11 (argumentation).
> **L'attribution face à la causalité.** Le notebook [2.14b](2.14b-XAI-Shap-Attribution-Causal-Bridge.ipynb) franchit le pont annoncé par 2.14 : sur un DAG explicite (`age → credit_amount → default`), il confronte **Kernel SHAP marginal** et **Tree SHAP conditionnel** sur le même individu (idx=773) — l'additivité se vérifie au dix-millième (base + somme φ = 0.9400 vs P(default|x) = 0.940), mais les écarts marginal/conditionnel rappellent que **l'attribution est une fonction du background dataset**, pas de la structure causale. Et le geste décisif : un contrefactuel DiCE (`age=42`, f(x') = 0.7200) n'est **pas** une intervention `do(·)` — l'exercice 3 demande de les distinguer. C'est le même honnête « récit ≠ cause » que 2.14, descendu d'un cran, jusqu'au seuil de l'inférence causale proprement dite (PyMC-05, Infer-5).
> **La donnée comme responsabilité.** Le notebook [2.15](2.15-Donnee-Comme-Responsabilite-Python.ipynb) referme le triptyque du praticien : diagnostiquer (2.13), expliquer (2.14), puis **protéger les personnes derrière les données**. L'attaque par inférence d'appartenance y est menée pour de vrai : la confiance du modèle en ses exemples d'entraînement sert de signal, et la forêt qui mémorise offre un avantage d'attaque de +0.439 (AUC 0.719) là où la régression régularisée, qui généralise, retombe à +0.057 — la première protection contre la fuite est la généralisation elle-même. Vient ensuite la confidentialité différentielle : le mécanisme de Laplace (bruit calibré par le budget epsilon), le **DP-SGD écrit à la main** (clipper chaque gradient, bruiter chaque lot, composer le budget), la courbe utilité/confidentialité mesurée, puis la confrontation au SOTA **diffprivlib** consommé tel quel — verdict honnête du notebook : cohérent en tendance, divergent en ampleur. La datasheet (Gebru et al. 2018) et la model card (Mitchell et al. 2019) ferment le parcours : sur un jeu de données médical, documenter provenance, limites et usages est une responsabilité, pas une formalité.

> **La méthodologie du réglage.** Le notebook [2.10](2.10-Optimisation-Hyperparametres.ipynb) assume le rôle que le 2.13 laisse en creux — celui du « tourneur d'hyperparamètres » — et le fait **honnêtement** : un espace de recherche mixte (continu, discret, conditionnel) sur un MLP, un budget commun de 45 essais, et les trois stratégies superposées sur la courbe *meilleur score vs nombre d'essais* (médiane sur 3 graines, bande min–max). La grille exhaustive y explose en dimension (6300 configurations, 0.7 % couvertes), le hasard tient l'argument de couverture de Bergstra & Bengio, et le search bayésien (TPE/Optuna, **consommé**, pas réécrit) s'installe dès le premier tiers du budget. Le vrai concept-phare est le **critère d'arrêt** : un gain marginal explicite (arrêter si le meilleur n'a pas gagné δ sur les K derniers essais) qui économise 21 à 31 essais sur 45 pour un coût de 2 à 8 millièmes d'AUC. C'est la méthodologie transverse que réutilisent les sweeps du ML-Training-Pipeline et l'ablation du Lab14.
Expand Down Expand Up @@ -167,7 +168,9 @@ flowchart TD
J["2.13 - Analyse d'erreurs (praticien)<br/>diagnostiquer un modèle entraîné<br/>tranches, worst-k, plan d'action"]
E -. "après les métriques : diagnostiquer" .-> J
O["2.14 - Explicabilité XAI (SHAP, LIME, contrefactuels)<br/>expliquer une décision individuelle<br/>additivité exacte vs récits instables"]
O2["2.14b - Attribution et causalité (accrétion de 2.14)<br/>SHAP marginal vs conditionnel, contrefactuel ≠ intervention<br/>l'attribution vit dans le background dataset"]
J -. "après le diagnostic : expliquer la décision" .-> O
O -. "du récit au pont causal" .-> O2
K["2.10 - Optimisation d'hyperparamètres (méthodologie)<br/>grille, hasard, bayésien (TPE)<br/>budget, gain marginal, critère d'arrêt"]
E -. "après l'évaluation : régler" .-> K
L["2.3c - Régression en grande dimension (p >> n)<br/>ridge, PCR, PLS<br/>Var ≠ prédictivité, verdict sur 10 graines"]
Expand Down
Loading