{"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/kuaisim-a-comprehensive-simulator-for","title":"KuaiSim: A Comprehensive Simulator for Recommender Systems","arxiv_id":"2309.12645","date":"2023-09-22","proceeding":"NeurIPS 2023 11","authors":["Kesen Zhao","Shuchang Liu","Qingpeng Cai","Xiangyu Zhao","Ziru Liu","Dong Zheng","Peng Jiang","Kun Gai"],"abstract":"Reinforcement Learning (RL)-based recommender systems (RSs) have garnered considerable attention due to their ability to learn optimal recommendation policies and maximize long-term user rewards. However, deploying RL models directly in online environments and generating authentic data through A/B tests can pose challenges and require substantial resources. Simulators offer an alternative approach by providing training and evaluation environments for RS models, reducing reliance on real-world data. Existing simulators have shown promising results but also have limitations such as simplified user feedback, lacking consistency with real-world data, the challenge of simulator evaluation, and difficulties in migration and expansion across RSs. To address these challenges, we propose KuaiSim, a comprehensive user environment that provides user feedback with multi-behavior and cross-session responses. The resulting simulator can support three levels of recommendation problems: the request level list-wise recommendation task, the whole-session level sequential recommendation task, and the cross-session level retention optimization task. For each task, KuaiSim also provides evaluation protocols and baseline recommendation algorithms that further serve as benchmarks for future research. We also restructure existing competitive simulators on the KuaiRand Dataset and compare them against KuaiSim to future assess their performance and behavioral differences. Furthermore, to showcase KuaiSim's flexibility in accommodating different datasets, we demonstrate its versatility and robustness when deploying it on the ML-1m dataset.","url_abs":"https://arxiv.org/abs/2309.12645v2","url_pdf":"https://arxiv.org/pdf/2309.12645v2.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":"kuaisim-a-comprehensive-simulator-for","repo_url":"https://github.com/applied-machine-learning-lab/kuaisim","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"},{"task_slug":"sequential-recommendation","task_name":"Sequential Recommendation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2309.12645","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2309.12645"}},"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/applied-machine-learning-lab/kuaisim","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":9},"by_repo_kind":{"official":{"samples":9,"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":"45b46ab38b9745cc","entry":"dot_scorer","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/model/score_func.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/model/score_func.py","link_basis":"harvester_set","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":"45b46ab38b9745cc"}},{"code_sha256_prefix":"46cb49a73008632e","entry":"get_immediate_reward","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/model/reward.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/model/reward.py","link_basis":"harvester_set","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":"46cb49a73008632e"}},{"code_sha256_prefix":"024f29f8a954659e","entry":"get_immediate_reward_sum","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/model/reward.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/model/reward.py","link_basis":"harvester_set","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":"024f29f8a954659e"}},{"code_sha256_prefix":"1f1c6eb1c374e2ee","entry":"get_online_training_info","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/plot_utils.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/plot_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":"1f1c6eb1c374e2ee"}},{"code_sha256_prefix":"5cd2b310e2dbf3d0","entry":"get_retention_reward","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/model/reward.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/model/reward.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":"5cd2b310e2dbf3d0"}},{"code_sha256_prefix":"4cc3922a7108033d","entry":"linear_scorer","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/model/score_func.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/model/score_func.py","link_basis":"harvester_set","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":"4cc3922a7108033d"}},{"code_sha256_prefix":"3efa9e5a1e1802cd","entry":"smooth","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/plot_utils.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/plot_utils.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":"3efa9e5a1e1802cd"}},{"code_sha256_prefix":"a238753019219ccc","entry":"softmax","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/recsim/choice_model.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/recsim/choice_model.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":"a238753019219ccc"}},{"code_sha256_prefix":"8c19396be7b460b1","entry":"two_layer_mlp_scorer","repo":"applied-machine-learning-lab/kuaisim","repo_kind":"official","path":"code/model/score_func.py","file_url":"https://github.com/applied-machine-learning-lab/kuaisim/blob/HEAD/code/model/score_func.py","link_basis":"harvester_set","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":"8c19396be7b460b1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}