Add explainers/mitigation-strategies.md.
This repo's own benchmark harness is built entirely around this taxonomy - baseline -> unawareness (pre-processing: drop the protected attribute) -> unawareness_proxy_removal (pre-processing: drop proxies too) -> in_processing (fairlearn.reductions.ExponentiatedGradient, a constraint baked into training) -> post_processing (fairlearn.postprocessing.ThresholdOptimizer, per-group thresholds applied after training) - yet no explainer teaches what these three families of mitigation actually are or why the taxonomy matters, even though it's the methodology behind every 'before/after' number in the repo. On COMPAS the five strategies take the demographic parity gap from 86% to 18% to 12% to 1.4% to 2.4% (frozen results, already quoted on the homepage) - a real, ready-made anchor showing the strategies aren't interchangeable and don't monotonically improve.
Suggested structure (match class-imbalance.md): one-sentence definition -> why it matters for fairness (which stage of the pipeline you intervene at changes what you can and can't fix) -> core concept (pre- vs in- vs post-processing, with this repo's own S0-S4 ladder as the concrete taxonomy) -> concrete example using the real frozen COMPAS progression in paper/results-frozen/results_fairness.csv -> runnable detection/comparison code -> limitations (in-processing needs retraining access; post-processing needs group membership at inference time, which isn't always legal/available) -> related concepts/projects/further reading.
Related: demographic-parity, equalized-odds, protected-attribute.
See CONTRIBUTING.md: add explainers/<slug>.md plus a one-line entry in assets/explainers-data.json; the build script generates the page.
Freeze-safe: explainers are fully open for contribution during the paper freeze. If you quote any Fair Code benchmark result, use the frozen numbers in paper/results-frozen/ (never re-run your own) - see CLAUDE.md.
Add
explainers/mitigation-strategies.md.This repo's own benchmark harness is built entirely around this taxonomy - baseline -> unawareness (pre-processing: drop the protected attribute) -> unawareness_proxy_removal (pre-processing: drop proxies too) -> in_processing (
fairlearn.reductions.ExponentiatedGradient, a constraint baked into training) -> post_processing (fairlearn.postprocessing.ThresholdOptimizer, per-group thresholds applied after training) - yet no explainer teaches what these three families of mitigation actually are or why the taxonomy matters, even though it's the methodology behind every 'before/after' number in the repo. On COMPAS the five strategies take the demographic parity gap from 86% to 18% to 12% to 1.4% to 2.4% (frozen results, already quoted on the homepage) - a real, ready-made anchor showing the strategies aren't interchangeable and don't monotonically improve.Suggested structure (match class-imbalance.md): one-sentence definition -> why it matters for fairness (which stage of the pipeline you intervene at changes what you can and can't fix) -> core concept (pre- vs in- vs post-processing, with this repo's own S0-S4 ladder as the concrete taxonomy) -> concrete example using the real frozen COMPAS progression in
paper/results-frozen/results_fairness.csv-> runnable detection/comparison code -> limitations (in-processing needs retraining access; post-processing needs group membership at inference time, which isn't always legal/available) -> related concepts/projects/further reading.Related: demographic-parity, equalized-odds, protected-attribute.
See CONTRIBUTING.md: add
explainers/<slug>.mdplus a one-line entry inassets/explainers-data.json; the build script generates the page.