From 51da33087ffaa73947632d80c9f1ae2e8f49473d Mon Sep 17 00:00:00 2001 From: jsboige Date: Tue, 6 Oct 2026 16:35:30 +0200 Subject: [PATCH] Docs(ml,#17518): 2.14b dans le mermaid et l'epilogue du README 02-ML-Cours MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le README cite deja 2.14b en table (ligne 56, livree par #17968) ; il manquait aux deux surfaces qui citent les autres accretions : - mermaid : noeud O2 « 2.14b - Attribution et causalite (accretion de 2.14) » + arete O -. « du recit au pont causal » .-> O2 (motif I2/I3 : 2.9c/2.9d) - epilogue : paragraphe « L'attribution face a la causalite » apres le § 2.14 « Ouvrir la boite noire, honnetement » -- contenu fidele au carnet (DAG explicite, idx=773, additivite 0.9400, contrefactuel != intervention, exercice 3 a completer) README-only : pas de re-generation du catalogue (catalog-pr-hygiene). Co-Authored-By: Claude Sonnet 5.5 --- .../ML/DataScienceWithAgents/02-ML-Cours/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md index 8991c04d89..680b73bf94 100644 --- a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md +++ b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/README.md @@ -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. @@ -167,7 +168,9 @@ flowchart TD J["2.13 - Analyse d'erreurs (praticien)
diagnostiquer un modèle entraîné
tranches, worst-k, plan d'action"] E -. "après les métriques : diagnostiquer" .-> J O["2.14 - Explicabilité XAI (SHAP, LIME, contrefactuels)
expliquer une décision individuelle
additivité exacte vs récits instables"] + O2["2.14b - Attribution et causalité (accrétion de 2.14)
SHAP marginal vs conditionnel, contrefactuel ≠ intervention
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)
grille, hasard, bayésien (TPE)
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)
ridge, PCR, PLS
Var ≠ prédictivité, verdict sur 10 graines"]