{"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/robust-graph-clustering-via-meta-weighting","title":"Robust Graph Clustering via Meta Weighting for Noisy Graphs","arxiv_id":"2311.00322","date":"2023-11-01","proceeding":null,"authors":["Hyeonsoo Jo","Fanchen Bu","Kijung Shin"],"abstract":"How can we find meaningful clusters in a graph robustly against noise edges? Graph clustering (i.e., dividing nodes into groups of similar ones) is a fundamental problem in graph analysis with applications in various fields. Recent studies have demonstrated that graph neural network (GNN) based approaches yield promising results for graph clustering. However, we observe that their performance degenerates significantly on graphs with noise edges, which are prevalent in practice. In this work, we propose MetaGC for robust GNN-based graph clustering. MetaGC employs a decomposable clustering loss function, which can be rephrased as a sum of losses over node pairs. We add a learnable weight to each node pair, and MetaGC adaptively adjusts the weights of node pairs using meta-weighting so that the weights of meaningful node pairs increase and the weights of less-meaningful ones (e.g., noise edges) decrease. We show empirically that MetaGC learns weights as intended and consequently outperforms the state-of-the-art GNN-based competitors, even when they are equipped with separate denoising schemes, on five real-world graphs under varying levels of noise. Our code and datasets are available at https://github.com/HyeonsooJo/MetaGC.","url_abs":"https://arxiv.org/abs/2311.00322v2","url_pdf":"https://arxiv.org/pdf/2311.00322v2.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":"robust-graph-clustering-via-meta-weighting","repo_url":"https://github.com/hyeonsoojo/metagc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"graph-clustering","task_name":"Graph Clustering"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2311.00322","atlas_url":"https://app.syntology.ai/?focus=2311.00322","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.00322"}},"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/hyeonsoojo/metagc","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":8,"ran_honours":1,"unverified":1},"by_repo_kind":{"official":{"samples":10,"ran":9,"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":"8df7821a89f8237c","entry":"adarmic_adar","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/data_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/data_utils.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":"8df7821a89f8237c"}},{"code_sha256_prefix":"972f0874d70166c2","entry":"add_noise_edges","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/data_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/data_utils.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":"972f0874d70166c2"}},{"code_sha256_prefix":"3152f573a8af402b","entry":"modularity","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/metric.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/metric.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":"3152f573a8af402b"}},{"code_sha256_prefix":"69994d91ca12471e","entry":"normalized_adj","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/load_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/load_utils.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":"69994d91ca12471e"}},{"code_sha256_prefix":"c4fbb25e66a33ccd","entry":"normalized_attributes","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/load_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/load_utils.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":"c4fbb25e66a33ccd"}},{"code_sha256_prefix":"10297a169f7e2aaa","entry":"pairwise_precision","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/metric.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/metric.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"10297a169f7e2aaa"}},{"code_sha256_prefix":"b7dbda02c4058c40","entry":"pairwise_recall","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/metric.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/metric.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b7dbda02c4058c40"}},{"code_sha256_prefix":"5c3fa9402a9405bc","entry":"parse_index_file","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/load_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/load_utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5c3fa9402a9405bc"}},{"code_sha256_prefix":"2fe75f7f5b4e5ea9","entry":"update_module","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/clone_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/clone_utils.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":"2fe75f7f5b4e5ea9"}},{"code_sha256_prefix":"3425b06cc24cb577","entry":"clone_module","repo":"hyeonsoojo/metagc","repo_kind":"official","path":"utils/clone_utils.py","file_url":"https://github.com/hyeonsoojo/metagc/blob/HEAD/utils/clone_utils.py","link_basis":"harvester_set","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":"3425b06cc24cb577"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}