{"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/expressive-higher-order-link-prediction","title":"Expressive Higher-Order Link Prediction through Hypergraph Symmetry Breaking","arxiv_id":"2402.11339","date":"2024-02-17","proceeding":null,"authors":["Simon Zhang","Cheng Xin","Tamal K. Dey"],"abstract":"A hypergraph consists of a set of nodes along with a collection of subsets of the nodes called hyperedges. Higher-order link prediction is the task of predicting the existence of a missing hyperedge in a hypergraph. A hyperedge representation learned for higher order link prediction is fully expressive when it does not lose distinguishing power up to an isomorphism. Many existing hypergraph representation learners, are bounded in expressive power by the Generalized Weisfeiler Lehman-1 (GWL-1) algorithm, a generalization of the Weisfeiler Lehman-1 algorithm. However, GWL-1 has limited expressive power. In fact, induced subhypergraphs with identical GWL-1 valued nodes are indistinguishable. Furthermore, message passing on hypergraphs can already be computationally expensive, especially on GPU memory. To address these limitations, we devise a preprocessing algorithm that can identify certain regular subhypergraphs exhibiting symmetry. Our preprocessing algorithm runs once with complexity the size of the input hypergraph. During training, we randomly replace subhypergraphs identified by the algorithm with covering hyperedges to break symmetry. We show that our method improves the expressivity of GWL-1. Our extensive experiments also demonstrate the effectiveness of our approach for higher-order link prediction on both graph and hypergraph datasets with negligible change in computation.","url_abs":"https://arxiv.org/abs/2402.11339v2","url_pdf":"https://arxiv.org/pdf/2402.11339v2.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":"expressive-higher-order-link-prediction","repo_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}}],"tasks":[{"task_slug":null,"task_name":"GPU"},{"task_slug":"link-prediction","task_name":"Link Prediction"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2402.11339","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.11339"}},"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/simonzhang00/hypergraphsymmetrybreaking","reach":{"status":"ok","spdx":"GPL-3.0"}}],"summary":{"ran":13},"by_repo_kind":{"official":{"samples":13,"ran":13,"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":13,"samples":[{"code_sha256_prefix":"ed7df4ea25f646cd","entry":"cycle_basis","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/utils/networkx_cycles.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/utils/networkx_cycles.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ed7df4ea25f646cd"}},{"code_sha256_prefix":"1812356870960cad","entry":"find_cycle","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/utils/networkx_cycles.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/utils/networkx_cycles.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"1812356870960cad"}},{"code_sha256_prefix":"b099c1a6cb375367","entry":"find_open_triangles","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"experiments/hyperedge_prediction/hypergnn_baseline.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/experiments/hyperedge_prediction/hypergnn_baseline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b099c1a6cb375367"}},{"code_sha256_prefix":"9dbed61d26a2c917","entry":"invert_index","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"experiments/hyperedge_prediction/linkpred_gnn.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/experiments/hyperedge_prediction/linkpred_gnn.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"9dbed61d26a2c917"}},{"code_sha256_prefix":"9a18886baf12e3f9","entry":"load_from_json","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/loader.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/loader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"9a18886baf12e3f9"}},{"code_sha256_prefix":"59b335d89644e2b8","entry":"load_from_pickle","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/loader.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/loader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"59b335d89644e2b8"}},{"code_sha256_prefix":"4b0551a721f647b7","entry":"load_from_txt","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/loader.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/loader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"4b0551a721f647b7"}},{"code_sha256_prefix":"719a95cbeae2aa5e","entry":"min_max_scaler","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/normalize.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/normalize.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"719a95cbeae2aa5e"}},{"code_sha256_prefix":"106cc7b8a602ad6d","entry":"norm_ft","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/normalize.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/normalize.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"106cc7b8a602ad6d"}},{"code_sha256_prefix":"ce5b8f7876d08ace","entry":"recursive_simple_cycles","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/utils/networkx_cycles.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/utils/networkx_cycles.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ce5b8f7876d08ace"}},{"code_sha256_prefix":"93c91fba4709c5bc","entry":"to_bool_tensor","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/common.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"93c91fba4709c5bc"}},{"code_sha256_prefix":"2db6fb00a0128864","entry":"to_long_tensor","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/common.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"2db6fb00a0128864"}},{"code_sha256_prefix":"47ffdc6c06057c66","entry":"to_tensor","repo":"simonzhang00/hypergraphsymmetrybreaking","repo_kind":"official","path":"hsb/datapipe/common.py","file_url":"https://github.com/simonzhang00/hypergraphsymmetrybreaking/blob/HEAD/hsb/datapipe/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"47ffdc6c06057c66"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}