# Compas Fairness Eval

> Evaluates a fairness-aware ensemble learning framework on recidivism risk prediction. It probes the model's ability to balance predictive accuracy against multiple group fairness constraints across racial demographics in a counterfactual causal setting. Use when the user wants to benchmark on COMPAS, or asks about evaluating this task. Reports MSE.

- Skill: `qhjqhj00/compas-fairness-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/compas-fairness-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/compas-fairness-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/compas-fairness-eval

---


# compas-fairness-eval

> FADE: FAir Double Ensemble Learning for Observable and Counterfactual Outcomes — Mishler et al. (2021) (arXiv:2109.00173, 2021)

## What this evaluates

Evaluates a fairness-aware ensemble learning framework on recidivism risk prediction. It probes the model's ability to balance predictive accuracy against multiple group fairness constraints across racial demographics in a counterfactual causal setting.

## Datasets

- **COMPAS** — total ?; splits: D_learn (-1), D_train_nuis (-1), D_train_target (-1), D_test_nuis (-1), D_test_target (-1)

## Metrics

- `MSE` **(primary)** — range: [0, 1]
  - Mean squared error between predicted risk scores and actual rearrest outcomes.
- `rate-diff` — range: [0, 1]
  - Absolute difference in predicted positive rates between African-American and Caucasian defendants.
- `FPR-diff` — range: [0, 1]
  - Absolute difference in false positive rates (P(pred=1|y=0)) between racial groups.
- `FNR-diff` — range: [0, 1]
  - Absolute difference in false negative rates (P(pred=0|y=1)) between racial groups.

## Input / output format

**Input**: Three features: indicator for age > 45, indicator for age < 25, and number of prior arrests (0-29). Sensitive attribute: race (African-American or Caucasian).

**Output**: Continuous risk score normalized to the range [0.1, 1].

## Scoring recipe

```python
def compute_metrics(y_true, y_pred, sensitive):
    mse = np.mean((y_pred - y_true) ** 2)
    # Threshold t required for FPR/FNR; not specified in text
    y_pred_bin = (y_pred >= t).astype(int)
    y_true_bin = (y_true >= t).astype(int)
    groups = ['AA', 'C']
    rates = {g: np.mean(y_pred_bin[sensitive==g]) for g in groups}
    fprs = {g: np.mean(y_pred_bin[sensitive==g] & ~y_true_bin[sensitive==g]) for g in groups}
    fnrs = {g: np.mean(~y_pred_bin[sensitive==g] & y_true_bin[sensitive==g]) for g in groups}
    return {
        'MSE': mse,
        'rate-diff': abs(rates['AA'] - rates['C']),
        'FPR-diff': abs(fprs['AA'] - fprs['C']),
        'FNR-diff': abs(fnrs['AA'] - fnrs['C'])
    }
```

## Common pitfalls

- The paper does not specify the decision threshold used to compute FPR and FNR from continuous risk scores.
- The evaluation uses a non-standard 5-way data split for doubly robust estimation, which differs from standard train/test splits.
- Disparities are reported as absolute differences between two racial groups, but the exact binarization of the continuous COMPAS scores for rate/FPR/FNR is not explicitly defined.

## Evidence (verbatim from paper)

> We split the data into five datasets, each with approximately 1040 rows: D_learn, D_train_nuis, D_train_target, D_test_nuis, and D_test_target. As base predictors, we used the four model types from the previous section as well as a logistic regression. We used random forest classifiers for the nuisance predictors in both the training and test data. Table 7 gives the estimated performance of the five base predictors, COMPAS, and the OLS predictor, which spans COMPAS and the base predictors. ... We compute FADE predictors using the same sets of penalty vectors Λ as in the previous section. Figure 7 shows disparities and MSE values for all 1331 predictors.

## Citation

```bibtex
@misc{mishler2021fade,
  title={FADE: FAir Double Ensemble Learning for Observable and Counterfactual Outcomes},
  author={Mishler et al. (2021)},
  year={2021},
  note={arXiv:2109.00173}
}
```

- arXiv: 2109.00173

