{"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/sample-efficient-bayesian-learning-of-causal","title":"Sample Efficient Bayesian Learning of Causal Graphs from Interventions","arxiv_id":"2410.20089","date":"2024-10-26","proceeding":null,"authors":["Zihan Zhou","Muhammad Qasim Elahi","Murat Kocaoglu"],"abstract":"Causal discovery is a fundamental problem with applications spanning various areas in science and engineering. It is well understood that solely using observational data, one can only orient the causal graph up to its Markov equivalence class, necessitating interventional data to learn the complete causal graph. Most works in the literature design causal discovery policies with perfect interventions, i.e., they have access to infinite interventional samples. This study considers a Bayesian approach for learning causal graphs with limited interventional samples, mirroring real-world scenarios where such samples are usually costly to obtain. By leveraging the recent result of Wien\\\"obst et al. (2023) on uniform DAG sampling in polynomial time, we can efficiently enumerate all the cut configurations and their corresponding interventional distributions of a target set, and further track their posteriors. Given any number of interventional samples, our proposed algorithm randomly intervenes on a set of target vertices that cut all the edges in the graph and returns a causal graph according to the posterior of each target set. When the number of interventional samples is large enough, we show theoretically that our proposed algorithm will return the true causal graph with high probability. We compare our algorithm against various baseline methods on simulated datasets, demonstrating its superior accuracy measured by the structural Hamming distance between the learned DAG and the ground truth. Additionally, we present a case study showing how this algorithm could be modified to answer more general causal questions without learning the whole graph. As an example, we illustrate that our method can be used to estimate the causal effect of a variable that cannot be intervened.","url_abs":"https://arxiv.org/abs/2410.20089v1","url_pdf":"https://arxiv.org/pdf/2410.20089v1.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":"sample-efficient-bayesian-learning-of-causal","repo_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2410.20089","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.20089"}},"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/CausalML-Lab/Bayesian_SampleEfficient_Discovery","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":1,"ran_honours":1,"unverified":13},"by_repo_kind":{"official":{"samples":15,"ran":2,"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":15,"samples":[{"code_sha256_prefix":"eacc0e7403b32a19","entry":"get_adj_list","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"baselines/radpt.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/baselines/radpt.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"eacc0e7403b32a19"}},{"code_sha256_prefix":"bcabc09d303bbe8d","entry":"shanmugam_random_chordal","repo":"causalml-lab/bayesian_sampleefficient_discovery","repo_kind":"official","path":"baselines/run_baseline.py","file_url":"https://github.com/causalml-lab/bayesian_sampleefficient_discovery/blob/HEAD/baselines/run_baseline.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bcabc09d303bbe8d"}},{"code_sha256_prefix":"8c3b36b8dba8ea49","entry":"Learn_cut","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"baselines/rnd.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/baselines/rnd.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":"8c3b36b8dba8ea49"}},{"code_sha256_prefix":"120e6e503802b072","entry":"Sample_and_update_dist","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"baselines/rnd.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/baselines/rnd.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":"120e6e503802b072"}},{"code_sha256_prefix":"52836bcd516a4427","entry":"atomic_graph_sep","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"graph_structure.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/graph_structure.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":"52836bcd516a4427"}},{"code_sha256_prefix":"443976f59ffba29d","entry":"get_K_1_n","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"examples.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/examples.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":"443976f59ffba29d"}},{"code_sha256_prefix":"2f4883616bcb3216","entry":"get_bin_class","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"enumerator.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/enumerator.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":"2f4883616bcb3216"}},{"code_sha256_prefix":"8fc46e8b45ac5483","entry":"get_clique","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"examples.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/examples.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":"8fc46e8b45ac5483"}},{"code_sha256_prefix":"642bad94ae3ed0c3","entry":"get_diamond","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"examples.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/examples.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":"642bad94ae3ed0c3"}},{"code_sha256_prefix":"fd5af47e07550f0f","entry":"get_non_adjacent_pair","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"case_study.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/case_study.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":"fd5af47e07550f0f"}},{"code_sha256_prefix":"feef95c528657f33","entry":"greedy_coloring","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"graph_structure.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/graph_structure.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":"feef95c528657f33"}},{"code_sha256_prefix":"1b8ef5145560c1e4","entry":"is_chordal","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"baselines/radpt.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/baselines/radpt.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":"1b8ef5145560c1e4"}},{"code_sha256_prefix":"9a18f5773d40847c","entry":"perfect_elimination_ordering","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"baselines/radpt.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/baselines/radpt.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":"9a18f5773d40847c"}},{"code_sha256_prefix":"0fc2070338005128","entry":"read_DAG","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"Utils.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/Utils.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":"0fc2070338005128"}},{"code_sha256_prefix":"e873f40110871fc5","entry":"write_graph","repo":"CausalML-Lab/Bayesian_SampleEfficient_Discovery","repo_kind":"official","path":"Utils.py","file_url":"https://github.com/CausalML-Lab/Bayesian_SampleEfficient_Discovery/blob/HEAD/Utils.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":"e873f40110871fc5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}