{"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/sssnet-semi-supervised-signed-network","title":"SSSNET: Semi-Supervised Signed Network Clustering","arxiv_id":"2110.06623","date":"2021-10-13","proceeding":null,"authors":["Yixuan He","Gesine Reinert","Songchao Wang","Mihai Cucuringu"],"abstract":"Node embeddings are a powerful tool in the analysis of networks; yet, their full potential for the important task of node clustering has not been fully exploited. In particular, most state-of-the-art methods generating node embeddings of signed networks focus on link sign prediction, and those that pertain to node clustering are usually not graph neural network (GNN) methods. Here, we introduce a novel probabilistic balanced normalized cut loss for training nodes in a GNN framework for semi-supervised signed network clustering, called SSSNET. The method is end-to-end in combining embedding generation and clustering without an intermediate step; it has node clustering as main focus, with an emphasis on polarization effects arising in networks. The main novelty of our approach is a new take on the role of social balance theory for signed network embeddings. The standard heuristic for justifying the criteria for the embeddings hinges on the assumption that \"an enemy's enemy is a friend\". Here, instead, a neutral stance is assumed on whether or not the enemy of an enemy is a friend. Experimental results on various data sets, including a synthetic signed stochastic block model, a polarized version of it, and real-world data at different scales, demonstrate that SSSNET can achieve comparable or better results than state-of-the-art spectral clustering methods, for a wide range of noise and sparsity levels. SSSNET complements existing methods through the possibility of including exogenous information, in the form of node-level features or labels.","url_abs":"https://arxiv.org/abs/2110.06623v3","url_pdf":"https://arxiv.org/pdf/2110.06623v3.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":"sssnet-semi-supervised-signed-network","repo_url":"https://github.com/sherylhyx/sssnet_signed_clustering","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"cloud-removal","task_name":"Cloud Removal"},{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"link-sign-prediction","task_name":"Link Sign Prediction"},{"task_slug":"node-clustering","task_name":"Node Clustering"},{"task_slug":"stochastic-block-model","task_name":"Stochastic Block Model"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"},{"method_slug":"spectral-clustering","method_name":"Spectral Clustering"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2110.06623","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2110.06623"}},"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/sherylhyx/sssnet_signed_clustering","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"unverified":12},"by_repo_kind":{"official":{"samples":13,"ran":1,"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":"deddc4458686cd82","entry":"load_data_from_memory","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/preprocess.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/preprocess.py","link_basis":"harvester_set","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":"deddc4458686cd82"}},{"code_sha256_prefix":"292f2f8aa3c972d1","entry":"ConvertSMVer2Cores","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"cuda_check.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/cuda_check.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":"292f2f8aa3c972d1"}},{"code_sha256_prefix":"325b1acd86ab7132","entry":"SSBM","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/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":"325b1acd86ab7132"}},{"code_sha256_prefix":"53641a1aa95bd9d2","entry":"cuda_canonical_version","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"install_dependencies.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/install_dependencies.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":"53641a1aa95bd9d2"}},{"code_sha256_prefix":"5532a45b7a61f6bb","entry":"fill","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/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":"5532a45b7a61f6bb"}},{"code_sha256_prefix":"61c1e705c0cef2af","entry":"fix_network","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/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":"61c1e705c0cef2af"}},{"code_sha256_prefix":"ac2e486e413404a7","entry":"invdiag","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/signet_utils.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/signet_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":"ac2e486e413404a7"}},{"code_sha256_prefix":"56f5884d0ac3f418","entry":"label_size_ratio","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/metrics.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":"56f5884d0ac3f418"}},{"code_sha256_prefix":"03cd4246adc37e93","entry":"load_corre_networks","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/preprocess.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/preprocess.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":"03cd4246adc37e93"}},{"code_sha256_prefix":"686cc71cff023b7c","entry":"objscore","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/signet_utils.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/signet_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":"686cc71cff023b7c"}},{"code_sha256_prefix":"ae557b0431639df1","entry":"sizeorder","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/signet_utils.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/signet_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":"ae557b0431639df1"}},{"code_sha256_prefix":"1447da5cf2f5597d","entry":"triplet_loss_InnerProduct","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/metrics.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":"1447da5cf2f5597d"}},{"code_sha256_prefix":"3c8b10a13b664971","entry":"triplet_loss_InnerProduct_alpha","repo":"sherylhyx/sssnet_signed_clustering","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/sherylhyx/sssnet_signed_clustering/blob/HEAD/src/metrics.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":"3c8b10a13b664971"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}