{"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/180405938","title":"Unbiased Learning to Rank with Unbiased Propensity Estimation","arxiv_id":"1804.05938","date":"2018-04-16","proceeding":null,"authors":["Qingyao Ai","Keping Bi","Cheng Luo","Jiafeng Guo","W. Bruce Croft"],"abstract":"Learning to rank with biased click data is a well-known challenge. A variety\nof methods has been explored to debias click data for learning to rank such as\nclick models, result interleaving and, more recently, the unbiased\nlearning-to-rank framework based on inverse propensity weighting. Despite their\ndifferences, most existing studies separate the estimation of click bias\n(namely the \\textit{propensity model}) from the learning of ranking algorithms.\nTo estimate click propensities, they either conduct online result\nrandomization, which can negatively affect the user experience, or offline\nparameter estimation, which has special requirements for click data and is\noptimized for objectives (e.g. click likelihood) that are not directly related\nto the ranking performance of the system. In this work, we address those\nproblems by unifying the learning of propensity models and ranking models. We\nfind that the problem of estimating a propensity model from click data is a\ndual problem of unbiased learning to rank. Based on this observation, we\npropose a Dual Learning Algorithm (DLA) that jointly learns an unbiased ranker\nand an \\textit{unbiased propensity model}. DLA is an automatic unbiased\nlearning-to-rank framework as it directly learns unbiased ranking models from\nbiased click data without any preprocessing. It can adapt to the change of bias\ndistributions and is applicable to online learning. Our empirical experiments\nwith synthetic and real-world data show that the models trained with DLA\nsignificantly outperformed the unbiased learning-to-rank algorithms based on\nresult randomization and the models trained with relevance signals extracted by\nclick models.","url_abs":"http://arxiv.org/abs/1804.05938v2","url_pdf":"http://arxiv.org/pdf/1804.05938v2.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":"180405938","repo_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"learning-to-rank","task_name":"Learning-To-Rank"},{"task_slug":"parameter-estimation","task_name":"parameter estimation"}],"methods":[{"method_slug":"dla","method_name":"DLA"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1804.05938","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1804.05938"}},"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/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","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":"0f2327e837b11209","entry":"generate_ranklist","repo":"QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","repo_kind":"official","path":"Unbiased_LTR/data_utils.py","file_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank/blob/HEAD/Unbiased_LTR/data_utils.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":"0f2327e837b11209"}},{"code_sha256_prefix":"7e9c5d0da1be565f","entry":"generate_ranklist_by_scores","repo":"QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","repo_kind":"official","path":"Unbiased_LTR/data_utils.py","file_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank/blob/HEAD/Unbiased_LTR/data_utils.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":"7e9c5d0da1be565f"}},{"code_sha256_prefix":"a46ac0897d9db30f","entry":"loadModelFromJson","repo":"QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","repo_kind":"official","path":"Unbiased_LTR/click_models.py","file_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank/blob/HEAD/Unbiased_LTR/click_models.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":"a46ac0897d9db30f"}},{"code_sha256_prefix":"47352c9331ad3a13","entry":"read_data","repo":"QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","repo_kind":"official","path":"Unbiased_LTR/data_utils.py","file_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank/blob/HEAD/Unbiased_LTR/data_utils.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":"47352c9331ad3a13"}},{"code_sha256_prefix":"ceaa8e1e64689b47","entry":"selu","repo":"QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","repo_kind":"official","path":"Unbiased_LTR/IPW_LTR/IPWrank_model.py","file_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank/blob/HEAD/Unbiased_LTR/IPW_LTR/IPWrank_model.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":"ceaa8e1e64689b47"}},{"code_sha256_prefix":"ab9d121998955910","entry":"sigmoid_prob","repo":"QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank","repo_kind":"official","path":"Unbiased_LTR/DLA/DLA_model.py","file_url":"https://github.com/QingyaoAi/Dual-Learning-Algorithm-for-Unbiased-Learning-to-Rank/blob/HEAD/Unbiased_LTR/DLA/DLA_model.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":"ab9d121998955910"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}