Repository navigation
ML-11 (Python) : Matrix Profile multidimensionnel — détection d'anomalies sans apprentissage (stumpy), section annexe FMP-AE #13992
Description
Contexte
Distillation de Yeh et al. (2024), « Matrix Profile for Anomaly Detection on Multidimensional Time Series » (arXiv:2409.09298) + section annexe Fu et al. (ICLR 2025 soumission), « FMP-AE: A Hybrid Approach to Time Series Anomaly Detection » (openreview:fErm1seIom, code github.com/FyingE/FMP-AE).
Suite logique de ML-10 (critique méthodologique des benchmarks) : si les benchmarks triviaux créent l'illusion de progression, quel outil résiste à la critique ? Le Matrix Profile (MP) — méthode non-apprentissage — est précisément la famille que le papier 1 n'attaque pas (pas d'apprentissage → pas de surapprentissage d'un benchmark trivial). Le papier 2 étend le MP au cas multidimensionnel et montre qu'il est le seul à performer constamment sur 119 datasets × 3 setups (non-supervisé/supervisé/semi-supervisé). Le papier 3 (FMP-AE) montre que le MP reste pertinent à l'ère du deep learning, comme loss structurée hybride.
Ce que le papier 2 apporte
Le Matrix Profile d'une série univariée à n sous-séquences est le vecteur des distances au plus proche voisin (non-trivial) de chaque sous-séquence — un profil de similarité en O(n²) (ou O(n log n) via FFT, lib stumpy). Une discord (sous-séquence dont le MP est maximal) est une anomalie : elle n'a pas de voisine proche, donc elle est structurellement atypique.
Extension multidimensionnelle : en d dimensions, les distances par paires forment un tensor n×n×d. Le papier analyse les stratégies de condensation (min/max/mean sur les dimensions) pour ramener à un vecteur profil, et étend le MP au k-NN pour la détection d'anomalies. Benchmark : 19 baselines × 119 datasets TSAD × 3 setups → le MP est le seul constant.
Ce que le papier 3 apporte (section annexe)
FMP-AE combine : (1) CNN 1D multi-canal pour features locales, (2) AutoEncoder Transformer pour reconstruction, (3) loss composite = reconstruction + Matrix Profile inter-fenêtre (similarité entre segments) + Matrix Profile intra-fenêtre (cohésion interne). Le MP n'est plus un détecteur standalone mais un terme de loss structurée qui régularise l'AutoEncoder. Idée-force : le MP reste pertinent en deep learning, comme contrainte structurelle.
Livrable
Notebook pédagogique Python MyIA.AI.Notebooks/ML/ML.Net/ML-11-MatrixProfile-Multidim-Python.ipynb, suite de ML-10 (navlink ML-10 → ML-11). Genre : DEEP/notebook-python.
Contenu pédagogique (4 sections)
- Matrix Profile univarié via
stumpy— sur la série UCR de ML-10 (pont explicite) : calcul du MP, identification de la discord (anomalie), comparaison avec SPC (ML-10) — le MP attrape l'anomalie contextuelle que SPC rate. - Extension multidimensionnelle — le tensor n×n×d, stratégies de condensation (min/max/mean sur dimensions), le k-NN MP pour TSAD. Application sur le jeu capteurs multidimensionnel de ML-9 (déjà 2-3 capteurs) : le MP multidim attrape-t-il ce que le MP univarié rate ?
- Comparaison MP vs PCA vs SPC sur le jeu capteurs ML-9 — lequel attrape l'anomalie subtile multivariée que les autres ratent ? C'est le cœur pédagogique : la PCA (ML-9) surapprend le benchmark trivial, SPC (ML-10) rate les anomalies contextuelles, le MP multidim est le seul à voir les deux.
- Section annexe FMP-AE (prose + diagramme, pas implémentation complète) — « le MP comme loss structurée, pas juste détecteur ». Expliquer l'hybridation (MP + AutoEncoder), pourquoi le MP seul peut suffire (papier 2) mais pourquoi l'hybridation profonde aide sur les cas subtils (papier 3). Point d'ouverture vers la recherche.
Exercices (≥3, stubs C.1)
- Exercice 1 : implémenter une stratégie de condensation alternative (médiane, vote majoritaire) et comparer à min/max/mean.
- Exercice 2 : trouver le k optimal du k-NN MP pour un dataset UCR donné (courbe score vs k).
- Exercice 3 : comparer MP standalone vs PCA (ML-9) vs SPC (ML-10) sur une anomalie subtile multivariée — verdict honnête : qui attrape quoi, et pourquoi.
Critères d'acceptation
- Notebook exécuté end-to-end (kernel python3), 0 erreur,
execution_count != null+ outputs cohérents (C.2). - 0
raise NotImplementedError/assert False/1/0(C.1) ; ≥ 3 exercices stubbés. - Densité pédagogique ≥ 1200 chars prose/cellule code.
-
stumpyinstallé et invoqué (vrai outil SOTA, pas réimplémentation jouet — Prong A :SOTA-OK, la lib est pip-installable). - Le MP multidim DOIT être démontré sur un problème non-trivial (Prong B) : une anomalie subtile multivariée que la PCA rate mais le MP attrape — pas un cas dégénéré où tous gagnent.
- Section annexe FMP-AE présente (prose + diagramme) même si non implémentée.
- Navlink ML-10 → ML-11 + README ML.Net mis à jour (une ligne).
-
COURSE_CATALOG.*byte-identique à main. - Verdict SOTA écrit dans le body PR :
SOTA-OK(stumpy, données UCR publiques).
Références
- Yeh, C.-C.M. et al. (2024/2026). Matrix Profile for Anomaly Detection on Multidimensional Time Series. arXiv:2409.09298. Code : https://github.com/mcyeh/mmpad_tsb (CC BY 4.0).
- Fu, Y. et al. (ICLR 2025 soumission). FMP-AE: A Hybrid Approach to Time Series Anomaly Detection. openreview:fErm1seIom. Code : https://github.com/FyingE/FMP-AE.
- Lib Python :
stumpy(https://stumpy.readme.io/).
See #3801 (EPIC SOTA axe-2 — registre clos, discipline reste), dépend de #13991 (ML-10 d'abord : la critique méthodologique prépare le terrain pour l'outil SOTA).
Activity
jsboige commentedon Sep 2, 2026
Grain: DEEP/notebook-python -- lane myia-po-2027:CoursIA-2 -- prev: DEEP/notebook-python #14039
[CLAIMED] lane myia-po-2027:CoursIA-2 -- ML-11 Matrix Profile multidimensionnel (stumpy), suite de ML-10 -- paths: MyIA.AI.Notebooks/ML/ML.Net/ML-11-*, MyIA.AI.Notebooks/ML/ML.Net/README.md
Dispatch ai-01
msg-20260901T213755-1azh0h(grain 2 apres #13991), claim pose par la lane elle-meme comme demande.Preflight L1356 fait avant ce claim :
gh pr list --state all --search "13992"-> aucune PR livree sur ce grain (le seul hit, docs(ml,#13993): note de reference TSAD benchmark flaws + Matrix Profile #14003, porte docs/ml : note de référence — flaws des benchmarks TSAD + Matrix Profile (compagnon ML-10/ML-11) #13993, une note de reference distincte).check_lane_claim.py 13992->CLEAR: no other lane claims #13992.Dependance satisfaite : #13991 (ML-10) est livre sur #14039, gardes vertes, PR gate re-dispatche.
stumpyetait absent de l'environnement : installe (stumpy 1.14.1, numba 0.67.0), pas contourne -- regle F. Verifie firsthand :stumpy.stumprend un profil de forme (181, 4) sur une serie de test. Le critere d'acceptation « vrai outil SOTA, pas reimplementation jouet » est donc atteignable sur cette machine.Le scope
paths:est volontairement etroit : le notebook ML-11 et la ligne de README. L'issue portant le label EPIC, ce claim ne prend pas l'epic entier -- seulement le livrable notebook qui y est nomme.jsboige commentedon Sep 2, 2026
[INFO] Livré — PR #14243 (lane myia-po-2027:CoursIA-2)
Notebook
MyIA.AI.Notebooks/ML/ML.Net/ML-11-MatrixProfile-Multidim-Python.ipynb: 40 cellules, papermill end-to-end 1m19s,errors=0 null_exec=0, stumpy 1.14.1 (verdict SOTA-OK).Prong B mesuré (graine 42) : ACP rang 2 et
M+3σnoyées sous le 99e centile du fond ; MP univariés rang 6/8/7 ; condensationminet mSTAMPK=1/K=2rang 1 ; mSTAMPK=3aveugle. Marginales indiscernables (température 19.997/2.144 hors contre 20.016/2.143 dedans) — l'aveuglement des détecteurs point-à-point est structurel, pas un défaut de réglage. Table multi-graines sur 7/11/42/99/123 dans la section 3.Deux écarts assumés, détaillés dans le body de la PR :
M+3σ, pas par import : ML-10 n'est pas surmain(il vit dans feat(ml,#13991): ML-10 TSAD benchmark flaws — SPC (1924) vs AE, 4 flaws de Wu & Keogh, UCR Archive #14039) et empiler créerait une dépendance d'ordre de merge ;L'issue reste OPEN : ces deux points de finition en constituent le reliquat.
docs(ml,#13993): note de reference TSAD benchmark flaws + Matrix Prof…
Add: ML-11 Matrix Profile multidimensionnel (detection d'anomalies sa…
Add: entree README ML-11 + lien croise ML-10 <-> ML-11
feat(ml,#13992): ML-11 Matrix Profile multidimensionnel — mSTAMP vs A…
jsboige commentedon Sep 4, 2026
[INFO] candidate-delivered — vérification firsthand (myia-po-2027:CoursIA, urne umbrella du picker)
Le périmètre complet du titre est sur main au commit
a79dba7e502c(PR #14243, mergée 2026-09-02T18:50:08Z) :MyIA.AI.Notebooks/ML/ML.Net/ML-11-MatrixProfile-Multidim-Python.ipynb, 40 cellules, livré par feat(ml,#13992): ML-11 Matrix Profile multidimensionnel — mSTAMP vs ACP/SPC, effondrement k=1 #14243 (papermill end-to-end 1m19s,errors=0 null_exec=0, stumpy 1.14.1 SOTA-OK — attesté au commentaire de livraison du 02/09).origin/main: « Section 4 (annexe) — FMP-AE : le Matrix Profile comme perte structurée » présente (11 occurrences FMP, 3 cellules dont l'annexe et sa reprise en conclusion).Aucune acceptance du body ne reste ouverte à ma lecture (distillation Yeh et al. 2024 + annexe FMP-AE toutes deux dans le livrable). PR #14243 ayant livré en
See #13992sansCloses, l'issue est restée OPEN par mécanique, non par reste à faire.→ Fermeture recommandée par ai-01 (G.9 : verdict confronté au livrable, pas au label). Si un sous-grain résiduel vous semble manquant, le nommer — je ne close pas moi-même.
fix(picker): la secheresse ne donne plus une probabilite nulle a 34 E…
myia-ai-01 commentedon Sep 18, 2026
Fermeture sur verification firsthand (cycle ai-01 2026-09-18, lot de verification sonnet — body integral + tous commentaires lus, artefacts relus sur
origin/main, PRs etatees une par une).PR #14243 MERGED 2026-09-02T18:50Z. Notebook ML-11 sur main : 40 cellules (16 code), 0
execution_countnul, 0 erreur, 0 pattern interdit,stumpy/mstamp/mstumpreels, annexe FMP-AE (x11), 2342 caracteres de prose par cellule de code (seuil 1200), verdictSOTA-OKdans le body de la PR.Navlink ML-10 -> ML-11 et ligne 52 du README ML.Net verifiees.
Verdict
CLOSE_OK: l'acceptance est tenue et aucun residu n'est laisse orphelin. Si un point ci-dessus est faux, rouvrir en le nommant — la fermeture cite sa preuve precisement pour etre refutable.