Repository navigation
Conversation
…mparables, prescriptions inexistantes Tranche d'audit #17073 (cycle 303, commentaire 6464119054) appliquee au carnet PyMC-10-Model-Selection. Les huit findings ont ete re-verifies d'abord a la source avant edition ; les corrections portent sur des cellules markdown uniquement, donc aucune re-execution n'est due (C.2/C.3). 1. Titre de la reference fondatrice : le carnet annoncait "Pareto Smoothed Importance Sampling Pointwise Predictive Model Selection" pour le DOI 10.1007/s11222-016-9696-4, alors que ce DOI designe "Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC" (verifie sur Crossref, Stat Comput 27(5):1413-1432) -- titre que le meme carnet donnait deja dans ses References. 2. Tipping (2001) est publie au Journal of Machine Learning Research 1(Jun):211-244, pas a NIPS 13 (verifie sur jmlr.org/papers/v1/tipping01a) ; le jumeau C# (Infer-10) citait deja JMLR. 3. La table LOO rapproche des elpd calcules sur trois jeux differents (50 observations unimodales, 50 unimodales, 100 ARD) : l'ecart de ~25 unites mesure le doublement de n, pas une meilleure capacite predictive. Seul p_loo se compare d'une ligne a l'autre. 4. "a n=80" corrige en "a n=50" : n=80 est le jeu bimodal, la phrase portait sur le jeu unimodal. 5. La colonne weight est annoncee en "stacking" alors que tous les appels az.compare du carnet utilisent method="BB-pseudo-BMA". 6. Deux remedies prescrits n'existent pas dans PyMC : pm.HorseShoe et pm.NoncentralStudentT (aucune entree *orse* ni *entral* dans dir(pm) sur PyMC 6.3.2 ; le horseshoe vit dans pymc-extras, absent de l'environnement de la serie). La prescription non-centrale etait de surcroit hors sujet pour une hierarchie Gamma + Normal. 7. Le "R-hat ~1.02" attribue au cas bimodal est en realite celui de l'ajustement unimodal (seul az.summary du carnet) : l'attribution est corrigee, le carnet n'affichant aucun diagnostic pour trace_2g_bi. 8. Dates de sortie d'ArviZ : 1.0.0 le 2 mars 2026 et 1.1.0 le 24 avril 2026 (PyPI), et non 2023 / 2024. Livraison partielle : tranche PyMC-10 de la partition d'audit #17222 ; PyMC-11 et les autres carnets de la partition restent a traiter. See #17222 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Rebaseline de la paire apres la tranche d'audit PyMC-10 (commentaire 6464119054) : les deux cotes sont relus au blob de tete, le cote C# est documente comme non touche (il citait deja Tipping au JMLR), et la difference connue est inscrite dans le registre. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
…MC-10
Le "Verdict attendu" (modele lineaire avec un weight proche de 1.0) ne tient
pas tel quel : rejoue hors carnet (PyMC 6.3.2 / ArviZ 1.3.0, 2 graines x 2
methodes d'empilement x 2 specifications du modele), le modele des indices
(`pm.Normal('w', ...)` sans terme constant) est mal specifie pour
`y = 2x + 1 + bruit` -- le modele lineaire y PERD la comparaison (weight 0,00
en `stacking`, 0,03 en `BB-pseudo-BMA`, vainqueur deg2). Avec un terme
constant, le classement s'inverse (weight 1,00 en `stacking`, 0,63 en
`BB-pseudo-BMA`, 0,98 / 0,48 sur la seconde graine) : le weight proche de 1.0
n'est atteignable qu'avec `stacking` ET un terme constant.
Les indices sont completees (terme constant, `pm.compute_log_likelihood` --
sans elle `az.compare` echoue sur `TypeError: log likelihood not found in
inference data object`) et le "Verdict attendu" est reecrit en annonçant les
deux reglages dont il depend, avec les valeurs mesurees. La lecture du
tableau `az.compare()` renvoie vers ces conditions.
Cellule markdown uniquement (aucune cellule de code touchee) : pas de
re-execution due, les outputs committes restent valides.
See #17222
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ercice 3 L'attestation du registre des jumeaux est refaite sur l'etat courant du carnet (correction de l'exercice 3), et l'entree `known_differences` de la tranche est completee par le neuvieme finding -- le "Verdict attendu" ne tient pas tel quel : sans terme constant, le modele lineaire perd la comparaison ; le weight proche de 1.0 n'est atteignable qu'avec `stacking` ET un terme constant. Jumeau C# non touche. See #17222 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
…audit # Conflicts: # scripts/notebook_tools/twin_pairs.d/probas-10-model-selection/0023-2026-11-02-myia-ai-01-CoursIA-2.yaml
Le conflit de fusion portait sur l'index 0023 de la paire `Probas-10 Model-Selection` -- deja publie sur main (collision d'index entre deux emissions independantes). L'entree de main est conservee, et la fusion modifie le blob du carnet PyMC-10 (auto-fusion) : l'attestation est re-emise a l'index 0024, au-dessus du plancher. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ndex intra-branche) La paire probas-10-model-selection portait deux attestations a l'index 0024 sur cette branche (emissions du 2026-11-02 et du 2026-11-03) : le gate "Twin index collision gate (#23208)" la refuse en collision intra_ref, et l'ecart de la paire sur main reste invisible jusqu'a la fusion. Correctif : git mv pur de 0024-2026-11-03 vers 0025 -- aucun contenu touche, aucune re-execution due. Le lecteur prend le dernier index : 0025 reste l'attestation la plus recente (blob Python 33e5ea3, jumeau C# 744fbb7 inchange). Une entree known_differences est ajoutee pour documenter la seconde emission et la renumerotation. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Grain: MED/notebook-python — lane myia-ai-01:CoursIA-2 — prev: MED/notebook-python #24146
Tranche PyMC-10 de la partition d'audit #17222 (campagne #17073)
Application des corrections du cycle 303 (commentaire d'audit
6464119054) au carnetMyIA.AI.Notebooks/Probas/PyMC/PyMC-10-Model-Selection.ipynb. Chaque finding a étére-vérifié à la source avant édition (protocole de ré-évaluation d'audit) — aucun n'a été
appliqué sur la seule foi du rapport d'audit.
Cellules de code non touchées → aucune ré-exécution n'est due (C.2/C.3) : le carnet
garde ses
execution_countet ses sorties committées. Le hook pré-commit H.3 passe.Les neuf corrections, et comment chacune a été vérifiée
10.1007/s11222-016-9696-4→ « Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC », Stat Comput 27(5):1413-1432elpdnon comparablesb0c1d2e9:1-gaussien −89.23(n=50),2-gaussien −90.08(n=50),ARD −63.81(n=100)n, et un paragraphe explicite que l'elpdest une somme sur les observations : l'écart de ~25 unités mesure le doublement den, pas la capacité prédictive ; seulp_loose compare d'une ligne à l'autred4e5f6a3:n_obs = 50(unimodal),n_obs_bi = 80(bimodal)a7b8c9d6:az.compare(..., method="BB-pseudo-BMA")(idem cellulef2a3b4c1) ; sortie committée : poids0.7 / 0.3weightest décrite comme l'empilement BB-pseudo-BMA — la méthode que le carnet utilise partout — et le texte rappelle quemethod=est ce qui nomme la méthodedir(pm)sous PyMC 6.3.2 : aucune entrée*orse*, aucune*entral*;pm.HorseShoeetpm.NoncentralStudentT→AttributeError;pymc_extrasabsent de l'environnementpymc-extras, non installé ici) avec la voie réellement disponible (pré-sélection par corrélation, durcissement du prior hyper), et la prescription non-centrale est écartée comme hors sujet pour une hiérarchieGamma + Normalaz.summarydu carnet est dans la cellulef6a7b8c5(mélange à 2 gaussiennes sur données unimodales) ;R-hat max 1.020,Divergences NUTS : 0; aucun diagnostic n'est affiché pourtrace_2g_biarviz 1.0.0le 2 mars 2026,arviz 1.1.0le 24 avril 2026az.compare, avec et sans terme constant) : sans terme constant, le modèle des indices (pm.Normal('w', ...), sans intercept) est mal spécifié poury = 2x + 1 + bruit— le modèle linéaire y perd la comparaison (weight(deg1)=0.00enstacking,0.03enBB-pseudo-BMA, vainqueurdeg2) ; avec terme constant, le classement s'inverse (1.00enstacking,0.63enBB-pseudo-BMA; sur la seconde graine0.98/0.48)stackinget un terme constant. Les indices sont complétés (terme constant ;pm.compute_log_likelihood, sans quoiaz.compareéchoue surTypeError: log likelihood not found in inference data object— reproduit firsthand). La lecture du tableau renvoie à ces conditionsPoint bonus, mesuré pendant la tranche
Les indices de l'exercice 3 (« Comparer les 3 modèles avec
az.compare()») ne mentionnaient nipm.compute_log_likelihood— que les cellulesf6a7b8c5ete1f2a3b0appellent pourtant, et sansquoi
az.compareéchoue surTypeError: log likelihood not found in inference data object(reproduit firsthand pendant la tranche) — ni le terme constant, alors que les données sont
y = 2x + 1 + bruit. Le replay hors carnet a montré que ce second manque est le piège réel del'exercice : sans intercept, le modèle linéaire est écarté de la comparaison, et le verdict
« poids proche de 1.0 » n'est atteignable qu'avec
stacking. C'est le finding 9 du tableauci-dessus.
Parité des jumeaux
La paire
Probas-10 Model-Selection(PyMC ↔ Infer-10) est rebaseline par un fichierd'attestation dédié (
scripts/notebook_tools/twin_pairs.d/probas-10-model-selection/0023-2026-11-02-myia-ai-01-CoursIA-2.yaml,puis réattestée après le finding 9 dans
0024-2026-11-02-myia-ai-01-CoursIA-2.yaml).Le jumeau C# n'est pas touché : il citait déjà Tipping au JMLR — la correction rétablit la
parité sur ce point ; les corrections de dates ArviZ, d'API PyMC et de méthode d'empilement
sont propres à la stack PyMC/ArviZ et n'ont pas d'équivalent en Infer.NET.
check_twin_parity.py --pair "Probas-10 Model-Selection"→ OK.Portée
Livraison partielle de la partition d'audit #17222 : tranche PyMC-10. PyMC-11 et les
autres carnets de la partition restent à traiter. La clause
paths:de la claim couvrePyMC-10 et PyMC-11.
See #17222
🤖 Generated with Claude Code