{"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/loss-balancing-for-fair-supervised-learning","title":"Loss Balancing for Fair Supervised Learning","arxiv_id":"2311.03714","date":"2023-11-07","proceeding":null,"authors":["Mohammad Mahdi Khalili","Xueru Zhang","Mahed Abroshan"],"abstract":"Supervised learning models have been used in various domains such as lending, college admission, face recognition, natural language processing, etc. However, they may inherit pre-existing biases from training data and exhibit discrimination against protected social groups. Various fairness notions have been proposed to address unfairness issues. In this work, we focus on Equalized Loss (EL), a fairness notion that requires the expected loss to be (approximately) equalized across different groups. Imposing EL on the learning process leads to a non-convex optimization problem even if the loss function is convex, and the existing fair learning algorithms cannot properly be adopted to find the fair predictor under the EL constraint. This paper introduces an algorithm that can leverage off-the-shelf convex programming tools (e.g., CVXPY) to efficiently find the global optimum of this non-convex optimization. In particular, we propose the ELminimizer algorithm, which finds the optimal fair predictor under EL by reducing the non-convex optimization to a sequence of convex optimization problems. We theoretically prove that our algorithm finds the global optimal solution under certain conditions. Then, we support our theoretical results through several empirical studies.","url_abs":"https://arxiv.org/abs/2311.03714v1","url_pdf":"https://arxiv.org/pdf/2311.03714v1.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":"loss-balancing-for-fair-supervised-learning","repo_url":"https://github.com/khalilimahdi/loss_balancing_icml2023","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"face-recognition","task_name":"Face Recognition"},{"task_slug":"fairness","task_name":"Fairness"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2311.03714","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.03714"}},"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":"deterministic:regex_extraction","url":"https://github.com/KhaliliMahdi/Loss_Balancing_ICML2023","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/khalilimahdi/loss_balancing_icml2023","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":3,"ran":4,"unverified":3},"by_repo_kind":{"official":{"samples":10,"ran":7,"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":10,"samples":[{"code_sha256_prefix":"e0589375775181de","entry":"ELminimizer_PT","repo":"khalilimahdi/loss_balancing_icml2023","repo_kind":"official","path":"Algorithms/Algorithm2WithPytorch.py","file_url":"https://github.com/khalilimahdi/loss_balancing_icml2023/blob/HEAD/Algorithms/Algorithm2WithPytorch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e0589375775181de"}},{"code_sha256_prefix":"07b6f6c5a73177da","entry":"calculate_loss","repo":"KhaliliMahdi/Loss_Balancing_ICML2023","repo_kind":"official","path":"Algorithms/Algorithms.py","file_url":"https://github.com/KhaliliMahdi/Loss_Balancing_ICML2023/blob/HEAD/Algorithms/Algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"07b6f6c5a73177da"}},{"code_sha256_prefix":"7ac7f06b3455f88e","entry":"penalty_method","repo":"khalilimahdi/loss_balancing_icml2023","repo_kind":"official","path":"Algorithms/Algorithm2WithPytorch.py","file_url":"https://github.com/khalilimahdi/loss_balancing_icml2023/blob/HEAD/Algorithms/Algorithm2WithPytorch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7ac7f06b3455f88e"}},{"code_sha256_prefix":"1baae7aaa8ecfad6","entry":"penalty_method","repo":"KhaliliMahdi/Loss_Balancing_ICML2023","repo_kind":"official","path":"Algorithms/Baseline.py","file_url":"https://github.com/KhaliliMahdi/Loss_Balancing_ICML2023/blob/HEAD/Algorithms/Baseline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1baae7aaa8ecfad6"}},{"code_sha256_prefix":"0ccfcda88415de0d","entry":"penalty_method2","repo":"KhaliliMahdi/Loss_Balancing_ICML2023","repo_kind":"official","path":"Algorithms/Non_linear.py","file_url":"https://github.com/KhaliliMahdi/Loss_Balancing_ICML2023/blob/HEAD/Algorithms/Non_linear.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0ccfcda88415de0d"}},{"code_sha256_prefix":"438754b981389797","entry":"train","repo":"khalilimahdi/loss_balancing_icml2023","repo_kind":"official","path":"Algorithms/Algorithm2WithPytorch.py","file_url":"https://github.com/khalilimahdi/loss_balancing_icml2023/blob/HEAD/Algorithms/Algorithm2WithPytorch.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"438754b981389797"}},{"code_sha256_prefix":"9f1eb0ac97d570e7","entry":"train","repo":"KhaliliMahdi/Loss_Balancing_ICML2023","repo_kind":"official","path":"Algorithms/Non_linear.py","file_url":"https://github.com/KhaliliMahdi/Loss_Balancing_ICML2023/blob/HEAD/Algorithms/Non_linear.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9f1eb0ac97d570e7"}},{"code_sha256_prefix":"08db79de7d96c23f","entry":"ELminimizer","repo":"khalilimahdi/loss_balancing_icml2023","repo_kind":"official","path":"Algorithms/Algorithms.py","file_url":"https://github.com/khalilimahdi/loss_balancing_icml2023/blob/HEAD/Algorithms/Algorithms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"08db79de7d96c23f"}},{"code_sha256_prefix":"d424e324b80057b1","entry":"fair_batch","repo":"KhaliliMahdi/Loss_Balancing_ICML2023","repo_kind":"official","path":"Algorithms/Baseline.py","file_url":"https://github.com/KhaliliMahdi/Loss_Balancing_ICML2023/blob/HEAD/Algorithms/Baseline.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d424e324b80057b1"}},{"code_sha256_prefix":"11b85d1e90bf811b","entry":"solve_constrained_opt","repo":"khalilimahdi/loss_balancing_icml2023","repo_kind":"official","path":"Algorithms/Algorithms.py","file_url":"https://github.com/khalilimahdi/loss_balancing_icml2023/blob/HEAD/Algorithms/Algorithms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"11b85d1e90bf811b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}