Przejdź do treści

Przewodniki

Sprawiedliwość między grupami

Model może spełnić swój próg dokładności dla każdej grupy, a mimo to być surowszy dla jednej z nich: dwa razy więcej fałszywie negatywnych wyników albo o połowę mniej selekcji. oloproof fairness czyta plik rozstrzygniętych przypadków i pyta, jak daleko od siebie są grupy. Odpowiada tymi samymi czterema stanami co każda inna reguła. Metoda parytetu została dopuszczona przez niezależny audyt 3 listopada 2026 roku, na warunkach podanych na tej stronie: przypadki niezależne, grupy zadeklarowane z góry, każda reguła dotyczy przypadków, w których zapisano jej atrybuty, a parytet jest mierzony względem twoich etykiet.

Plik i deklaracja

Jeden plik CSV lub JSONL z wierszem na przypadek: id, etykieta (0 lub 1), predykcja (0 lub 1, pusta, gdy system jej nie dał), opcjonalnie prawdopodobieństwo i po jednej kolumnie na każdy chroniony atrybut.

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

Przedział zakłada, że każdy przypadek to inna osoba. Wskaż kolumnę identyfikującą osobę przez unit: person_id, a plik, w którym jedna osoba ma kilka przypadków, zostanie odrzucony; bez niej odpowiedź podaje to założenie.

Odsetek to jeden z: error, false_positive (wśród przypadków z etykietą 0), false_negative (wśród przypadków z etykietą 1) lub selection (predykcja 1, wśród wszystkich przypadków). Nazwij grupy, zanim przeczytasz plik. Każda reguła czyta tylko przypadki, których własne atrybuty są zapisane z zadeklarowaną wartością; przypadek bez danego atrybutu jest pomijany w regułach, które go używają, i zachowywany w pozostałych, a każda odpowiedź liczy, co pominęła i dlaczego. Gdy atrybutu brakuje u jednych osób częściej niż u innych, odpowiedź dotyczy przypadków, w których jest zapisany, a to inna populacja: przeczytaj liczność przed werdyktem. Reguła, która pomija więcej niż max_left_out pliku (domyślnie 10%; ustaw to w regule), brzmi INSUFFICIENT_EVIDENCE, bo zapisane przypadki mogą już nie reprezentować pozostałych. Kod wyjścia to kod najgorszej reguły: 0 PASS, 1 FAIL, 3 INSUFFICIENT_EVIDENCE, 4 MANUAL_REVIEW.

Jak decyduje

Odsetek każdej grupy dostaje dokładny przedział, którego Oloproof używa dla pojedynczego odsetka, przy budżecie błędu podzielonym przez liczbę zadeklarowanych grup. Każda różnica między dwiema grupami jest z nich ograniczana, wszystkie naraz, więc żadna para nie potrzebuje własnej korekty. Reguła max_group_gap przechodzi, gdy górny koniec każdej różnicy jest na progu lub poniżej, i nie przechodzi, gdy któraś różnica leży nad progiem całym swoim przedziałem. Brakująca predykcja zostaje w swojej grupie i jest liczona w najgorszym wariancie.

Małe grupy i grupy skrzyżowane

Skrzyżowanie dwóch atrybutów mnoży komórki, a niektóre będą małe. Komórka z mniejszą liczbą przypadków z predykcją niż min_cell (przypadki bez predykcji się do niej nie liczą) jest raportowana jako INSUFFICIENT_EVIDENCE w osobnym wierszu, nadal liczy się w podziale i nie pozwala regule przejść, bo największa różnica mogłaby być właśnie tam. Zbierz więcej przypadków dla tej komórki albo zadeklaruj grubsze skrzyżowanie przed uruchomieniem.

Progi minimalne i różnice

Użyj worst_group dla progu minimalnego, który każda grupa musi spełnić ("każdy region rozwiązuje co najmniej 80%"), a max_group_gap dla górnego limitu odległości między grupami ("fałszywie negatywne różnią się najwyżej o pięć punktów"). Wymóg ładu (governance) dotyczący bezstronnych wyników jest częściowo poparty różnicą, dla wybranego odsetka; wymóg, by każda grupa była dobrze obsłużona, progiem minimalnym. Żadne z nich samo nie pokazuje, że system jest sprawiedliwy. Większość systemów potrzebuje obu.

Kalibracja według grup

Z kolumną prawdopodobieństwa oczekiwany błąd kalibracji każdej grupy jest raportowany dla każdego atrybutu i każdego zadeklarowanego skrzyżowania, w calibration_bins przedziałach prawdopodobieństwa o równej szerokości (domyślnie 10). Nigdy nie blokuje: żadna dopuszczona metoda go nie ogranicza, a w małej grupie jest zaszumiony.

Czego to nie powie

  • Który odsetek należy sprawiedliwie wyrównać: to twoja decyzja, warta zapisania razem z wybranymi atrybutami.
  • Niczego o grupach, których nie zadeklarowałeś, ani o osobach policzonych dwa razy (jedna osoba, kilka przypadków).
  • Czy kalibracja różni się między grupami bardziej, niż wynikałoby to z przypadku.
  • Czy same etykiety są stronnicze: parytet jest mierzony względem etykiet, które dostarczasz.