Aller au contenu

Guides

Équité entre groupes

Un modèle peut franchir sa barre de précision pour chaque groupe et rester plus sévère envers l'un d'eux : deux fois plus de faux négatifs, ou deux fois moins de sélections. oloproof fairness lit un fichier de cas décidés et demande à quel point les groupes s'écartent. Il répond avec les quatre mêmes états que toute autre règle. La méthode de parité a été admise par un audit indépendant le 3 novembre 2026, aux conditions que cette page énonce : cas indépendants, groupes déclarés d'abord, chaque règle portant sur les cas où ses attributs sont enregistrés, et parité mesurée par rapport à vos étiquettes.

Le fichier et la déclaration

Un fichier CSV ou JSONL avec une ligne par cas : un identifiant, l'étiquette (0 ou 1), la prédiction (0 ou 1, vide quand le système n'en a donné aucune), éventuellement une probabilité, et une colonne par attribut protégé.

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 --json

L'intervalle suppose que chaque cas est une personne différente. Nommez la colonne qui identifie la personne avec unit: person_id et un fichier où une personne a plusieurs cas est refusé ; sans elle, la réponse énonce l'hypothèse.

Le taux est l'un de error, false_positive (sur les cas étiquetés 0), false_negative (sur les cas étiquetés 1) ou selection (prédit 1, sur tous les cas). Nommez les groupes avant de lire le fichier. Chaque règle ne lit que les cas dont ses propres attributs sont enregistrés avec une valeur déclarée ; un cas auquel il manque un attribut est laissé de côté par les règles qui l'utilisent et conservé par les autres, et chaque réponse compte ce qu'elle a laissé de côté et pourquoi. Quand un attribut manque plus souvent pour certaines personnes que pour d'autres, la réponse porte sur les cas où il est enregistré, qui forment une autre population : lisez le décompte avant le verdict. Une règle qui laisse de côté plus de max_left_out du fichier (10 % par défaut ; réglez-le sur la règle) se lit INSUFFICIENT_EVIDENCE, car les cas enregistrés peuvent ne plus représenter les autres. Le code de sortie est celui de la pire règle : 0 PASS, 1 FAIL, 3 INSUFFICIENT_EVIDENCE, 4 MANUAL_REVIEW.

Comment il décide

Le taux de chaque groupe reçoit l'intervalle exact qu'Oloproof utilise pour un taux, au budget d'erreur divisé par le nombre de groupes déclarés. Chaque différence entre deux groupes est bornée à partir de ces intervalles, toutes à la fois, si bien qu'aucune paire n'a besoin de sa propre correction. Une règle max_group_gap passe quand l'extrémité haute de chaque écart est au niveau de la barre ou en dessous, et échoue quand un écart dépasse la barre avec tout son intervalle. Une prédiction manquante reste dans son groupe et est comptée à son pire.

Petits groupes et groupes croisés

Croiser deux attributs multiplie les cellules, et certaines seront petites. Une cellule comptant moins de cas avec une prédiction que min_cell (les cas dont la prédiction manque n'y comptent pas) est rapportée INSUFFICIENT_EVIDENCE sur sa propre ligne, compte toujours dans la répartition et empêche la règle de passer, car le plus grand écart pourrait s'y trouver. Recueillez davantage de cas pour cette cellule, ou déclarez un croisement plus grossier avant l'exécution.

Planchers et écarts

Utilisez worst_group pour un plancher que chaque groupe doit franchir (« chaque région résout au moins 80 % »), et max_group_gap pour un plafond sur la distance entre groupes (« les faux négatifs diffèrent d'au plus cinq points »). Une exigence de gouvernance de résultats non biaisés trouve une partie de sa preuve dans l'écart, pour le taux choisi ; une exigence que chaque groupe soit bien servi, dans le plancher. Aucun des deux seul ne montre qu'un système est équitable. La plupart des systèmes ont besoin des deux.

Calibration par groupe

Avec une colonne de probabilité, l'erreur de calibration attendue de chaque groupe est rapportée pour chaque attribut et chaque croisement déclaré, sur calibration_bins intervalles de probabilité de même largeur (10 par défaut). Elle ne bloque jamais : aucune méthode admise ne la borne, et dans un petit groupe elle est bruitée.

Ce que cela ne peut pas vous dire

  • Quel taux il est juste d'égaliser : c'est votre décision, et elle mérite d'être consignée avec les attributs que vous avez choisis.
  • Quoi que ce soit sur des groupes que vous n'avez pas déclarés, ou sur des personnes comptées deux fois (une personne, plusieurs cas).
  • Si la calibration diffère entre groupes au-delà du hasard.
  • Si les étiquettes elles-mêmes sont biaisées : la parité est mesurée par rapport aux étiquettes que vous apportez.