{"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/disentangled-graph-collaborative-filtering","title":"Disentangled Graph Collaborative Filtering","arxiv_id":"2007.01764","date":"2020-07-03","proceeding":null,"authors":["Xiang Wang","Hongye Jin","An Zhang","Xiangnan He","Tong Xu","Tat-Seng Chua"],"abstract":"Learning informative representations of users and items from the interaction data is of crucial importance to collaborative filtering (CF). Present embedding functions exploit user-item relationships to enrich the representations, evolving from a single user-item instance to the holistic interaction graph. Nevertheless, they largely model the relationships in a uniform manner, while neglecting the diversity of user intents on adopting the items, which could be to pass time, for interest, or shopping for others like families. Such uniform approach to model user interests easily results in suboptimal representations, failing to model diverse relationships and disentangle user intents in representations. In this work, we pay special attention to user-item relationships at the finer granularity of user intents. We hence devise a new model, Disentangled Graph Collaborative Filtering (DGCF), to disentangle these factors and yield disentangled representations. Specifically, by modeling a distribution over intents for each user-item interaction, we iteratively refine the intent-aware interaction graphs and representations. Meanwhile, we encourage independence of different intents. This leads to disentangled representations, effectively distilling information pertinent to each intent. We conduct extensive experiments on three benchmark datasets, and DGCF achieves significant improvements over several state-of-the-art models like NGCF, DisenGCN, and MacridVAE. Further analyses offer insights into the advantages of DGCF on the disentanglement of user intents and interpretability of representations. Our codes are available in https://github.com/xiangwang1223/disentangled_graph_collaborative_filtering.","url_abs":"https://arxiv.org/abs/2007.01764v1","url_pdf":"https://arxiv.org/pdf/2007.01764v1.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":"disentangled-graph-collaborative-filtering","repo_url":"https://github.com/xiangwang1223/disentangled_graph_collaborative_filtering","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"disentangled-graph-collaborative-filtering","repo_url":"https://github.com/Tingting2477/DGCF_torch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"collaborative-filtering","task_name":"Collaborative Filtering"},{"task_slug":"disentanglement","task_name":"Disentanglement"}],"methods":[{"method_slug":"interpretability","method_name":"Interpretability"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/collaborative-filtering-on-movielens-1m-1","task":"Collaborative Filtering","dataset":"MovieLens 1M","model":"DGCF","rank_in_archive_order":3,"of":4,"metrics":{"NDCG@20":"0.2504","Recall@20":"0.2640"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.01764","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.01764"}},"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/xiangwang1223/disentangled_graph_collaborative_filtering","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Tingting2477/DGCF_torch","reach":null}],"summary":{"ran_violates":2,"ran_honours":1,"ran_draft_wrong":2,"unverified":1},"by_repo_kind":{"official":{"samples":2,"ran":1,"repositories":1},"listed":{"samples":3,"ran":3,"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":6,"samples":[{"code_sha256_prefix":"28586384efc90a24","entry":"create_initial_A_values","repo":"xiangwang1223/disentangled_graph_collaborative_filtering","repo_kind":"official","path":"DGCF_v1/DGCF.py","file_url":"https://github.com/xiangwang1223/disentangled_graph_collaborative_filtering/blob/HEAD/DGCF_v1/DGCF.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"28586384efc90a24"}},{"code_sha256_prefix":"f16f715a59169c8a","entry":"hasNumbers","repo":"Tingting2477/DGCF_torch","repo_kind":"listed","path":"DGCF_torch/helper.py","file_url":"https://github.com/Tingting2477/DGCF_torch/blob/HEAD/DGCF_torch/helper.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f16f715a59169c8a"}},{"code_sha256_prefix":"15ca5e4ed1a40d99","entry":"load_adjacency_list_data","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"15ca5e4ed1a40d99"}},{"code_sha256_prefix":"b07be870060c7e26","entry":"txt2list","repo":"Tingting2477/DGCF_torch","repo_kind":"listed","path":"DGCF_torch/helper.py","file_url":"https://github.com/Tingting2477/DGCF_torch/blob/HEAD/DGCF_torch/helper.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b07be870060c7e26"}},{"code_sha256_prefix":"ddd78902563c0d71","entry":"uni2str","repo":"Tingting2477/DGCF_torch","repo_kind":"listed","path":"DGCF_torch/helper.py","file_url":"https://github.com/Tingting2477/DGCF_torch/blob/HEAD/DGCF_torch/helper.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ddd78902563c0d71"}},{"code_sha256_prefix":"7f5563aa101d59f6","entry":"load_best","repo":"xiangwang1223/disentangled_graph_collaborative_filtering","repo_kind":"official","path":"DGCF_v1/DGCF.py","file_url":"https://github.com/xiangwang1223/disentangled_graph_collaborative_filtering/blob/HEAD/DGCF_v1/DGCF.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":"7f5563aa101d59f6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}