本文へスキップ

ガイド

グループ間の公平性

モデルはすべてのグループで正解率の基準を満たしていても、そのうちの 1 つにだけ厳しいことがあります。偽陰性が 2 倍、あるいは選択が半分、といった具合です。oloproof fairness は判定済みのケースのファイルを読み、グループ同士がどれだけ離れているかを問います。他のすべてのルールと同じ 4 つの状態で答えます。パリティの手法は 2026 年 11 月 3 日に独立した監査で承認されました。条件はこのページが述べるとおりです。ケースは独立、グループは先に宣言、各ルールは属性が記録されたケースについてのもの、パリティはあなたのラベルに対して測られます。

ファイルと宣言

ケースごとに 1 行の CSV または JSONL ファイル 1 つ。ID、ラベル(0 または 1)、予測(0 または 1、システムが何も返さなかった場合は空)、任意で確率、そして保護属性ごとに 1 列です。

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

区間は、各ケースが別の人であることを前提にしています。unit: person_id で人を識別する列を指定すると、一人が複数のケースを持つファイルは拒否されます。指定しない場合、回答はこの前提を明記します。

率は error、false_positive(ラベル 0 のケースが分母)、false_negative(ラベル 1 のケースが分母)、selection(予測 1、すべてのケースが分母)のいずれかです。ファイルを読む前にグループを名指ししてください。各ルールは、自分の属性が宣言された値で記録されているケースだけを読みます。属性が欠けたケースはその属性を使うルールから除外され、ほかのルールには残ります。各回答は除外したものとその理由を数えます。ある人々で他より属性が欠けやすいとき、回答は属性が記録されたケースについてのもので、それは別の母集団です。判定の前に件数を読んでください。ファイルの max_left_out(既定は 10%。ルールに設定します)を超えて除外するルールは INSUFFICIENT_EVIDENCE となります。記録されたケースがもはや残りを代表しないかもしれないからです。終了コードは最悪のルールのものです。0 PASS、1 FAIL、3 INSUFFICIENT_EVIDENCE、4 MANUAL_REVIEW。

判定の仕組み

各グループの率には、Oloproof が 1 つの率に使う正確な区間が、誤り予算を宣言したグループの数で割った水準で与えられます。2 つのグループ間のすべての差はそこから同時に抑えられるので、どのペアにも個別の補正は要りません。max_group_gap のルールは、すべての差の上端が基準以下のときに合格し、ある差がその区間全体で基準を上回るときに不合格になります。欠けた予測はそのグループに残り、最悪の値として数えられます。

小さなグループと交差したグループ

2 つの属性を交差させるとセルが掛け算で増え、小さいセルも出てきます。予測のあるケースが min_cell より少ないセル(予測が欠けたケースはこれに数えません)は、それ自体の行で INSUFFICIENT_EVIDENCE と報告され、分割では引き続き数えられ、ルールの合格を妨げます。最大の差がそこにあるかもしれないからです。そのセルのケースをさらに集めるか、実行の前により粗い交差を宣言してください。

下限と差

すべてのグループが満たすべき下限(「どの地域も少なくとも 80% を解決する」)には worst_group を、グループ間の距離の上限(「偽陰性の差は最大 5 ポイント」)には max_group_gap を使います。偏りのない結果を求めるガバナンス要件は、選んだ率について、差によって部分的に裏づけられます。すべてのグループが十分に扱われることを求める要件は下限によって裏づけられます。どちらか一方だけでは、システムが公平であることは示せません。ほとんどのシステムには両方が必要です。

グループ別のキャリブレーション

確率の列があれば、各グループの期待キャリブレーション誤差が、すべての属性と宣言した交差について、確率を等幅に分けた calibration_bins 個のビン(既定は 10)で報告されます。これがゲートになることはありません。承認された手法でこれを抑えるものはなく、小さなグループではノイズが大きいからです。

これでわからないこと

  • どの率を揃えるのが公平か。それはあなたの判断であり、選んだ属性とともに記録しておく価値があります。
  • 宣言しなかったグループについて、あるいは二重に数えられた人(1 人が複数のケース)について。
  • キャリブレーションがグループ間で偶然を超えて異なるかどうか。
  • ラベル自体に偏りがあるかどうか。パリティはあなたが持ち込んだラベルに対して測られます。