{"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/algorithmic-recourse-under-imperfect-causal","title":"Algorithmic recourse under imperfect causal knowledge: a probabilistic approach","arxiv_id":"2006.06831","date":"2020-06-11","proceeding":"NeurIPS 2020 12","authors":["Amir-Hossein Karimi","Julius von Kügelgen","Bernhard Schölkopf","Isabel Valera"],"abstract":"Recent work has discussed the limitations of counterfactual explanations to recommend actions for algorithmic recourse, and argued for the need of taking causal relationships between features into consideration. Unfortunately, in practice, the true underlying structural causal model is generally unknown. In this work, we first show that it is impossible to guarantee recourse without access to the true structural equations. To address this limitation, we propose two probabilistic approaches to select optimal actions that achieve recourse with high probability given limited causal knowledge (e.g., only the causal graph). The first captures uncertainty over structural equations under additive Gaussian noise, and uses Bayesian model averaging to estimate the counterfactual distribution. The second removes any assumptions on the structural equations by instead computing the average effect of recourse actions on individuals similar to the person who seeks recourse, leading to a novel subpopulation-based interventional notion of recourse. We then derive a gradient-based procedure for selecting optimal recourse actions, and empirically show that the proposed approaches lead to more reliable recommendations under imperfect causal knowledge than non-probabilistic baselines.","url_abs":"https://arxiv.org/abs/2006.06831v3","url_pdf":"https://arxiv.org/pdf/2006.06831v3.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":"algorithmic-recourse-under-imperfect-causal","repo_url":"https://github.com/amirhk/recourse","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"algorithmic-recourse-under-imperfect-causal","repo_url":"https://github.com/charmlab/recourse","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":null,"task_name":"counterfactual"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.06831","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.06831"}},"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/amirhk/recourse","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/charmlab/recourse","reach":null}],"summary":{"ran":4,"ran_fixture":1,"ran_draft_wrong":2,"unverified":1},"by_repo_kind":{"official":{"samples":4,"ran":3,"repositories":1},"listed":{"samples":4,"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":"0ce75abe329b58fb","entry":"Decoder","repo":"amirhk/recourse","repo_kind":"official","path":"_cvae/models.py","file_url":"https://github.com/amirhk/recourse/blob/HEAD/_cvae/models.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":"0ce75abe329b58fb"}},{"code_sha256_prefix":"987b83e8ed8e2f15","entry":"Encoder","repo":"amirhk/recourse","repo_kind":"official","path":"_cvae/models.py","file_url":"https://github.com/amirhk/recourse/blob/HEAD/_cvae/models.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":"987b83e8ed8e2f15"}},{"code_sha256_prefix":"80322e379aa11111","entry":"VAE","repo":"amirhk/recourse","repo_kind":"official","path":"_cvae/models.py","file_url":"https://github.com/amirhk/recourse/blob/HEAD/_cvae/models.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":"80322e379aa11111"}},{"code_sha256_prefix":"0987ef7bac936b5c","entry":"get_predictive_distribution","repo":"charmlab/recourse","repo_kind":"listed","path":"gpHelper.py","file_url":"https://github.com/charmlab/recourse/blob/HEAD/gpHelper.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0987ef7bac936b5c"}},{"code_sha256_prefix":"0a6ed0439bcc2607","entry":"noise_posterior_covariance","repo":"charmlab/recourse","repo_kind":"listed","path":"gpHelper.py","file_url":"https://github.com/charmlab/recourse/blob/HEAD/gpHelper.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":"0a6ed0439bcc2607"}},{"code_sha256_prefix":"9cb08d06a3992c0b","entry":"noise_posterior_mean","repo":"charmlab/recourse","repo_kind":"listed","path":"gpHelper.py","file_url":"https://github.com/charmlab/recourse/blob/HEAD/gpHelper.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":"9cb08d06a3992c0b"}},{"code_sha256_prefix":"5da45468d17e8152","entry":"noise_posterior_variance","repo":"charmlab/recourse","repo_kind":"listed","path":"gpHelper.py","file_url":"https://github.com/charmlab/recourse/blob/HEAD/gpHelper.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":"5da45468d17e8152"}},{"code_sha256_prefix":"f2c0ab428a1c55cf","entry":"init_weights","repo":"amirhk/recourse","repo_kind":"official","path":"_cvae/models.py","file_url":"https://github.com/amirhk/recourse/blob/HEAD/_cvae/models.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":"f2c0ab428a1c55cf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}