{"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/understanding-fairness-surrogate-functions-in","title":"Understanding Fairness Surrogate Functions in Algorithmic Fairness","arxiv_id":"2310.11211","date":"2023-10-17","proceeding":null,"authors":["Wei Yao","Zhanke Zhou","Zhicong Li","Bo Han","Yong liu"],"abstract":"It has been observed that machine learning algorithms exhibit biased predictions against certain population groups. To mitigate such bias while achieving comparable accuracy, a promising approach is to introduce surrogate functions of the concerned fairness definition and solve a constrained optimization problem. However, it is intriguing in previous work that such fairness surrogate functions may yield unfair results and high instability. In this work, in order to deeply understand them, taking a widely used fairness definition--demographic parity as an example, we show that there is a surrogate-fairness gap between the fairness definition and the fairness surrogate function. Also, the theoretical analysis and experimental results about the gap motivate us that the fairness and stability will be affected by the points far from the decision boundary, which is the large margin points issue investigated in this paper. To address it, we propose the general sigmoid surrogate to simultaneously reduce both the surrogate-fairness gap and the variance, and offer a rigorous fairness and stability upper bound. Interestingly, the theory also provides insights into two important issues that deal with the large margin points as well as obtaining a more balanced dataset are beneficial to fairness and stability. Furthermore, we elaborate a novel and general algorithm called Balanced Surrogate, which iteratively reduces the gap to mitigate unfairness. Finally, we provide empirical evidence showing that our methods consistently improve fairness and stability while maintaining accuracy comparable to the baselines in three real-world datasets.","url_abs":"https://arxiv.org/abs/2310.11211v4","url_pdf":"https://arxiv.org/pdf/2310.11211v4.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":"understanding-fairness-surrogate-functions-in","repo_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"fairness","task_name":"Fairness"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2310.11211","atlas_url":"https://app.syntology.ai/?focus=2310.11211","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.11211"}},"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/yw101004244/Understanding-Fairness-Surrogate-Functions","reach":{"status":"ok"}}],"summary":{"ran":5,"unverified":4},"by_repo_kind":{"official":{"samples":9,"ran":5,"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":9,"samples":[{"code_sha256_prefix":"16693e698ff0d4f9","entry":"get_distance_boundary","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/funcs_disp_mist.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/funcs_disp_mist.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":"16693e698ff0d4f9"}},{"code_sha256_prefix":"f5f0e7c2ed26e8b4","entry":"learnable_train_model","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/utils.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/utils.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":"f5f0e7c2ed26e8b4"}},{"code_sha256_prefix":"20b0f39192b34516","entry":"log_logistic","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/loss_funcs.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/loss_funcs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"20b0f39192b34516"}},{"code_sha256_prefix":"0c74f3b9083ff66c","entry":"print_classifier_fairness_stats","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/utils_balanced.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/utils_balanced.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":"0c74f3b9083ff66c"}},{"code_sha256_prefix":"5e06511f6f77154d","entry":"sigmoid","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/loss_funcs.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/loss_funcs.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5e06511f6f77154d"}},{"code_sha256_prefix":"74a2d29a5e7797e5","entry":"compute_cross_validation_error","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/utils_balanced.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/utils_balanced.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":"74a2d29a5e7797e5"}},{"code_sha256_prefix":"5f69ec3a906c97e0","entry":"learnable_test_sensitive_attr_constraint_cov","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/utils.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/utils.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":"5f69ec3a906c97e0"}},{"code_sha256_prefix":"514b995b881fb019","entry":"train_model","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/utils.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/utils.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":"514b995b881fb019"}},{"code_sha256_prefix":"6ccb6c0bad74b28e","entry":"train_model","repo":"yw101004244/Understanding-Fairness-Surrogate-Functions","repo_kind":"official","path":"lib/utils_balanced.py","file_url":"https://github.com/yw101004244/Understanding-Fairness-Surrogate-Functions/blob/HEAD/lib/utils_balanced.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":"6ccb6c0bad74b28e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}