{"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/are-we-certain-it-s-anomalous","title":"Are we certain it's anomalous?","arxiv_id":"2211.09224","date":"2022-11-16","proceeding":null,"authors":["Alessandro Flaborea","Bardh Prenkaj","Bharti Munjal","Marco Aurelio Sterpa","Dario Aragona","Luca Podo","Fabio Galasso"],"abstract":"The progress in modelling time series and, more generally, sequences of structured data has recently revamped research in anomaly detection. The task stands for identifying abnormal behaviors in financial series, IT systems, aerospace measurements, and the medical domain, where anomaly detection may aid in isolating cases of depression and attend the elderly. Anomaly detection in time series is a complex task since anomalies are rare due to highly non-linear temporal correlations and since the definition of anomalous is sometimes subjective. Here we propose the novel use of Hyperbolic uncertainty for Anomaly Detection (HypAD). HypAD learns self-supervisedly to reconstruct the input signal. We adopt best practices from the state-of-the-art to encode the sequence by an LSTM, jointly learned with a decoder to reconstruct the signal, with the aid of GAN critics. Uncertainty is estimated end-to-end by means of a hyperbolic neural network. By using uncertainty, HypAD may assess whether it is certain about the input signal but it fails to reconstruct it because this is anomalous; or whether the reconstruction error does not necessarily imply anomaly, as the model is uncertain, e.g. a complex but regular input signal. The novel key idea is that a detectable anomaly is one where the model is certain but it predicts wrongly. HypAD outperforms the current state-of-the-art for univariate anomaly detection on established benchmarks based on data from NASA, Yahoo, Numenta, Amazon, and Twitter. It also yields state-of-the-art performance on a multivariate dataset of anomaly activities in elderly home residences, and it outperforms the baseline on SWaT. Overall, HypAD yields the lowest false alarms at the best performance rate, thanks to successfully identifying detectable anomalies.","url_abs":"https://arxiv.org/abs/2211.09224v4","url_pdf":"https://arxiv.org/pdf/2211.09224v4.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":"are-we-certain-it-s-anomalous","repo_url":"https://github.com/aleflabo/HypAD","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"}],"methods":[{"method_slug":"lstm","method_name":"LSTM"},{"method_slug":"sigmoid-activation","method_name":"Sigmoid Activation"},{"method_slug":"tanh-activation","method_name":"Tanh Activation"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2211.09224","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2211.09224"}},"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/aleflabo/HypAD","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":24},"by_repo_kind":{"official":{"samples":24,"ran":0,"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":"edde7ea27b3af6d7","entry":"arsinh","repo":"aleflabo/HypAD","repo_kind":"official","path":"math_.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/math_.py","link_basis":"harvester_set","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":"edde7ea27b3af6d7"}},{"code_sha256_prefix":"00f30c4d850a7768","entry":"artanh","repo":"aleflabo/HypAD","repo_kind":"official","path":"math_.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/math_.py","link_basis":"harvester_set","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":"00f30c4d850a7768"}},{"code_sha256_prefix":"d09bfd0a1223d58a","entry":"calc_accuracy","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/utils.py","link_basis":"harvester_set","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":"d09bfd0a1223d58a"}},{"code_sha256_prefix":"8e8878e3cc683e8d","entry":"calc_accuracy_binary","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/utils.py","link_basis":"harvester_set","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":"8e8878e3cc683e8d"}},{"code_sha256_prefix":"fa47a4519d4ef5c1","entry":"calc_topk_accuracy","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/utils.py","link_basis":"harvester_set","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":"fa47a4519d4ef5c1"}},{"code_sha256_prefix":"1acd35953c608551","entry":"casas_anomalies","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/anomaly_detection_utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/anomaly_detection_utils.py","link_basis":"harvester_set","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":"1acd35953c608551"}},{"code_sha256_prefix":"289f57bf7e900dab","entry":"compute_critic_scores","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/anomaly_detection_utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/anomaly_detection_utils.py","link_basis":"harvester_set","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":"289f57bf7e900dab"}},{"code_sha256_prefix":"3b4149036dae58ef","entry":"compute_supervised_loss","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/losses.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/losses.py","link_basis":"harvester_set","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":"3b4149036dae58ef"}},{"code_sha256_prefix":"e6ee59bdde3e7f5d","entry":"convert_date","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/utils.py","link_basis":"harvester_set","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":"e6ee59bdde3e7f5d"}},{"code_sha256_prefix":"6c0b8fb7e97280e9","entry":"convert_date_single","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/anomaly_detection_utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/anomaly_detection_utils.py","link_basis":"harvester_set","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":"6c0b8fb7e97280e9"}},{"code_sha256_prefix":"8cd82307c19e9ebc","entry":"download","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/data.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/data.py","link_basis":"harvester_set","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":"8cd82307c19e9ebc"}},{"code_sha256_prefix":"7996920fef9af9d0","entry":"load_csv","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/data.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/data.py","link_basis":"harvester_set","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":"7996920fef9af9d0"}},{"code_sha256_prefix":"068dd3957754e24a","entry":"load_signal","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/data.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/data.py","link_basis":"harvester_set","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":"068dd3957754e24a"}},{"code_sha256_prefix":"a4ee074610449d21","entry":"mobius_linear","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/hyrnn_nets.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/hyrnn_nets.py","link_basis":"harvester_set","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":"a4ee074610449d21"}},{"code_sha256_prefix":"9dffae8f52f9f0a0","entry":"mobius_matvec","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/hyrnn_nets.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/hyrnn_nets.py","link_basis":"harvester_set","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":"9dffae8f52f9f0a0"}},{"code_sha256_prefix":"9f339b3c440a606a","entry":"one_rnn_transform","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/hyrnn_nets.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/hyrnn_nets.py","link_basis":"harvester_set","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":"9f339b3c440a606a"}},{"code_sha256_prefix":"cd051a881427eb3f","entry":"pairwise_distances","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/poincare_distance.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/poincare_distance.py","link_basis":"harvester_set","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":"cd051a881427eb3f"}},{"code_sha256_prefix":"5c19852209e2c5fe","entry":"poincare_distance","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/poincare_distance.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/poincare_distance.py","link_basis":"harvester_set","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":"5c19852209e2c5fe"}},{"code_sha256_prefix":"00241d35d68123e3","entry":"save_known_anomalies","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/dataloader.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/dataloader.py","link_basis":"harvester_set","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":"00241d35d68123e3"}},{"code_sha256_prefix":"3f7e8409c9f2f2ba","entry":"square_norm","repo":"aleflabo/HypAD","repo_kind":"official","path":"hyperspace/poincare_distance.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/hyperspace/poincare_distance.py","link_basis":"harvester_set","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":"3f7e8409c9f2f2ba"}},{"code_sha256_prefix":"c33c4cbe2f422504","entry":"tanh","repo":"aleflabo/HypAD","repo_kind":"official","path":"math_.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/math_.py","link_basis":"harvester_set","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":"c33c4cbe2f422504"}},{"code_sha256_prefix":"f8165a0a30ee6414","entry":"unroll_signal","repo":"aleflabo/HypAD","repo_kind":"official","path":"models/tadgan.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/models/tadgan.py","link_basis":"harvester_set","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":"f8165a0a30ee6414"}},{"code_sha256_prefix":"7c00efad4a3148c1","entry":"unroll_ts","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/utils.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/utils.py","link_basis":"harvester_set","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":"7c00efad4a3148c1"}},{"code_sha256_prefix":"3e220c20c168a267","entry":"yahoo_preprocess","repo":"aleflabo/HypAD","repo_kind":"official","path":"utils/dataloader.py","file_url":"https://github.com/aleflabo/HypAD/blob/HEAD/utils/dataloader.py","link_basis":"harvester_set","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":"3e220c20c168a267"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}