Fairness and Bias
The Fairness module provides tools for detecting and mitigating bias in machine learning models. It computes fairness metrics across protected attributes (gender, race, age), identifies disparate impact, and recommends mitigation strategies. The implementation follows established fairness frameworks including demographic parity, equalized odds, and calibration.
Fairness Metrics
| Metric | Definition | Threshold |
|---|---|---|
| Demographic Parity | Equal positive prediction rate across groups | Ratio above 0.8 |
| Equalized Odds | Equal TPR and FPR across groups | Difference below 0.1 |
| Equal Opportunity | Equal TPR across groups | Difference below 0.1 |
| Calibration | Equal probability accuracy across groups | Difference below 0.05 |
| Disparate Impact | Ratio of positive outcomes between groups | Ratio above 0.8 |
| Predictive Parity | Equal precision across groups | Difference below 0.1 |
Run Fairness Assessment
POST /api/v1/governance/fairness{
"model_id": "model-xyz789",
"dataset": {
"source": "sql",
"query": "SELECT * FROM ml_features.loan_applications"
},
"target_column": "approved",
"protected_attributes": ["gender", "age_group", "ethnicity"],
"metrics": ["demographic_parity", "equalized_odds", "disparate_impact"],
"threshold": 0.8
}Response
{
"model_id": "model-xyz789",
"overall_fair": false,
"groups_analyzed": 3,
"results": [
{
"attribute": "gender",
"groups": ["male", "female"],
"metrics": {
"demographic_parity": {"ratio": 0.92, "pass": true},
"equalized_odds": {"tpr_diff": 0.05, "fpr_diff": 0.03, "pass": true},
"disparate_impact": {"ratio": 0.91, "pass": true}
},
"fair": true
},
{
"attribute": "age_group",
"groups": ["18-30", "31-50", "51+"],
"metrics": {
"demographic_parity": {"ratio": 0.72, "pass": false},
"equalized_odds": {"tpr_diff": 0.15, "fpr_diff": 0.08, "pass": false},
"disparate_impact": {"ratio": 0.74, "pass": false}
},
"fair": false,
"flagged_groups": ["51+"]
}
],
"recommendations": [
"Age group '51+' shows significant bias in approval rate",
"Consider reweighting training data or applying post-processing calibration"
]
}Bias Mitigation Strategies
| Strategy | Phase | Method |
|---|---|---|
| Reweighting | Pre-processing | Adjust sample weights to equalize group representation |
| Resampling | Pre-processing | Oversample underrepresented groups |
| Disparate Impact Remover | Pre-processing | Transform features to remove disparate impact |
| Adversarial Debiasing | In-processing | Add adversarial fairness constraint during training |
| Calibrated Equalized Odds | Post-processing | Adjust decision threshold per group |
| Reject Option Classification | Post-processing | Give favorable outcome to uncertain cases |
Apply Mitigation
POST /api/v1/governance/fairness/mitigate{
"model_id": "model-xyz789",
"strategy": "calibrated_equalized_odds",
"protected_attribute": "age_group",
"target_metric": "equalized_odds",
"target_threshold": 0.1
}Fairness Monitoring
In production, fairness metrics are tracked over time to detect drift in model fairness:
| Metric | Frequency | Alert Threshold |
|---|---|---|
| Demographic parity ratio | Hourly | Below 0.8 |
| Equalized odds difference | Hourly | Above 0.15 |
| Disparate impact ratio | Daily | Below 0.75 |
| Group-level accuracy | Daily | Divergence above 10% |
Configuration
| Environment Variable | Default | Description |
|---|---|---|
FAIRNESS_THRESHOLD | 0.8 | Default fairness ratio threshold |
FAIRNESS_PROTECTED_ATTRIBUTES | gender,age,ethnicity | Default protected attributes |
FAIRNESS_MONITORING_INTERVAL | 3600 | Monitoring interval in seconds |
FAIRNESS_ALERT_ENABLED | true | Enable fairness degradation alerts |