Skip to content
This repository has been archived by the owner on May 31, 2023. It is now read-only.

Implement "Reweighting" fairness-aware preprocessing #11

Open
cosmicBboy opened this issue Aug 30, 2017 · 0 comments
Open

Implement "Reweighting" fairness-aware preprocessing #11

cosmicBboy opened this issue Aug 30, 2017 · 0 comments

Comments

@cosmicBboy
Copy link
Owner

cosmicBboy commented Aug 30, 2017

Reweighting takes a dataset D and assigns a weight to each observation using conditional probabilities based on target labels and protected class membership.

s1 - disadvantaged group
s2 - advantaged group
+ - positive label
- - negative label

  • large weights are assigned to X_s1_y+ and X_s0_y–:
    • weights for s1 | +: (p(s1) * p(+)) / p(s1 and +)
    • weights for s1 | -: (p(s1) * p(-)) / p(s1 and -)
  • small weights are assigned to Xs1_y– and X_s0_y+
    • weights for s0 | +: (p(s0) * p(+)) / p(s0 and +)
    • weights for s0 | -: (p(s0) * p(-)) / p(s0 and -)
  • the weights are then used as input to model types that support weighted observations

NOTE: The above weighting scheme works because e.g. the numerator p(s1) * p(+) denotes the
expected probability of an observation being disadvantaged and positively labelled if the two variables are independent, and the denominator p(s1 and +) denotes the actual probability. Therefore, in a discriminatory dataset the term (p(s1) * p(+)) / p(s1 and +) will evaluate to > 1 since the actual probability of being s1 and + is less than the expected probability under the independence assumption.

Conversly, (p(s1) * p(-)) / p(s1 and -) will evaluate to < 1 since the actual probability of being s1 and - is greater than the expected probability under the independence assumption.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant