{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/interdependency-matters-graph-alignment-for","title":"Interdependency Matters: Graph Alignment for Multivariate Time Series Anomaly Detection","arxiv_id":"2410.08877","date":"2024-10-11","proceeding":null,"authors":["Yuanyi Wang","Haifeng Sun","Chengsen Wang","Mengde Zhu","Jingyu Wang","Wei Tang","Qi Qi","Zirui Zhuang","Jianxin Liao"],"abstract":"Anomaly detection in multivariate time series (MTS) is crucial for various applications in data mining and industry. Current industrial methods typically approach anomaly detection as an unsupervised learning task, aiming to identify deviations by estimating the normal distribution in noisy, label-free datasets. These methods increasingly incorporate interdependencies between channels through graph structures to enhance accuracy. However, the role of interdependencies is more critical than previously understood, as shifts in interdependencies between MTS channels from normal to anomalous data are significant. This observation suggests that \\textit{anomalies could be detected by changes in these interdependency graph series}. To capitalize on this insight, we introduce MADGA (MTS Anomaly Detection via Graph Alignment), which redefines anomaly detection as a graph alignment (GA) problem that explicitly utilizes interdependencies for anomaly detection. MADGA dynamically transforms subsequences into graphs to capture the evolving interdependencies, and Graph alignment is performed between these graphs, optimizing an alignment plan that minimizes cost, effectively minimizing the distance for normal data and maximizing it for anomalous data. Uniquely, our GA approach involves explicit alignment of both nodes and edges, employing Wasserstein distance for nodes and Gromov-Wasserstein distance for edges. To our knowledge, this is the first application of GA to MTS anomaly detection that explicitly leverages interdependency for this purpose. Extensive experiments on diverse real-world datasets validate the effectiveness of MADGA, demonstrating its capability to detect anomalies and differentiate interdependencies, consistently achieving state-of-the-art across various scenarios.","url_abs":"https://arxiv.org/abs/2410.08877v1","url_pdf":"https://arxiv.org/pdf/2410.08877v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"interdependency-matters-graph-alignment-for","repo_url":"https://github.com/wyy-code/MADGA","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series-anomaly-detection","task_name":"Time Series Anomaly Detection"}],"methods":[{"method_slug":"ga","method_name":"GA"},{"method_slug":"mts","method_name":"MTS"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.08877","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.08877"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/wyy-code/MADGA","reach":{"status":"ok"}}],"summary":{"ran":6,"ran_draft_wrong":1,"ran_violates":1,"unverified":3},"by_repo_kind":{"official":{"samples":11,"ran":8,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":11,"samples":[{"code_sha256_prefix":"91eab0777cc88db7","entry":"ConvDecoder","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GAN.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GAN.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"91eab0777cc88db7"}},{"code_sha256_prefix":"44ccb93e8a3549c8","entry":"IPOT_alg_pytorch_optimized","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GW.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GW.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"44ccb93e8a3549c8"}},{"code_sha256_prefix":"f91a652387a9e718","entry":"IPOT_distance_torch_batch","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GW.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GW.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f91a652387a9e718"}},{"code_sha256_prefix":"9ecd315dca81b217","entry":"ROC","repo":"wyy-code/MADGA","repo_kind":"official","path":"utils.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9ecd315dca81b217"}},{"code_sha256_prefix":"d2e490359ddee091","entry":"R_Loss","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GAN.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GAN.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d2e490359ddee091"}},{"code_sha256_prefix":"e1243b39051334f9","entry":"create_masks","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/NF.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/NF.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e1243b39051334f9"}},{"code_sha256_prefix":"7a35dac7185a5742","entry":"interpolate","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GraphSync.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GraphSync.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7a35dac7185a5742"}},{"code_sha256_prefix":"7c508037b40522af","entry":"str2bool","repo":"wyy-code/MADGA","repo_kind":"official","path":"args.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/args.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7c508037b40522af"}},{"code_sha256_prefix":"0a503f99c3cb7063","entry":"ConvEncoder","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GAN.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GAN.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0a503f99c3cb7063"}},{"code_sha256_prefix":"0b73beea0b668167","entry":"IPOT_distance_torch_batch_optimized","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/GW.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/GW.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0b73beea0b668167"}},{"code_sha256_prefix":"7f9163461fb01c53","entry":"create_masks_pmu","repo":"wyy-code/MADGA","repo_kind":"official","path":"models/NF.py","file_url":"https://github.com/wyy-code/MADGA/blob/HEAD/models/NF.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7f9163461fb01c53"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}