Skip to content

docs — V35 à V37 au plan : le ML Lab, en commençant par deux défauts de méthode - #50

Merged
dapiced merged 1 commit into
mainfrom
claude/labml-detailed-plan-nzc98m
Aug 22, 2026
Merged

docs — V35 à V37 au plan : le ML Lab, en commençant par deux défauts de méthode#50
dapiced merged 1 commit into
mainfrom
claude/labml-detailed-plan-nzc98m

Conversation

@dapiced

@dapiced dapiced commented Aug 22, 2026

Copy link
Copy Markdown
Owner

L'audit du laboratoire n'a pas trouvé de fonctionnalités manquantes : neuf familles de modèles, réglages, seuils, segments, incertitude, courbes d'apprentissage, diagnostics de régression, comparaison de runs, scoring par lot, export/import sont déjà là. Il a trouvé deux chiffres un peu faux, dans un produit dont l'argument de vente est l'évaluation honnête.

Défaut 1 — le gagnant est choisi sur le jeu de test

LeaderboardTable.tsx:42 trie neuf modèles par primary — la métrique calculée sur le test — et couronne sorted[0]. Prendre le maximum de neuf tirages sur ~180 lignes biaise le chiffre affiché vers le haut : c'est le problème des comparaisons multiples. Le bootstrap apparié de la V20 adoucit la comparaison, mais le nombre en tête de classement reste optimiste.

Correctif : train / validation / test — on sélectionne sur la validation, on rapporte sur le test, et on affiche l'écart entre les deux. Cet écart est en soi la leçon la plus utile que le laboratoire puisse donner.

Défaut 2 — le découpage est toujours aléatoire, même sur des données datées

splitIndices() stratifie au hasard, point — alors que la V10 dérive déjà année/mois/jour d'une colonne de dates et que la V8 fait des séries temporelles. Sur ces fichiers, le futur entre dans l'entraînement : le modèle paraît excellent et s'effondre en production.

Correctif : détecter la colonne de dates et proposer un découpage chronologique annoncé ; même logique pour un identifiant répété — le même client des deux côtés, c'est la même fuite.

Les deux ajouts du même esprit (V35)

  • Détecteur de fuite de cible : une colonne qui prédit seule à 99 % est presque toujours une fuite (« montant_remboursé » pour prédire « fraude »). Elle doit s'afficher comme une alerte, pas comme une victoire. Petit à écrire, spectaculaire en démonstration, et personne ne le fait.
  • Validation croisée répétée : ~180 lignes de test portent environ ±3 points d'écart-type. Classer deux modèles séparés d'un point n'a pas de sens ; une CV 5×2 avec intervalles rend le classement défendable.

V36 — les descopes assumés, regroupés

Pondération des classes (écartée en V16), seuils multiclasses (mis de côté depuis V16), choix de la métrique de classement (exactitude/RMSE sont imposées aujourd'hui alors que F1 ou rappel est souvent le bon critère), ensemble des trois meilleurs (1 à 3 points, gratuit en calcul).

La ligne dit aussi ce que la vague ne fera pas : pas de dixième famille de modèles, pas de mode AutoML « on s'occupe de tout » — l'inverse d'un laboratoire qui montre ses décisions — et pas de deep learning tabulaire.

V37 — vitesse et confort, en dernier volontairement

Entraînement parallèle (la ménagerie s'entraîne aujourd'hui séquentiellement dans un worker ; les bancs de la V25 existent pour mesurer avant/après), comparaison de plus de deux runs, reprise d'un run interrompu.

En dernier parce qu'un chiffre faux calculé plus vite reste faux.

Documentation seule — aucun code touché.


Generated by Claude Code

…e méthode

L'audit du laboratoire n'a pas trouvé de fonctionnalités manquantes : neuf
familles de modèles, réglages, seuils, segments, incertitude, courbes,
diagnostics de régression, comparaison, scoring, export/import sont là. Il a
trouvé deux chiffres un peu faux, dans un produit dont l'argument est
l'évaluation honnête.

1. Le gagnant est choisi sur le jeu de test. LeaderboardTable.tsx:42 trie neuf
   modèles par la métrique calculée sur le test et couronne le premier. Prendre
   le maximum de neuf tirages sur environ 180 lignes biaise le chiffre affiché
   vers le haut. Correctif : un jeu de validation pour sélectionner, le test
   pour rapporter, et l'écart entre les deux montré — c'est la leçon la plus
   utile que le laboratoire puisse donner.

2. Le découpage est toujours aléatoire, même sur des données datées.
   splitIndices() stratifie au hasard, alors que la V10 dérive déjà des dates
   et que la V8 fait des séries temporelles. Sur ces fichiers-là, le futur
   entre dans l'entraînement : le modèle paraît excellent et s'effondre en
   production. Correctif : découpage chronologique proposé et annoncé, même
   logique pour un identifiant répété.

S'y ajoutent un détecteur de fuite de cible — une colonne qui prédit seule à
99 % est presque toujours une fuite, et doit s'afficher comme une alerte, pas
comme une victoire — et une validation croisée répétée, parce que classer deux
modèles séparés d'un point sur 180 lignes de test n'a pas de sens.

V36 regroupe les descopes assumés : pondération des classes (écartée en V16),
seuils multiclasses, choix de la métrique de classement, ensemble des trois
meilleurs. La ligne dit aussi ce que la vague ne fera pas : pas de dixième
modèle, pas de mode AutoML, pas de deep learning tabulaire.

V37 ferme la marche avec la vitesse : entraînement parallèle sur plusieurs
workers, comparaison de plus de deux runs, reprise d'un run interrompu. En
dernier, volontairement — un chiffre faux calculé plus vite reste faux.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UKw6oNC8iZ9Kn7q6x4qom4
@dapiced
dapiced marked this pull request as ready for review August 22, 2026 18:58
Copilot AI lite review requested due to automatic review settings August 22, 2026 18:58
@dapiced
dapiced merged commit abd8e6b into main Aug 22, 2026
2 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Documentation-only change in PLAN.md with consistent Markdown table structure and no code-impacting modifications.

Pull request overview

Cette PR met à jour le plan produit (V35 à V37) pour cadrer les prochaines améliorations de ML Lab autour de la rigueur méthodologique (biais de sélection sur test set, split aléatoire sur données temporelles) et d’évolutions associées (détection de fuite de cible, CV répétée), puis regroupe les “gaps” assumés (V36) et les optimisations de vitesse/confort (V37).

Changes:

  • Ajout des entrées V35–V37 au tableau de roadmap, avec motivations et périmètres détaillés.
  • Mise à jour du paragraphe Ordering pour justifier la priorité de V35 avant V36/V37.
File summaries
File Description
PLAN.md Ajoute V35–V37 au plan et met à jour l’ordre de priorité dans la roadmap.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants