← 機械学習テキスト 一覧

🎓 レベル:標準 | 重要度:B(標準)

📎 前提:モデル解釈性 | 関連:評価指標(分類)とROC・AUC

要点(BLUF)


公平性が問題になる場面

公平性が深刻に効くのは、予測の結果が人生に直結する高ステークスな意思決定です。

領域モデルの用途不公平が起きると
採用履歴書スクリーニング特定の性別・大学の応募者を機械的に落とす
与信ローン審査・限度額特定地域・属性の人に融資が下りにくい
司法再犯リスク評価特定の人種に保釈・量刑で不利に働く
医療治療優先度・診断支援特定の集団で診断精度が落ちる

これらに共通するのは、過去のデータに社会的な偏りが含まれていることと、その偏りをモデルが学習して再生産・増幅しうることです。

「バイアス」という言葉の二義性に注意

機械学習で「バイアス」と言うとき、まったく別の2つの概念があります。混同しないでください。

両者は独立です。「バイアスが小さい(=高精度)」モデルが「公平」とは限りません。


バイアスの源泉

不公平はモデルそのものより、入ってくるデータと問題設定から生まれます。主な源泉は3つです。

flowchart TD
    A["過去の社会(差別・格差を含む)"] --> B["訓練データ"]
    B --> C1["データの偏り(歴史的バイアス・標本選択バイアス)"]
    B --> C2["ラベルの偏り(過去の判断がラベルになる)"]
    B --> C3["特徴量が保護属性の代理(proxy)になる"]
    C1 --> D["学習"]
    C2 --> D
    C3 --> D
    D --> E["不公平な予測"]
    E -. "予測が次の判断を生む" .-> A

(1) データの偏り(歴史的・標本選択) 過去のデータが社会の偏りをそのまま映している場合(歴史的バイアス)や、特定の集団のデータが少ない・偏った経路で集まる場合(標本選択バイアス)。例:ある集団のサンプルが極端に少ないと、その集団での予測が不安定になります。

(2) ラベルの偏り 教師あり学習の正解ラベル Y 自体が、過去の偏った人間の判断であることがあります。例:「採用された=優秀」というラベルで学習すると、過去の採用が偏っていた場合、その偏りを正解として学んでしまいます。

(3) 特徴量が保護属性の代理(proxy)になる 保護属性(人種・性別)を入力から削除しても公平にはならないのが厄介な点です。郵便番号・出身校・購買履歴などの一見中立な特徴が、保護属性と強く相関し、その代理(proxy)として働くからです。モデルは保護属性を直接使えなくても、proxy を経由して同じ差別を再現できてしまいます。これを間接差別と呼びます。

⚠️ 「保護属性をモデルに渡さなければ公平」という素朴な対策(fairness through unawareness)は、proxy があるためほぼ機能しません


公平性の定義(何を等しくするか)

公平性は一つに定まりません。群間で何を等しくしたいかで定義が分かれます。保護属性を A、真のラベルを Y ∈ {0,1}、モデルの予測を Ŷ = h(X) とします。

graph TD
    Q["公平性: 何を群Aの間で等しくする?"]
    Q --> DP["demographic parity<br/>陽性率 P(Ŷ=1) を等しく"]
    Q --> EO["equalized odds<br/>真陽性率・偽陽性率を等しく"]
    Q --> CAL["予測値パリティ(calibration)<br/>陽性予測の的中率 PPV を等しく"]
    DP --> DPN["「機会の量」を揃える"]
    EO --> EON["「誤りの質」を揃える(機会均等)"]
    CAL --> CALN["「スコアの意味」を揃える"]

(1) demographic parity(集団公平性 / 統計的パリティ)

属性によらず陽性と予測される割合を等しくする。

P(Y^=1A=a)=P(Y^=1)aP(\hat Y = 1 \mid A = a) = P(\hat Y = 1) \quad \forall a

要するに、予測 Ŷ が保護属性 A から統計的に独立であることを求めます。「どの群でも同じ割合で採用される/融資される」という、結果の量の平等です。真のラベル Y を一切見ない点が特徴で、群ごとに本当に陽性率が違う場合でも一律に揃えるため、精度を犠牲にしやすいです。

(2) equalized odds(均等オッズ / 機会均等)

真のラベルで条件づけたうえで、真陽性率(TPR)と偽陽性率(FPR)を群間で等しくする。

P(Y^=1A=a,Y=y)=P(Y^=1Y=y)a, y{0,1}P(\hat Y = 1 \mid A = a, Y = y) = P(\hat Y = 1 \mid Y = y) \quad \forall a, \ \forall y \in \{0,1\}

要するに、予測 ŶY を与えた条件下で A から独立であること。「本当に陽性の人を正しく拾う率」と「本当は陰性なのに誤って陽性にする率」を群間で揃えるので、誤りの質の平等です。Y=1 の側だけを揃える緩い版を equal opportunity(機会均等) と呼びます(TPR のみ等しく)。TPR/FPR は 評価指標(分類)とROC・AUC の混同行列から出る量です。

(3) 予測値パリティ(predictive parity / calibration)

陽性と予測した人のうち実際に陽性だった割合(PPV)を群間で等しくする。

P(Y=1Y^=1,A=a)=P(Y=1Y^=1)aP(Y = 1 \mid \hat Y = 1, A = a) = P(Y = 1 \mid \hat Y = 1) \quad \forall a

