{"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/multi-behavior-generative-recommendation","title":"Multi-Behavior Generative Recommendation","arxiv_id":"2405.16871","date":"2024-05-27","proceeding":null,"authors":["Zihan Liu","Yupeng Hou","Julian McAuley"],"abstract":"Multi-behavior sequential recommendation (MBSR) aims to incorporate behavior types of interactions for better recommendations. Existing approaches focus on the next-item prediction objective, neglecting the value of integrating the target behavior type into the learning objective. In this paper, we propose MBGen, a novel Multi-Behavior sequential Generative recommendation framework. We formulate the MBSR task into a consecutive two-step process: (1) given item sequences, MBGen first predicts the next behavior type to frame the user intention, (2) given item sequences and a target behavior type, MBGen then predicts the next items. To model such a two-step process, we tokenize both behaviors and items into tokens and construct one single token sequence with both behaviors and items placed interleaved. Furthermore, MBGen learns to autoregressively generate the next behavior and item tokens in a unified generative recommendation paradigm, naturally enabling a multi-task capability. Additionally, we exploit the heterogeneous nature of token sequences in the generative recommendation and propose a position-routed sparse architecture to efficiently and effectively scale up models. Extensive experiments on public datasets demonstrate that MBGen significantly outperforms existing MBSR models across multiple tasks.","url_abs":"https://arxiv.org/abs/2405.16871v2","url_pdf":"https://arxiv.org/pdf/2405.16871v2.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":"multi-behavior-generative-recommendation","repo_url":"https://github.com/anananan116/MBGen","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"sequential-recommendation","task_name":"Sequential Recommendation"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.16871","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.16871"}},"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/anananan116/MBGen","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":5,"ran_honours":1,"unverified":3},"by_repo_kind":{"official":{"samples":9,"ran":6,"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":"fce786d808bb6948","entry":"count_lines","repo":"anananan116/MBGen","repo_kind":"official","path":"tokenizer/utils.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/tokenizer/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fce786d808bb6948"}},{"code_sha256_prefix":"fc570f3118b2bfb2","entry":"custom_chunk","repo":"anananan116/MBGen","repo_kind":"official","path":"tokenizer/tokenizer.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/tokenizer/tokenizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fc570f3118b2bfb2"}},{"code_sha256_prefix":"7855038adf3f8d9e","entry":"generate_random_map","repo":"anananan116/MBGen","repo_kind":"official","path":"tokenizer/utils.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/tokenizer/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7855038adf3f8d9e"}},{"code_sha256_prefix":"9910e2fc297f8665","entry":"identity","repo":"anananan116/MBGen","repo_kind":"official","path":"tokenizer/tokenizer.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/tokenizer/tokenizer.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9910e2fc297f8665"}},{"code_sha256_prefix":"85f71e5d0d97961f","entry":"process_chunk","repo":"anananan116/MBGen","repo_kind":"official","path":"tokenizer/tokenizer.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/tokenizer/tokenizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"85f71e5d0d97961f"}},{"code_sha256_prefix":"f47f0418dfe97a83","entry":"read_tsv_data","repo":"anananan116/MBGen","repo_kind":"official","path":"tokenizer/utils.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/tokenizer/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f47f0418dfe97a83"}},{"code_sha256_prefix":"bdbd3b67520ae048","entry":"calculate_metrics","repo":"anananan116/MBGen","repo_kind":"official","path":"trainer/evaluation.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/trainer/evaluation.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":"bdbd3b67520ae048"}},{"code_sha256_prefix":"5ebb9e3fd5b4a503","entry":"dcg","repo":"anananan116/MBGen","repo_kind":"official","path":"trainer/evaluation.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/trainer/evaluation.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":"5ebb9e3fd5b4a503"}},{"code_sha256_prefix":"03b5c20db7051800","entry":"ndcg_at_k","repo":"anananan116/MBGen","repo_kind":"official","path":"trainer/evaluation.py","file_url":"https://github.com/anananan116/MBGen/blob/HEAD/trainer/evaluation.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":"03b5c20db7051800"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}