{"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/scalable-structure-learning-for-sparse","title":"Scalable Structure Learning for Sparse Context-Specific Systems","arxiv_id":"2402.07762","date":"2024-02-12","proceeding":null,"authors":["Felix Leopoldo Rios","Alex Markham","Liam Solus"],"abstract":"Several approaches to graphically representing context-specific relations among jointly distributed categorical variables have been proposed, along with structure learning algorithms. While existing optimization-based methods have limited scalability due to the large number of context-specific models, the constraint-based methods are more prone to error than even constraint-based directed acyclic graph learning algorithms since more relations must be tested. We present an algorithm for learning context-specific models that scales to hundreds of variables. Scalable learning is achieved through a combination of an order-based Markov chain Monte-Carlo search and a novel, context-specific sparsity assumption that is analogous to those typically invoked for directed acyclic graphical models. Unlike previous Markov chain Monte-Carlo search methods, our Markov chain is guaranteed to have the true posterior of the variable orderings as the stationary distribution. To implement the method, we solve a first case of an open problem recently posed by Alon and Balogh. Future work solving increasingly general instances of this problem would allow our methods to learn increasingly dense models. The method is shown to perform well on synthetic data and real world examples, in terms of both accuracy and scalability.","url_abs":"https://arxiv.org/abs/2402.07762v2","url_pdf":"https://arxiv.org/pdf/2402.07762v2.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":"scalable-structure-learning-for-sparse","repo_url":"https://github.com/felixleopoldo/cslearn","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"graph-learning","task_name":"Graph Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2402.07762","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.07762"}},"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/felixleopoldo/cslearn","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":7,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"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":"56a7eeefc6a58db3","entry":"KL_divergence","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/evaluate.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"56a7eeefc6a58db3"}},{"code_sha256_prefix":"2a2a3a20fec7bc88","entry":"decomposition","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/dependence.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/dependence.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2a2a3a20fec7bc88"}},{"code_sha256_prefix":"5a2c9a09f7a03d00","entry":"num_stagings","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/double_cvar_stagings.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/double_cvar_stagings.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5a2c9a09f7a03d00"}},{"code_sha256_prefix":"0761d21a6e6fd22e","entry":"pairwise_cis","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/dependence.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/dependence.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0761d21a6e6fd22e"}},{"code_sha256_prefix":"4ffd4fad4b067873","entry":"score_order","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/scoring.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/scoring.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4ffd4fad4b067873"}},{"code_sha256_prefix":"c9955ba204e1c22b","entry":"shd_edges","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/evaluate.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c9955ba204e1c22b"}},{"code_sha256_prefix":"5b6590bd01959de4","entry":"weak_union","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/dependence.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/dependence.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5b6590bd01959de4"}},{"code_sha256_prefix":"b53c12e40a76de4d","entry":"plot","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/cstree.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/cstree.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b53c12e40a76de4d"}},{"code_sha256_prefix":"357af2038c2dae1c","entry":"sachs_observational","repo":"felixleopoldo/cslearn","repo_kind":"official","path":"src/cslearn/examp_datasets.py","file_url":"https://github.com/felixleopoldo/cslearn/blob/HEAD/src/cslearn/examp_datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"357af2038c2dae1c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}