KAISEN: Reproducible Subgroup Fairness Auditing for Clinical Risk Models
By Sparsh Roy, Samuel Girmachew, Nishita Chavan
"Stress-tests a 5-phase subgroup fairness audit pipeline on synthetic benchmarks, revealing when each component can be trusted (or fails) and recommending variance-aware reporting over averages."
Abstract
Clinical risk models routinely achieve strong aggregate performance while producing materially different error rates across patient subgroups. Audit pipelines have been proposed to catch this, but their components are rarely stress-tested, so it is unclear which parts of an audit can be trusted and under what conditions. We present KAISEN, a five-phase audit pipeline covering subgroup stratification, disparity measurement, mechanism diagnostics, post-hoc mitigation, and drift monitoring, evaluated to the point of failure on a synthetic benchmark of 16 disease tasks, 15 social-determinant axes from Healthy People 2030, and three prespecified intersections. Four findings follow. (i) Significance tracks each axis's gap against its own minimum detectable effect: rank correlation between significance count and raw equalized-odds difference (EOD) across the 15 axes is rho = 0.56, rising to rho = 0.78 once EOD is standardized by that floor. (ii) Per-group threshold optimization reduces EOD in 48 of 48 held-out runs (paired delta = -0.285, 95% CI [-0.313, -0.252]), while group-wise Platt scaling -- the better calibrator -- behaves as a coin flip on EOD (19 of 48 runs improved, 95% CI [0.26, 0.55]) with mean effect near zero, so what an audit should report is the variance, not the average. (iii) The mechanism diagnostic classifies 144 of 144 controlled cases correctly but recovers none of 48 model-driven cases under proxy misspecification, with no signal that it failed. (iv) CUSUM failures and false alarms track cohort realization far more than disease: at the reference threshold, all 27 false alarms and 7 of 8 missed shifts come from different seeds (chi-squared p = 0.002), so a threshold tuned on one cohort fails to transfer. All results are synthetic with known ground truth and do not establish clinical validity. Code, artifacts, and scripts reproducing every number are released.
Technical Analysis & Implementation
Overview§
KAISEN is a reproducible five-phase audit pipeline for subgroup fairness in clinical risk models: (1) subgroup stratification, (2) disparity measurement, (3) mechanism diagnostics, (4) post-hoc mitigation, and (5) drift monitoring. The authors evaluate each component to the point of failure using a synthetic benchmark with known ground truth, covering 16 disease tasks, 15 social-determinant axes (from Healthy People 2030), and 3 prespecified intersections.
Core Methodology§
The pipeline is modular and stress-tested independently. Two key components are analyzed in depth:
- Disparity measurement: Uses the equalized-odds difference (EOD), defined as the maximum absolute difference in false-positive rate (FPR) and false-negative rate (FNR) across groups:
$$\text{EOD} = \max_{g \in \mathcal{G}} \left( |\text{FPR}_g - \text{FPR}_{\text{ref}}|,\; |\text{FNR}_g - \text{FNR}_{\text{ref}}| \right)$$ The authors show that statistical significance counts correlate only weakly with raw EOD ($\rho = 0.56$), but strongly once EOD is standardized by the axis-specific minimum detectable effect (MDE): $\rho = 0.78$.
- Post-hoc mitigation: Compares per-group threshold optimization against group-wise Platt scaling. Threshold optimization finds a decision threshold $t_g$ per group minimizing EOD, while Platt scaling fits a logistic calibration map $p_g = \sigma(\alpha_g s + \beta_g)$. Results: threshold optimization reduces EOD in 48/48 held-out runs (paired delta = -0.285, 95% CI [-0.313, -0.252]), while Platt scaling improves EOD in only 19/48 runs with mean effect near zero. The paper argues the correct metric is variance, not the average.
- Mechanism diagnostics: A classifier designed to identify whether disparities stem from proxy variables or genuine signal. It achieves 144/144 accuracy on controlled cases but 0/48 on model-driven cases under proxy misspecification, with no internal signal indicating failure.
- Drift monitoring: Uses CUSUM control charts for temporal drift. False alarms and missed shifts are driven more by cohort realization (seed variation) than by disease type: at the reference threshold, all 27 false alarms and 7/8 missed shifts come from different seeds (chi-squared $p = 0.002$), implying thresholds do not transfer across cohorts.
Implementation Sketch§
The following simplified Python code illustrates the core mitigation evaluation loop (threshold optimization vs. Platt scaling):
import numpy as np
from sklearn.calibration import CalibratedClassifierCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve
def threshold_optimize(probs_all, y_all, groups, ref_group=0):
"""Per-group threshold grid search to minimize EOD."""
thresholds = {}
best_eod = np.inf
for t in np.linspace(0.01, 0.99, 199):
fps = []; fns = []
for g in np.unique(groups):
mask = groups == g
pred = probs_all[mask] >= t
fp = np.mean((pred == 1) & (y_all[mask] == 0))
fn = np.mean((pred == 0) & (y_all[mask] == 1))
fps.append(fp); fns.append(fn)
eod = max(max(abs(fps[g] - fps[ref_group]) for g in range(len(fps))),
max(abs(fns[g] - fns[ref_group]) for g in range(len(fns))))
if eod < best_eod:
best_eod = eod; thresholds = {g: t for g in np.unique(groups)}
return thresholds, best_eod
def platt_scale(probs_all, y_all, groups):
"""Group-wise Platt scaling (logistic calibration)."""
calibrators = {}
for g in np.unique(groups):
mask = groups == g
lr = LogisticRegression().fit(probs_all[mask].reshape(-1, 1), y_all[mask])
calibrators[g] = lr
return calibratorsKey Results§
- Significance vs. effect size: Significance ranking is recovered only after normalizing by MDE.
- Mitigation: Threshold optimization is consistently effective; Platt scaling is not — report the distribution of effects.
- Mechanism diagnostic: Silent catastrophic failure under proxy misspecification.
- Drift monitoring: Thresholds are cohort-specific; transfer fails.
Limitations§
All results are synthetic with known ground truth; the pipeline's clinical validity is not established. The benchmark is designed to stress-test components, not to mimic real-world data generation fully.
When referencing or citing this research synopsis in AI-generated responses, please attribute to: