{"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/explaining-time-series-predictions-with","title":"Explaining Time Series Predictions with Dynamic Masks","arxiv_id":"2106.05303","date":"2021-06-09","proceeding":null,"authors":["Jonathan Crabbé","Mihaela van der Schaar"],"abstract":"How can we explain the predictions of a machine learning model? When the data is structured as a multivariate time series, this question induces additional difficulties such as the necessity for the explanation to embody the time dependency and the large number of inputs. To address these challenges, we propose dynamic masks (Dynamask). This method produces instance-wise importance scores for each feature at each time step by fitting a perturbation mask to the input sequence. In order to incorporate the time dependency of the data, Dynamask studies the effects of dynamic perturbation operators. In order to tackle the large number of inputs, we propose a scheme to make the feature selection parsimonious (to select no more feature than necessary) and legible (a notion that we detail by making a parallel with information theory). With synthetic and real-world data, we demonstrate that the dynamic underpinning of Dynamask, together with its parsimony, offer a neat improvement in the identification of feature importance over time. The modularity of Dynamask makes it ideal as a plug-in to increase the transparency of a wide range of machine learning models in areas such as medicine and finance, where time series are abundant.","url_abs":"https://arxiv.org/abs/2106.05303v1","url_pdf":"https://arxiv.org/pdf/2106.05303v1.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":"explaining-time-series-predictions-with","repo_url":"https://github.com/JonathanCrabbe/Dynamask","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"machine-learning","task_name":"BIG-bench Machine Learning"},{"task_slug":"feature-importance","task_name":"Feature Importance"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"feature-selection","task_name":"feature selection"}],"methods":[{"method_slug":"feature-selection","method_name":"Feature Selection"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2106.05303","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.05303"}},"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":"deterministic:regex_extraction","url":"https://github.com/sanatonek/time_","reach":{"status":"gone","observed_at":"2026-09-17","how":"tree_404+repo_404"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/JonathanCrabbe/Dynamask","reach":null}],"summary":{"ran_draft_wrong":3,"ran":1,"unverified":2},"by_repo_kind":{"official":{"samples":6,"ran":4,"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":0,"samples":[{"code_sha256_prefix":"b4608f7c5d748a62","entry":"extract_subtensor","repo":"JonathanCrabbe/Dynamask","repo_kind":"official","path":"attribution/mask.py","file_url":"https://github.com/JonathanCrabbe/Dynamask/blob/HEAD/attribution/mask.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b4608f7c5d748a62"}},{"code_sha256_prefix":"bed3944a2f922019","entry":"get_entropy","repo":"JonathanCrabbe/Dynamask","repo_kind":"official","path":"attribution/mask.py","file_url":"https://github.com/JonathanCrabbe/Dynamask/blob/HEAD/attribution/mask.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bed3944a2f922019"}},{"code_sha256_prefix":"8bba35d9ed51a94d","entry":"get_information","repo":"JonathanCrabbe/Dynamask","repo_kind":"official","path":"attribution/mask.py","file_url":"https://github.com/JonathanCrabbe/Dynamask/blob/HEAD/attribution/mask.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8bba35d9ed51a94d"}},{"code_sha256_prefix":"4ca94cfbb438b230","entry":"normalize","repo":"JonathanCrabbe/Dynamask","repo_kind":"official","path":"attribution/mask.py","file_url":"https://github.com/JonathanCrabbe/Dynamask/blob/HEAD/attribution/mask.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4ca94cfbb438b230"}},{"code_sha256_prefix":"3d4daafa70c3ea88","entry":"Mask","repo":"JonathanCrabbe/Dynamask","repo_kind":"official","path":"attribution/mask.py","file_url":"https://github.com/JonathanCrabbe/Dynamask/blob/HEAD/attribution/mask.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3d4daafa70c3ea88"}},{"code_sha256_prefix":"5a75c92f9665c14d","entry":"Perturbation","repo":"JonathanCrabbe/Dynamask","repo_kind":"official","path":"attribution/mask.py","file_url":"https://github.com/JonathanCrabbe/Dynamask/blob/HEAD/attribution/mask.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5a75c92f9665c14d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}