Handleidingen
Eerlijkheid tussen groepen
Een model kan voor elke groep zijn nauwkeurigheidsdrempel halen en toch strenger zijn voor een van hen: twee keer zoveel fout-negatieven, of half zoveel selecties. oloproof fairness leest een bestand met beslist cases en vraagt hoe ver de groepen uit elkaar liggen. Het antwoordt met dezelfde vier toestanden als elke andere regel. De pariteitsmethode is op 3 november 2026 toegelaten door een onafhankelijke audit, op de voorwaarden die deze pagina noemt: cases onafhankelijk, groepen vooraf gedeclareerd, elke regel over de cases waarin zijn kenmerken zijn vastgelegd, en pariteit gemeten tegen je labels.
Het bestand en de declaratie
Eén CSV- of JSONL-bestand met een rij per case: een id, het label (0 of 1), de voorspelling (0 of 1, leeg wanneer het systeem er geen gaf), optioneel een waarschijnlijkheid, en één kolom per beschermd kenmerk.
fairness:
name: loan-screen
cases: decided.csv
label: label
prediction: prediction
probability: score
attributes:
sex: [female, male]
age_band: [under_30, 30_to_60, over_60]
intersections:
- [sex, age_band]
min_cell: 30
rules:
- {id: fnr-by-sex, rate: false_negative, attribute: sex, max_group_gap: 0.05}
- {id: fnr-crossed, rate: false_negative, attribute: [sex, age_band], max_group_gap: 0.10}oloproof fairness fairness.yaml --policy release.yaml --jsonHet interval veronderstelt dat elk geval een andere persoon is. Noem de kolom die de persoon aanduidt met unit: person_id en een bestand waarin één persoon meerdere gevallen heeft, wordt geweigerd; zonder die kolom noemt het antwoord de aanname.
Het percentage is een van error, false_positive (over cases met label 0), false_negative (over cases met label 1) of selection (voorspeld 1, over elke case). Benoem de groepen voordat je het bestand leest. Elke regel leest alleen de cases waarvan de eigen kenmerken met een gedeclareerde waarde zijn vastgelegd; een case zonder een kenmerk wordt weggelaten uit de regels die het gebruiken en behouden door de andere, en elk antwoord telt wat het wegliet en waarom. Ontbreekt een kenmerk bij sommige mensen vaker dan bij anderen, dan gaat het antwoord over de cases waarin het is vastgelegd, en dat is een andere populatie: lees de telling vóór het oordeel. Een regel die meer dan max_left_out van het bestand weglaat (standaard 10%; stel het in op de regel) leest INSUFFICIENT_EVIDENCE, omdat de vastgelegde cases dan mogelijk niet meer voor de rest staan. De exitcode is die van de slechtste regel: 0 PASS, 1 FAIL, 3 INSUFFICIENT_EVIDENCE, 4 MANUAL_REVIEW.
Hoe het beslist
Het percentage van elke groep krijgt het exacte interval dat Oloproof voor één percentage gebruikt, bij het foutbudget gedeeld door het aantal gedeclareerde groepen. Elk verschil tussen twee groepen wordt daaruit begrensd, allemaal tegelijk, zodat geen enkel paar een eigen correctie nodig heeft. Een max_group_gap-regel slaagt wanneer de bovengrens van elk verschil op of onder de drempel ligt, en faalt wanneer een verschil met zijn hele interval boven de drempel ligt. Een ontbrekende voorspelling blijft in haar groep en wordt op haar slechtst geteld.
Kleine groepen en gekruiste groepen
Het kruisen van twee kenmerken vermenigvuldigt de cellen, en sommige zullen klein zijn. Een cel met minder cases met een voorspelling dan min_cell (cases zonder voorspelling tellen daarvoor niet mee) wordt op een eigen regel als INSUFFICIENT_EVIDENCE gerapporteerd, telt nog mee in de verdeling, en houdt de regel tegen om te slagen, omdat het grootste verschil daar zou kunnen zitten. Verzamel meer cases voor die cel, of declareer vóór de run een grovere kruising.
Ondergrenzen en verschillen
Gebruik worst_group voor een ondergrens die elke groep moet halen ("elke regio lost minstens 80% op"), en max_group_gap voor een plafond op de afstand tussen groepen ("fout-negatieven verschillen hoogstens vijf procentpunten"). Een governance-eis van onbevooroordeelde uitkomsten wordt deels onderbouwd door het verschil, voor het percentage dat je koos; een eis dat elke groep goed bediend wordt, door de ondergrens. Geen van beide toont alleen aan dat een systeem eerlijk is. De meeste systemen hebben beide nodig.
Kalibratie per groep
Met een kolom met waarschijnlijkheden wordt de verwachte kalibratiefout van elke groep gerapporteerd voor elk kenmerk en elke gedeclareerde kruising, over calibration_bins even brede intervallen van de waarschijnlijkheid (standaard 10). Ze beslist nooit: geen toegelaten methode begrenst haar, en in een kleine groep is ze ruisig.
Wat dit je niet kan vertellen
- Welk percentage het eerlijke is om gelijk te trekken: dat is jouw beslissing, en het is de moeite waard die vast te leggen samen met de kenmerken die je koos.
- Iets over groepen die je niet hebt gedeclareerd, of over mensen die twee keer worden geteld (één persoon, meerdere cases).
- Of de kalibratie tussen groepen meer verschilt dan toeval.
- Of de labels zelf bevooroordeeld zijn: pariteit wordt gemeten tegen de labels die je aanlevert.