{"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/eliminating-bias-in-recommender-systems-via","title":"Asymmetric Tri-training for Debiasing Missing-Not-At-Random Explicit Feedback","arxiv_id":"1910.01444","date":"2019-09-08","proceeding":null,"authors":["Yuta Saito"],"abstract":"In most real-world recommender systems, the observed rating data are subject to selection bias, and the data are thus missing-not-at-random. Developing a method to facilitate the learning of a recommender with biased feedback is one of the most challenging problems, as it is widely known that naive approaches under selection bias often lead to suboptimal results. A well-established solution for the problem is using propensity scoring techniques. The propensity score is the probability of each data being observed, and unbiased performance estimation is possible by weighting each data by the inverse of its propensity. However, the performance of the propensity-based unbiased estimation approach is often affected by choice of the propensity estimation model or the high variance problem. To overcome these limitations, we propose a model-agnostic meta-learning method inspired by the asymmetric tri-training framework for unsupervised domain adaptation. The proposed method utilizes two predictors to generate data with reliable pseudo-ratings and another predictor to make the final predictions. In a theoretical analysis, a propensity-independent upper bound of the true performance metric is derived, and it is demonstrated that the proposed method can minimize this bound. We conduct comprehensive experiments using public real-world datasets. The results suggest that the previous propensity-based methods are largely affected by the choice of propensity models and the variance problem caused by the inverse propensity weighting. Moreover, we show that the proposed meta-learning method is robust to these issues and can facilitate in developing effective recommendations from biased explicit feedback.","url_abs":"https://arxiv.org/abs/1910.01444v6","url_pdf":"https://arxiv.org/pdf/1910.01444v6.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":"eliminating-bias-in-recommender-systems-via","repo_url":"https://github.com/usaito/asymmetric-tri-rec-real","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"},{"task_slug":"selection-bias","task_name":"Selection bias"},{"task_slug":"unsupervised-domain-adaptation","task_name":"Unsupervised Domain Adaptation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1910.01444","atlas_url":"https://app.syntology.ai/?focus=1910.01444","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1910.01444"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/usaito/asymmetric-tri-rec-real","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":5},"by_repo_kind":{"official":{"samples":5,"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":"752b92428a63ba4e","entry":"aoa_evaluator","repo":"usaito/asymmetric-tri-rec-real","repo_kind":"official","path":"src/evaluate/evaluator.py","file_url":"https://github.com/usaito/asymmetric-tri-rec-real/blob/HEAD/src/evaluate/evaluator.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":"752b92428a63ba4e"}},{"code_sha256_prefix":"a70d4f4073d38183","entry":"calc_kl_div","repo":"usaito/asymmetric-tri-rec-real","repo_kind":"official","path":"src/utils/result_tools.py","file_url":"https://github.com/usaito/asymmetric-tri-rec-real/blob/HEAD/src/utils/result_tools.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":"a70d4f4073d38183"}},{"code_sha256_prefix":"26ef27759ffdf8c7","entry":"calc_ndcg_at_k","repo":"usaito/asymmetric-tri-rec-real","repo_kind":"official","path":"src/evaluate/evaluator.py","file_url":"https://github.com/usaito/asymmetric-tri-rec-real/blob/HEAD/src/evaluate/evaluator.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":"26ef27759ffdf8c7"}},{"code_sha256_prefix":"6ace4f8d58ec52ed","entry":"estimate_pscore","repo":"usaito/asymmetric-tri-rec-real","repo_kind":"official","path":"src/trainer.py","file_url":"https://github.com/usaito/asymmetric-tri-rec-real/blob/HEAD/src/trainer.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":"6ace4f8d58ec52ed"}},{"code_sha256_prefix":"2b23c95c0a0bf0ae","entry":"preprocess_datasets","repo":"usaito/asymmetric-tri-rec-real","repo_kind":"official","path":"src/utils/preprocessor.py","file_url":"https://github.com/usaito/asymmetric-tri-rec-real/blob/HEAD/src/utils/preprocessor.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":"2b23c95c0a0bf0ae"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}