{"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/interval-abstractions-for-robust","title":"Interval Abstractions for Robust Counterfactual Explanations","arxiv_id":"2404.13736","date":"2024-04-21","proceeding":null,"authors":["Junqi Jiang","Francesco Leofante","Antonio Rago","Francesca Toni"],"abstract":"Counterfactual Explanations (CEs) have emerged as a major paradigm in explainable AI research, providing recourse recommendations for users affected by the decisions of machine learning models. However, CEs found by existing methods often become invalid when slight changes occur in the parameters of the model they were generated for. The literature lacks a way to provide exhaustive robustness guarantees for CEs under model changes, in that existing methods to improve CEs' robustness are mostly heuristic, and the robustness performances are evaluated empirically using only a limited number of retrained models. To bridge this gap, we propose a novel interval abstraction technique for parametric machine learning models, which allows us to obtain provable robustness guarantees for CEs under a possibly infinite set of plausible model changes $\\Delta$. Based on this idea, we formalise a robustness notion for CEs, which we call $\\Delta$-robustness, in both binary and multi-class classification settings. We present procedures to verify $\\Delta$-robustness based on Mixed Integer Linear Programming, using which we further propose algorithms to generate CEs that are $\\Delta$-robust. In an extensive empirical study involving neural networks and logistic regression models, we demonstrate the practical applicability of our approach. We discuss two strategies for determining the appropriate hyperparameters in our method, and we quantitatively benchmark CEs generated by eleven methods, highlighting the effectiveness of our algorithms in finding robust CEs.","url_abs":"https://arxiv.org/abs/2404.13736v2","url_pdf":"https://arxiv.org/pdf/2404.13736v2.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":"interval-abstractions-for-robust","repo_url":"https://github.com/junqi-jiang/interval-abstractions","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"multi-class-classification","task_name":"Multi-class Classification"},{"task_slug":null,"task_name":"counterfactual"}],"methods":[{"method_slug":"logistic-regression","method_name":"Logistic Regression"},{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.13736","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.13736"}},"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/junqi-jiang/interval-abstractions","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":8,"unverified":8},"by_repo_kind":{"official":{"samples":16,"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":0,"samples":[{"code_sha256_prefix":"62d5bd4827abfc4d","entry":"build_dataset_feature_types","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/intabs.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/intabs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"62d5bd4827abfc4d"}},{"code_sha256_prefix":"838c0bb8bc93ddad","entry":"build_inn_nodes","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/intabs.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/intabs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"838c0bb8bc93ddad"}},{"code_sha256_prefix":"a0a853f63e820c1b","entry":"find_percentage_of_val_delta","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/evaluation.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/evaluation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a0a853f63e820c1b"}},{"code_sha256_prefix":"e619ad57c61713e4","entry":"gce","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/methods.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/methods.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e619ad57c61713e4"}},{"code_sha256_prefix":"1f82f506abe66066","entry":"l2_projection","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"rbr/rbr_loss.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/rbr/rbr_loss.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":"1f82f506abe66066"}},{"code_sha256_prefix":"dbdcdeb2d88a985f","entry":"min_max_scale","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs_multi/dataset.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs_multi/dataset.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":"dbdcdeb2d88a985f"}},{"code_sha256_prefix":"e96dcd507f52e146","entry":"power10floor","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"rbr/rbr.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/rbr/rbr.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":"e96dcd507f52e146"}},{"code_sha256_prefix":"15e5371ad7238d2a","entry":"reconstruct_encoding_constraints","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"rbr/rbr.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/rbr/rbr.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"15e5371ad7238d2a"}},{"code_sha256_prefix":"b0a08223420c22e3","entry":"build_inn_weights_biases","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/intabs.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/intabs.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":"b0a08223420c22e3"}},{"code_sha256_prefix":"6d58ff258cc4d410","entry":"compute_wac","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/methods.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/methods.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":"6d58ff258cc4d410"}},{"code_sha256_prefix":"825a984775be3e19","entry":"generate_recourse","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"rbr/rbr.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/rbr/rbr.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":"825a984775be3e19"}},{"code_sha256_prefix":"3418eb8c37f8263e","entry":"get_delta_incremental_training","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/evaluation.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/evaluation.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":"3418eb8c37f8263e"}},{"code_sha256_prefix":"9552a3335d1b4d7b","entry":"nnce","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs_multi/methods_multi.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs_multi/methods_multi.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":"9552a3335d1b4d7b"}},{"code_sha256_prefix":"8e54b34f92068d66","entry":"normalised_l1","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/evaluation.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/evaluation.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":"8e54b34f92068d66"}},{"code_sha256_prefix":"3500269bdb2aa1c1","entry":"train_clf","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs/classifier_binary.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs/classifier_binary.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":"3500269bdb2aa1c1"}},{"code_sha256_prefix":"1bb99cc138e49dec","entry":"train_clf","repo":"junqi-jiang/interval-abstractions","repo_kind":"official","path":"intabs_multi/classifier_multi.py","file_url":"https://github.com/junqi-jiang/interval-abstractions/blob/HEAD/intabs_multi/classifier_multi.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":"1bb99cc138e49dec"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}