{"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/pure-message-passing-can-estimate-common","title":"Pure Message Passing Can Estimate Common Neighbor for Link Prediction","arxiv_id":"2309.00976","date":"2023-09-02","proceeding":null,"authors":["Kaiwen Dong","Zhichun Guo","Nitesh V. Chawla"],"abstract":"Message Passing Neural Networks (MPNNs) have emerged as the {\\em de facto} standard in graph representation learning. However, when it comes to link prediction, they often struggle, surpassed by simple heuristics such as Common Neighbor (CN). This discrepancy stems from a fundamental limitation: while MPNNs excel in node-level representation, they stumble with encoding the joint structural features essential to link prediction, like CN. To bridge this gap, we posit that, by harnessing the orthogonality of input vectors, pure message-passing can indeed capture joint structural features. Specifically, we study the proficiency of MPNNs in approximating CN heuristics. Based on our findings, we introduce the Message Passing Link Predictor (MPLP), a novel link prediction model. MPLP taps into quasi-orthogonal vectors to estimate link-level structural features, all while preserving the node-level complexities. Moreover, our approach demonstrates that leveraging message-passing to capture structural features could offset MPNNs' expressiveness limitations at the expense of estimation variance. We conduct experiments on benchmark datasets from various domains, where our method consistently outperforms the baseline methods.","url_abs":"https://arxiv.org/abs/2309.00976v4","url_pdf":"https://arxiv.org/pdf/2309.00976v4.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":"pure-message-passing-can-estimate-common","repo_url":"https://github.com/Barcavin/efficient-node-labelling","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"graph-representation-learning","task_name":"Graph Representation Learning"},{"task_slug":"link-prediction","task_name":"Link Prediction"},{"task_slug":"prediction","task_name":"Prediction"},{"task_slug":"representation-learning","task_name":"Representation Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/link-property-prediction-on-ogbl-citation2","task":"Link Property Prediction","dataset":"ogbl-citation2","model":"MPLP","rank_in_archive_order":2,"of":23,"metrics":{"Ext. data":"No","Number of params":"749757283","Test MRR":"0.9072 ± 0.0012","Validation MRR":"0.9074 ± 0.0011"},"uses_additional_data":false},{"leaderboard":"/sota/link-property-prediction-on-ogbl-ppa","task":"Link Property Prediction","dataset":"ogbl-ppa","model":"MPLP","rank_in_archive_order":4,"of":26,"metrics":{"Ext. data":"No","Number of params":"147794531","Test Hits@100":"0.6524 ± 0.0150","Validation Hits@100":"0.6685 ± 0.0073"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2309.00976","atlas_url":"https://app.syntology.ai/?focus=2309.00976","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2309.00976"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/Barcavin/efficient-node-labelling","reach":{"status":"ok"}}],"summary":{"ran":8,"unverified":2},"by_repo_kind":{"official":{"samples":10,"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":10,"samples":[{"code_sha256_prefix":"3f4feffe7a709b10","entry":"barabasi_albert","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"graph_generation.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/graph_generation.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f4feffe7a709b10"}},{"code_sha256_prefix":"2f88e938b8c51a8a","entry":"dotproduct_naive","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"node_label.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/node_label.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2f88e938b8c51a8a"}},{"code_sha256_prefix":"5ab4deddff163d3b","entry":"erdos_renyi","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"graph_generation.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/graph_generation.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5ab4deddff163d3b"}},{"code_sha256_prefix":"6d854e401e59d083","entry":"grid","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"graph_generation.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/graph_generation.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6d854e401e59d083"}},{"code_sha256_prefix":"38f108f4840e3bec","entry":"randomsplit","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"utils.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"38f108f4840e3bec"}},{"code_sha256_prefix":"bda8c8cab90cadac","entry":"read_ego","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"snap_dataset.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/snap_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bda8c8cab90cadac"}},{"code_sha256_prefix":"d2b9601c37b18581","entry":"read_soc","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"snap_dataset.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/snap_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d2b9601c37b18581"}},{"code_sha256_prefix":"6723e03ef3028400","entry":"read_wiki","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"snap_dataset.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/snap_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6723e03ef3028400"}},{"code_sha256_prefix":"0c0ba00388ce84ae","entry":"load_unsplitted_data","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"utils.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/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":"0c0ba00388ce84ae"}},{"code_sha256_prefix":"c7e2089f8ace1175","entry":"test_hits","repo":"Barcavin/efficient-node-labelling","repo_kind":"official","path":"train_utils.py","file_url":"https://github.com/Barcavin/efficient-node-labelling/blob/HEAD/train_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":"c7e2089f8ace1175"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}