要するに、スコアの意味が群によらず同じであること。「リスクスコア0.8」がどの群でも同じ確率で陽性を意味するなら、スコアは公平に解釈できる、という立場です。較正(calibration)が群ごとに成り立つこと、と言い換えられます。


不可能性定理:3つは一般に両立しない

ここが本質です。上の3つの基準は、群ごとの基準率(base rate)が異なるとき、同時には満たせません。 これは Kleinberg ら・Chouldechova が独立に示した数学的事実であり、より良いアルゴリズムを作れば解決する、という類の問題ではありません。

なぜ両立しないか(Chouldechova の恒等式)

群ごとの基準率(実際の陽性割合)を p = P(Y=1) とすると、混同行列の各率の間に次の恒等式が常に成り立ちます。

PPV1PPV=p1p1FNRFPR\frac{\mathrm{PPV}}{1 - \mathrm{PPV}} = \frac{p}{1 - p} \cdot \frac{1 - \mathrm{FNR}}{\mathrm{FPR}}

ここで FNR は偽陰性率、FPR は偽陽性率です。この式は混同行列の定義から導かれる恒等式で、どんな分類器でも成り立ちます。

この式から両立不能が直ちに出ます。群1と群2で基準率が違う、つまり

p11p1p21p2\frac{p_1}{1-p_1} \neq \frac{p_2}{1-p_2}

のとき:

唯一の例外は分類器が完全に正確(FPR=0 かつ FNR=0)な場合だけで、現実のモデルではありえません。

要するに:群の基準率が違う限り、「スコアの意味を揃える(calibration)」ことと「誤りの率を揃える(equalized odds)」ことは数学的に同時達成できない。demographic parity も Y と独立を強制するため、Y を見る他2つと一般に衝突します。

COMPAS 論争がまさにこれ

再犯リスク評価ツール COMPAS をめぐる有名な論争は、この定理の実例です。

どちらも正しい。 群の再犯基準率が異なるため、calibration と error rate balance は定理により両立しません。「どちらの公平性を優先すべきか」は、データやアルゴリズムでは決まらない価値判断・社会的選択の問題に変わります。


対策の3段:前処理・学習中・後処理

どの公平性指標を採るか決めたうえで、バイアスを緩和する介入は3つのタイミングに分かれます。

flowchart LR
    D["訓練データ"] --> P1["前処理(データを直す)"]
    P1 --> M["学習中(制約・正則化を入れる)"]
    M --> P3["後処理(出力・閾値を調整)"]
    P3 --> O["予測"]
    P1 -. "再重み付け・再標本化・特徴変換" .-> P1
    M -. "公平性を制約付き最適化" .-> M
    P3 -. "群ごとに閾値を変える" .-> P3

(1) 前処理(pre-processing)— データを直す 学習前に、保護属性と他の特徴・ラベルの相関を弱めます。再重み付け、再標本化、特徴量の変換などで、データの段階で偏りを減らします。モデルに依存しない一方、モデルがデータをどう使うかを見ていないため、偏りが残ることもあります。

(2) 学習中(in-processing)— 学習に制約を入れる 損失関数に公平性の制約や正則化項を加え、精度と公平性を同時に最適化する制約付き最適化として解きます。例:公平性違反の大きさをペナルティとして足す。指標を直接ターゲットにできる一方、学習アルゴリズムの改変が必要です。

(3) 後処理(post-processing)— 出力・閾値を調整 学習済みモデルはそのままに、出力スコアや判定閾値を群ごとに調整して公平性を満たします。再学習が不要で手軽な一方、推論時に保護属性を知る必要がある点が制約です(前処理・学習中は訓練時のみ保護属性があればよい)。

精度と公平性のトレードオフ

これらの介入は多くの場合、全体精度を下げます。元のモデルは精度を最大化するよう学習されているので、そこに公平性制約を課せば、最適点から離れるぶん精度が落ちるのが普通です。

minh (予測誤差)精度s.t.(公平性違反)ϵ公平性\min_{h} \ \underbrace{\text{(予測誤差)}}_{\text{精度}} \quad \text{s.t.} \quad \underbrace{\text{(公平性違反)} \le \epsilon}_{\text{公平性}}

ε を小さく(公平性を厳しく)するほど、許される h の集合が狭まり、達成できる精度の下限が悪化します。「精度を取るか公平性を取るか、どこで折り合うか」自体が設計判断であり、唯一の正解はありません。


⚠️ よくある誤解・落とし穴(要最新確認)


まとめ

公平性とバイアスは、機械学習が社会と接続したときに必ず立ち現れる問題です。技術で解ける部分は「公平性を定義に落として測る・緩和する・トレードオフを示す」こと。技術で解けない部分は「どの公平性を優先するか」という価値判断で、これは社会的文脈に委ねられます。エンジニアの役割は、この境界を理解し、選択を明示的・説明可能にすること(モデル解釈性 とも直結します)。万能の公平モデルは存在せず、不可能性定理がそれを保証している、というのが出発点です。


対応するシミュレーション

simulations/fairness_impossibility.py:陽性の基準率が違う2グループ(A=0.3 / B=0.6)の完全に較正されたスコアを作り、共通のしきい値での誤検出率FPRと見逃し率FNRを比べます。較正済みなのにFPR(A=0.05 / B=0.64)もFNR(A=0.84 / B=0.17)もグループ間でそろわないこと=Chouldechovaの不可能性定理(基準率が違うと「較正・等しいFPR・等しいFNR」を同時には満たせない)を数値で確かめます。どの公平性指標を優先するかは価値判断になります。

較正と均等オッズの両立不可(基準率差)

関連ノート