Skip to content

ML-11 (Python) : Matrix Profile multidimensionnel — détection d'anomalies sans apprentissage (stumpy), section annexe FMP-AE #13992

Closed

Description

@jsboige

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)

  1. 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.
  2. 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 ?
  3. 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.
  4. 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.
  • stumpy installé 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

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

  1. added
    EPICEpic tracking issue with sub-issues
    on Sep 1, 2026
  2. jsboige commented on Sep 2, 2026

    @jsboige
    OwnerAuthor

    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 :

    Dependance satisfaite : #13991 (ML-10) est livre sur #14039, gardes vertes, PR gate re-dispatche.

    stumpy etait absent de l'environnement : installe (stumpy 1.14.1, numba 0.67.0), pas contourne -- regle F. Verifie firsthand : stumpy.stump rend 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.

  3. jsboige commented on Sep 2, 2026

    @jsboige
    OwnerAuthor

    [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 ; condensation min et mSTAMP K=1/K=2 rang 1 ; mSTAMP K=3 aveugle. 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 :

    L'issue reste OPEN : ces deux points de finition en constituent le reliquat.

  4. added 4 commits that reference this issue on Sep 2, 2026
  5. jsboige commented on Sep 4, 2026

    @jsboige
    OwnerAuthor

    [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) :

    1. MP multidimensionnel (stumpy) — notebook 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).
    2. Section annexe FMP-AE — vérifiée à l'instant sur 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 #13992 sans Closes, 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.

  6. myia-ai-01 commented on Sep 18, 2026

    @myia-ai-01
    Collaborator

    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_count nul, 0 erreur, 0 pattern interdit, stumpy / mstamp / mstump reels, annexe FMP-AE (x11), 2342 caracteres de prose par cellule de code (seuil 1200), verdict SOTA-OK dans 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.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    EPICEpic tracking issue with sub-issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions