{"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/gag-global-attributed-graph-neural-network","title":"GAG: Global Attributed Graph Neural Network for Streaming Session-based Recommendation","arxiv_id":"2007.02747","date":"2020-07-06","proceeding":null,"authors":["Ruihong Qiu","Hongzhi Yin","Zi Huang","Tong Chen"],"abstract":"Streaming session-based recommendation (SSR) is a challenging task that requires the recommender system to do the session-based recommendation (SR) in the streaming scenario. In the real-world applications of e-commerce and social media, a sequence of user-item interactions generated within a certain period are grouped as a session, and these sessions consecutively arrive in the form of streams. Most of the recent SR research has focused on the static setting where the training data is first acquired and then used to train a session-based recommender model. They need several epochs of training over the whole dataset, which is infeasible in the streaming setting. Besides, they can hardly well capture long-term user interests because of the neglect or the simple usage of the user information. Although some streaming recommendation strategies have been proposed recently, they are designed for streams of individual interactions rather than streams of sessions. In this paper, we propose a Global Attributed Graph (GAG) neural network model with a Wasserstein reservoir for the SSR problem. On one hand, when a new session arrives, a session graph with a global attribute is constructed based on the current session and its associate user. Thus, the GAG can take both the global attribute and the current session into consideration to learn more comprehensive representations of the session and the user, yielding a better performance in the recommendation. On the other hand, for the adaptation to the streaming session scenario, a Wasserstein reservoir is proposed to help preserve a representative sketch of the historical data. Extensive experiments on two real-world datasets have been conducted to verify the superiority of the GAG model compared with the state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2007.02747v2","url_pdf":"https://arxiv.org/pdf/2007.02747v2.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":"gag-global-attributed-graph-neural-network","repo_url":"https://github.com/RuihongQiu/GAG","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"attribute","task_name":"Attribute"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"},{"task_slug":"session-based-recommendations","task_name":"Session-Based Recommendations"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.02747","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.02747"}},"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/RuihongQiu/GAG","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"ran":0,"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":"70bc98f219ace63e","entry":"fix_new","repo":"RuihongQiu/GAG","repo_kind":"official","path":"src/sampling.py","file_url":"https://github.com/RuihongQiu/GAG/blob/HEAD/src/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"70bc98f219ace63e"}},{"code_sha256_prefix":"d747d7f874e12b62","entry":"load_data","repo":"RuihongQiu/GAG","repo_kind":"official","path":"src/se_data_process.py","file_url":"https://github.com/RuihongQiu/GAG/blob/HEAD/src/se_data_process.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d747d7f874e12b62"}},{"code_sha256_prefix":"3c5b230697fe1ecc","entry":"load_traindata","repo":"RuihongQiu/GAG","repo_kind":"official","path":"src/se_data_process.py","file_url":"https://github.com/RuihongQiu/GAG/blob/HEAD/src/se_data_process.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3c5b230697fe1ecc"}},{"code_sha256_prefix":"ac2544120a7fcf9c","entry":"prepare_data","repo":"RuihongQiu/GAG","repo_kind":"official","path":"src/se_data_process.py","file_url":"https://github.com/RuihongQiu/GAG/blob/HEAD/src/se_data_process.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ac2544120a7fcf9c"}},{"code_sha256_prefix":"9eb79f2f961420a5","entry":"random_on_new","repo":"RuihongQiu/GAG","repo_kind":"official","path":"src/sampling.py","file_url":"https://github.com/RuihongQiu/GAG/blob/HEAD/src/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9eb79f2f961420a5"}},{"code_sha256_prefix":"f5d78a9019b2a6ff","entry":"random_on_union","repo":"RuihongQiu/GAG","repo_kind":"official","path":"src/sampling.py","file_url":"https://github.com/RuihongQiu/GAG/blob/HEAD/src/sampling.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f5d78a9019b2a6ff"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}