論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
アルゴリズムバイアス
Algorithm Bias
倫理
別称: AIバイアス

🔖 キーワード索引

algorithm bias」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「algorithm bias」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

algorithm bias統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法

これらのキーワードは「algorithm bias の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論

🍰 まずはやさしく

AIが持つ偏った考え方のことです。

公平な判断をするために使います。

地域の違いでAIの点数が変わる例があります。

結論を短くまとめて読みます。

アルゴリズムの設計や学習過程で生じる体系的偏り — 公平性指標で定量化して監査するのが現代的アプローチ

📍 文脈ボックス: あなたが今見ているもの

🍰 まずはやさしく

学習の地図のような案内です。

効率よく学ぶために使います。

スマホで好きな場所から読めます。

このページの構成を確認します。

このページは glossary シリーズの一頁で、 上位概念→個別事例→Python 実装→演習という流れで構成される。 学習履歴がない読者は「💡 30 秒で分かる結論」→「🎨 直感で掴む」→「🧮 実値で計算してみる」の順で読むのが標準ルートで、 既に基礎がある場合は数式・落とし穴・関連用語へ直接ジャンプしてよい。

🎨 直感で掴む

🍰 まずはやさしく

AIが起こす不公平なミスのことです。

仕組みを直感的に理解するために使います。

履歴書の言葉でAIが人を差別する例があります。

具体例から正体を掴みます。

「公正に見えるアルゴリズム」が、 実は特定の集団を不当に扱う — これがアルゴリズムバイアス。 直感的な例: Amazon の採用 AI (2018 年廃止) は過去 10 年の応募データを学習した結果、 履歴書の「women's chess club captain」「women's college」等を含むと低スコアを付与した。 設計者は性別を入力に入れていないのに、 関連語を通じて性別差別が再現された (proxy discrimination)。

原因は 3 種類: (1) データバイアス (歴史的差別が訓練データに刻まれている)、 (2) 表現バイアス (特徴量・ラベル設計で集団を不公平に扱う)、 (3) 評価バイアス (テストセットで誤差が一様でない)。 単一の解決策はなく、 demographic parity・equal opportunity・calibration の 3 公平性指標を併用し、 トレードオフを意識的に決定する必要がある。 本ページでは COMPAS 再犯予測 (黒人 false positive rate 45% vs 白人 23%) 等の代表事例で各指標を手計算する。

📐 定義

🍰 まずはやさしく

偏りを数式で表したルールです。

正しく計算して判定するために使います。

性別や地域で結果が違うか調べます。

正確な定義と計算方法を読みます。

アルゴリズムの設計や学習過程で生じる偏り

英語名 Algorithm Bias。 同義・関連語:AIバイアス。

アルゴリズムバイアスは 群間差 として定式化される。 代表的な 3 つの公平性指標は次の通り (敏感属性 $A \in \{0, 1\}$、 予測 $\hat{Y}$、 真値 $Y$):

$$\text{Demographic Parity: } P(\hat{Y}=1 \mid A=0) - P(\hat{Y}=1 \mid A=1) = 0$$

$$\text{Equal Opportunity: } P(\hat{Y}=1 \mid Y=1, A=0) - P(\hat{Y}=1 \mid Y=1, A=1) = 0$$

$$\text{Calibration: } P(Y=1 \mid \hat{Y}=s, A=0) = P(Y=1 \mid \hat{Y}=s, A=1) \quad \forall s$$

$A$ は性別・人種等の敏感属性、 $\hat{Y}$ はモデル予測、 $Y$ は真のラベル。 3 つの指標は Impossibility Theorem (Kleinberg et al. 2017) により、 base rate $P(Y=1 \mid A)$ が群間で異なる限り 同時には満たせない。 どの指標を優先するかは社会的判断 ── 採用 AI なら Equal Opportunity、 与信なら Calibration が典型。

🔬 数式を言葉で読み解く

前節で挙げた 3 つの公平性指標は、 すべて 「敏感属性 $A$ で群を分けたとき、 予測 $\hat{Y}$ と真値 $Y$ の確率分布がどれだけ揃っているか」 を測ります。 記号ひとつずつ「読み方」「意味」「採用 AI で考えた例」に分解しましょう。

記号読み方意味採用 AI での具体例 (A=0 男性, A=1 女性)
$A$エー敏感属性 (sensitive attribute)。 差別の原因になり得る変数性別 (0=男性, 1=女性)、 国籍、 人種など
$Y$ワイ真のラベル (ground truth)。 本当の正解1 = 実際に活躍した、 0 = 活躍しなかった
$\hat{Y}$ワイ・ハットモデルの予測値1 = AI が合格と予測、 0 = 不合格と予測
$P(\hat{Y}=1 \mid A)$ピー・ワイハット いっ ギブン エー群 $A$ における予測陽性率 (合格率)男性応募者の合格率、 女性応募者の合格率
$P(\hat{Y}=1 \mid Y=1, A)$ピー・ワイハット いっ ギブン ワイ いっ アンド エー真の正例の中での再現率 (TPR)。 群別の「本当に優秀な人を拾えた割合」本当に活躍する男性のうち合格判定の割合
$P(Y=1 \mid \hat{Y}=s, A)$ピー・ワイ いっ ギブン ワイハット いこーる エス アンド エー予測スコア $s$ のときの群別精度 (calibration)AI が「合格率 0.7」と出した男性 / 女性の実際の活躍率
$\big|\cdot\big|$絶対値差の符号を無視し大きさだけ見る男女どちらが有利でも「不公平」と判定
$\forall s$フォーオール エスすべてのスコア $s$ について成り立つスコア 0.3 でも 0.9 でも、 群間で実精度が同じ

3 つの指標を言葉で音読すると違いがはっきりします。 Demographic Parity = 「男女の合格率自体を揃える」 (結果の機会均等)。 Equal Opportunity = 「本当に活躍する人の中での合格率を揃える」 (能力者を取りこぼさない)。 Calibration = 「同じ予測スコアの人の実際の活躍率を揃える」 (スコアの意味が群で同じ)。 base rate が群で異なる限り 3 つを同時には満たせない (Impossibility Theorem)。

🧮 数式に値を入れて手で計算する

SSDSE-B-2026 (2023 年) の実データから 8 都道府県 (都市圏 4 + 地方 4) を抽出し、 Demographic Parity (人口統計学的均等) の数式に値を代入して Step 1〜3 で展開する。 使用列: A1101 (総人口) と J2503 (保育所等数)。 使用行: R13000 東京都, R14000 神奈川県, R23000 愛知県, R27000 大阪府, R05000 秋田県, R31000 鳥取県, R32000 島根県, R39000 高知県。 仮想 AI モデルは「J2503 / A1101 × 1000 (千人あたり保育所等数) が全国平均 0.20 を超えれば需要充足を陽性予測」とする。 同じ計算を Python (numpy) で再現し、 手計算と完全一致を確認する。

📐 用語の主要数式 (再掲)

$$ \text{DP gap} = \big|\, P(\hat{y}=1 \mid A=0) - P(\hat{y}=1 \mid A=1) \,\big| $$

Step 1: データ準備 (SSDSE-B-2026 2023 年, 8 都道府県の実値)

Code都道府県A1101 (総人口)J2503 (保育所等数)保育所等数/千人属性 A (0=都市圏 / 1=地方)予測 ŷ (1=陽性, 率>0.20)
R13000東京都14,086,0003,6110.25601
R14000神奈川県9,229,0001,9220.20801
R23000愛知県7,477,0001,3430.18000
R27000大阪府8,763,0009700.11100
R05000秋田県914,0001780.19510
R31000鳥取県537,0001380.25711
R32000島根県650,0002720.41811
R39000高知県666,0002230.33511

Step 2: 中間計算 (群別の陽性予測率)

件数 n陽性 ŷ=1 の数P(ŷ=1 | A)
A=0 (都市圏: 東京・神奈川・愛知・大阪)42 (東京・神奈川)2 / 4 = 0.50
A=1 (地方: 秋田・鳥取・島根・高知)43 (鳥取・島根・高知)3 / 4 = 0.75

Step 3: 最終結果 (DP gap)

項目計算結果
差分0.50 − 0.75−0.25
絶対値|−0.25|0.25
判定DP gap ≤ 0.10 が許容目安0.25 → 不公平 (地方優遇バイアスあり)

🐍 同じ計算を Python で再現

このコードでやること: SSDSE-B-2026.csv から 2023 年・8 都道府県を抽出し、 J2503/A1101×1000 が 0.20 を超えるかで陽性予測 ŷ を生成し、 群別 P(ŷ=1) と DP gap を計算する。 numpy のブール抽出だけで Step 2-3 の手計算と一致するか確認。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np
# SSDSE-B-2026 (2023 年) 8 都道府県の実値: A1101 (総人口), J2503 (保育所等数)
pop      = np.array([14086000, 9229000, 7477000, 8763000, 914000, 537000, 650000, 666000])
nurseries = np.array([3611, 1922, 1343, 970, 178, 138, 272, 223])
A        = np.array([0, 0, 0, 0, 1, 1, 1, 1])  # 0=都市圏 / 1=地方
rate   = nurseries / pop * 1000          # 千人あたり保育所等数
y_pred = (rate > 0.20).astype(int)      # 陽性予測 (全国平均超え)
p0 = y_pred[A == 0].mean()
p1 = y_pred[A == 1].mean()
dp_gap = abs(p0 - p1)
print(f"P(y=1 | A=0 都市圏) = {p0:.4f}")
print(f"P(y=1 | A=1 地方)   = {p1:.4f}")
print(f"DP gap            = {dp_gap:.4f}")

📤 実行結果

P(y=1 | A=0 都市圏) = 0.5000 P(y=1 | A=1 地方) = 0.7500 DP gap = 0.2500

💬 手計算 Step 3 の DP gap = 0.25 と Python 出力が完全一致。 DP gap が 0 に近いほど属性 A に対して中立、 0.25 のような値は閾値 0.10 を超え明確なバイアスを示す。 ここでは「人口あたり保育所等数」を陽性予測に使ったため、 人口が小さい地方ほど分母が小さくなり率が上がりやすい構造バイアスが出現。 実務では DP gap ≤ 0.10 (10 pt) を許容基準とする例が多い (例: EEOC の 4/5 ルール)。 仮想 AI が融資・採用などに同じ素朴な指標を用いると、 似た構造バイアスが生じる。

🧮 SSDSE-B-2026 でアルゴリズムバイアスを実値で測る

SSDSE-B-2026 (2023 年, 47 都道府県) を使い、 仮想 AI モデル「人口あたり保育所等数で『需要充足』を陽性予測」がもたらすアルゴリズムバイアスを実測する。 属性 A は地域区分: A=0 が 大都市圏 (北海道/埼玉県/千葉県/東京都/神奈川県/愛知県/大阪府/兵庫県/福岡県 の人口 500 万人超 9 県)、 A=1 が 地方 (それ以外 38 県、 沖縄県/島根県/鳥取県 ほか)。 予測陽性は J2503 (保育所等数) / A1101 (総人口) × 1000 > 全国平均 0.20 とする(実データの全国平均は 0.201)。

件数 n陽性予測数 (J2503/A1101 × 1000 > 0.20)P(ŷ=1)
A=0 (都市圏 9 県)92 (東京・神奈川のみ)2/9 = 0.222
A=1 (地方 38 県)3816 (島根・高知・鳥取 ほか)16/38 = 0.421

DP gap = |0.222 − 0.421| = 0.199。 閾値 0.10 を超え、 仮想モデルは「地方優遇 / 都市過小」のバイアスを示す。 原因は J2503 が絶対数で人口正規化されておらず、 人口の小さい地方ほど千人あたり保育所等数が上がりやすいため(島根 0.418・高知 0.335 など)。 是正には J2505 (保育所等定員数) や A1301 (15 歳未満人口) など「実需要」で正規化する必要がある。 Python 再現は df[df['A1101']>5000000]df[df['A1101']<=5000000] でグループ化 → (df['J2503']/df['A1101']*1000 > 0.20).mean() を計算。

🎯 いつ・どこで使うか

📋 前提条件・適用範囲

この用語を理解・使用するときは、 次のような前提を意識してください:

🎮 触って理解する

アルゴリズムバイアスの核心は「学習データの偏りが予測に伝播し、 運用の中で増幅する」という点にある。 ここでは架空データ(シード付き擬似乱数で生成した2群の応募者、実在の個人・団体とは無関係)に対する採用分類器をブラウザ内で動かし、 ①データ量の偏りが決定境界を多数派へ傾ける様子、 ②複数の公平性指標が同時には満たせないトレードオフ、 ③偏った判定が次の学習データになって世代ごとに格差が増幅するフィードバックループ、 の3つを手で触って確かめる。

① 学習データの偏り → 決定境界のバイアス(合格率格差が開く)

上帯が多数派(架空・基準となる群)、 下帯が少数派(架空・真に合格すべき人の割合がやや低い不利な群)。 緑=本当は合格に値する人、 灰=そうでない人、 縦線が分類器の決定境界(右側を合格と予測)。 少数派の学習データが減るほど、 分類器は少数派の境界を多数派側の境界へ引き寄せ(=多数派に最適化)、 少数派の合格者が取りこぼされる。

公平性補正:
多数派の合格率
少数派の合格率
人口統計的パリティ差
|合格率の差|
均等機会差
|真陽性率の差|
全体精度(運用時)

② フィードバックループ:偏った判定が次の学習データになると格差が増幅

①で生じた小さな合格率格差を出発点に、 「合格者が次世代の学習データ(=手本)になる」過程を1世代ずつ進める。 少数派は合格者が少ない→次の学習データでの存在感が下がる→さらに合格しにくくなる、 という自己強化で格差が世代ごとに拡大する様子を観察する。

第 0 世代

「1世代進める」を押すたびに棒が伸び、 わずかな初期格差が数世代で決定的な排除に育つ。 これが監査なしで運用したアルゴリズムの怖さである。

🧠 直感 ── データの偏りは「世界の偏り」を学ぶ

機械学習は「過去に起きたこと」を最適に再現する装置である。 過去の採用データに少数派が少なく、 かつ合格例も少なければ、 分類器は「少数派は合格しにくい」というパターンを忠実に学ぶ。 これは設計者が差別を意図したからではなく、 多数派で精度を上げるほど全体の損失が下がるという最適化の必然として起きる(①のスライダーで少数派比率を下げると境界が多数派へ寄り、 合格率格差が開くのはこのため)。 モデルは世界を写す鏡であり、 世界が偏っていれば鏡も偏る。

🕳 落とし穴 ── 公平性は1つの数字では測れない

🚀 発展 ── 制約付き学習・因果・監査

緩和策は介入点で3つに分かれる。 (1) 前処理:学習前にデータを再重み付け・再サンプリングして偏りを均す。 (2) 制約付き学習(in-processing):損失関数に公平性制約(例:均等化オッズのペナルティ)を加えて最適化する。 (3) 後処理:①のように群別に閾値を調整する。 さらに近年は「因果的公平性」── 相関ではなく因果経路を辿り、 保護属性から結果への不当な経路だけを遮断する枠組みが発展している。 そして何より重要なのが継続的な監査(audit):②が示すように、 バイアスは運用の中で増幅するため、 デプロイ後も群別指標を定点観測し、 フィードバックループを断ち切る仕組みが要る。

関連ページ:データに潜むバイアス(生存者・集約バイアス)/ 公平性(指標の定義を深掘り)/ 統計的差別(群平均に基づく判断の経済学)/ AIセーフティ(運用リスク全般)/ データバイアス選択バイアス

🐍 Python での扱い

SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import numpy as np

# データ読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1)
print(df.shape)
print(df.dtypes)
print(df.describe())

# 「アルゴリズムバイアス」の文脈で扱う場合の例:
# 分野: 倫理
# 関連手法は同カテゴリの他用語を参照してください。
📤 実行例(実測) (564, 112) 年度 int64 地域コード object 都道府県 object 総人口 int64 総人口(男) int64 ... 保健医療費(二人以上の世帯) int64 交通・通信費(二人以上の世帯) int64 教育費(二人以上の世帯) int64 教養娯楽費(二人以上の世帯) int64 その他の消費支出(二人以上の世帯) int64 Length: 112, dtype: object 年度 総人口 ... 教養娯楽費(二人以上の世帯) その他の消費支出(二人以上の世帯) count 564.000000 5.640000e+02 ... 564.000000 564.000000 mean 2017.500000 2.690688e+06 ... 26931.026596 59784.718085 std 3.455117 2.730951e+06 ... 4219.487086 8813.812956 min 2012.000000 5.370000e+05 ... 14661.000000 35 …(以下略)

具体的なコードは AI倫理・公平性 を参照してください。

📝 レポートでの報告

分析結果を報告するときに含めるべき情報:

✅ チェックリスト

⚠️ よくある落とし穴

❌ 「精度が高いから良い」とは限らない
不公平な判定や有害な使い方の可能性を考える。
❌ プライバシーの最初からの設計
匿名化は事後対応ではなく設計時から。
❌ 説明可能性
誤判定の場合に「なぜそう判定したか」を答えられる仕組みが必要。

algorithm bias を実務で使う際に頻発する誤用・落とし穴を列挙する。 多くは「前提の確認不足」「結果の過信」「他手法との比較不足」が原因で、 事前にチェックリスト化することで回避できる。

🗺 概念マップ

中央に「アルゴリズムバイアス」を置き、 (a) 発生源として データバイアス (歴史的偏り) ・ サンプリングバイアス・ラベリングバイアス・代理変数 (proxy) を、 (b) 検出指標として Demographic Parity・Equalized Odds・Predictive Parity・Calibration を、 (c) 緩和手法として 前処理 (Reweighing)・学習中 (Adversarial Debiasing)・後処理 (Reject Option) を、 (d) 制度的対応として EU AI Act 高リスク要件・モデルカード・AI 監査・XAI を放射状に配置。 不公平が技術・データ・社会の交点で発生する構造を示す。

アルゴリズムバイアス 機械学習 (前提) 選択バイアス (並列) 公平性指標 (発展) AI 監査 (応用) 汎化誤差 (対比) 説明可能 AI (統合)

アルゴリズムバイアスは Amazon 採用 AI が女性応募者を不利に扱った事例、 COMPAS が黒人被告に高リスクを付ける傾向 (ProPublica 2016)、 顔認識の暗色肌精度低下 (Gender Shades) など多数の実害が報告される。 EU AI Act の高リスク AI では緩和策実装が義務。

マップ上の隣接ノード (フェアネス指標/前処理 reweighing/処理中制約/後処理閾値調整/説明可能 AI) はバイアス検知から緩和までの 5 段階。 SSDSE-B-2026 でも都道府県別の経済指標から男女比・年齢比の歪みが残ったままモデル化すると、 推計値に系統誤差が混入することを demographic parity gap で検知できる。

🔗 隣接手法への橋渡し

「アルゴリズムバイアス」はモデルの出力に体系的な不公平を生じさせる現象。 上流の各種データバイアスを起点に、 下流の公平性指標で検出・是正される。 隣接概念とは「接続(前後関係)」「統合(一緒に効かせる)」「比較(役割の違い)」の 3 視点で関係を整理すると重複なく理解できる。

① 接続: データバイアス → モデル学習 → アルゴリズムバイアス → 公平性指標の流れに組む

② 統合: 検出・是正・ガバナンスを並走させる

③ 比較: 役割が混同されやすい隣接概念との違い

隣接概念役割発生段階アルゴリズムバイアスとの違い
データバイアス入力データの偏りデータ収集データバイアスは入口、 アルゴリズムバイアスは出口 (出力での顕在化)
選択バイアス標本選び方の偏りサンプリング選択バイアスは特定の標本問題、 アルゴリズムバイアスは学習結果の不公平
公平性指標バイアスの定量化評価公平性指標は測定ツール、 アルゴリズムバイアスは測定対象の現象
説明可能性判断根拠の可視化解釈XAI は原因特定の手段、 アルゴリズムバイアスは特定すべき現象
AI 倫理許容差別の定義規範倫理は「何が不公平か」の判断軸、 アルゴリズムバイアスは技術的な事象

役割を分離すると「データを綺麗にすればバイアスは消える」「指標で測れば公平になる」という単一手段誤解を防げる。 接続 (発生から検出への流れ)・統合 (技術と規制の並走)・比較 (役割差) の 3 視点で隣接概念を整理し、 上流対策 (データ品質) と下流対策 (指標監視) の両輪で立体的に把握する。

🌳 手法選択フロー

「アルゴリズムバイアス」を実務で適用する/別手法に切り替える判断を、 状況別の 3 分岐で示す。 一律のレシピではなく、 自分の問題の特徴に応じて分岐を進めること。

  1. 分岐 1(前提条件): 「保護属性は何か?」 性別/人種 → Demographic Parity / Equalized Odds で測定、 年齢 → 連続値補正
  2. 分岐 2(手法特性): 「バイアスの源は?」 データ → データバイアス対策、 モデル → 公平性制約付き学習、 評価 → 閾値最適化
  3. 分岐 3(運用要件): 「公平性と精度のトレードオフは?」 精度優先 → post-hoc 調整、 公平性優先 → in-processing 制約

フローは出発点であって絶対解ではない。 領域知識・データ特性・運用制約を加えて最終判断する。 迷ったときは「🔗 隣接手法への橋渡し」と「🌐 関連手法・派生」を見直し、 単一の手法に固執しないこと。

🧭 解説深化 ── 「校正」と「誤り率の均等」はなぜ両立しないのか

本ページのウィジェットは 人口統計的パリティ (DP)均等機会 (EO) のトレードオフを触って確かめた。 ここではあえて別の三つ組 ── 校正 (calibration)・偽陽性率 (FPR) の均等・偽陰性率 (FNR) の均等 ── に焦点を移し、 なぜ 不可能性が生まれるのか、その根本原因である「群間で base rate が違う」という前提を、SSDSE-B-2026 の実測値で確かめる。

🧠 直感 ── 不可能性の犯人は「モデル」ではなく「世界の base rate」

Chouldechova (2017) と Kleinberg-Mullainathan-Raghavan (2016) が示したのは、 群ごとの陽性割合 (base rate, 有病率) が異なる限り、 「スコアが校正されている」と「偽陽性率・偽陰性率が群間で等しい」は数学的に同時成立しない という事実だ。 つまり不公平の芽は多くの場合アルゴリズムのコードではなく、 学習させる前から世界に存在する 群間の base rate 差 にある。 モデルは正直にその差を映すため、 どの公平性を犠牲にするかを人間が選ばざるを得なくなる。

では「群で base rate が違う」は現実にどれほど起きるのか。 SSDSE-B-2026 (2023 年・47 都道府県) で確かめる。 陽性 = 高齢化率 (65 歳以上人口比, A1303/A1101) が全国中央値を超える都道府県 と定義し、 都道府県を 三大都市圏 8 都府県 (東京・神奈川・千葉・埼玉・愛知・大阪・京都・兵庫) と 地方 39 県 に分けて陽性割合を比べた。 群分けと閾値は解説のための分析上の設定だが、 数値はすべて実測値である。

都道府県数平均 高齢化率base rate (陽性割合)
三大都市圏827.15%0.000
地方3932.50%0.590

全国中央値は高齢化率 31.78%、全体の陽性割合は 0.489 (東京都 22.75% が最低、秋田県 39.06% が最高)。 三大都市圏の base rate は 0.000、地方は 0.590 ── 実データでも群間 base rate は 0.59 も乖離する。 この差がゼロでない以上、上の三つ組を同時に満たす分類器は原理的に作れない。 これはデータやモデルの欠陥ではなく、不可能性定理が保証する数学的帰結である。

🕳 落とし穴(重要)── 「うちのモデルは校正済みだから公平」は誤り

校正 (calibration) だけを根拠に「公平」と主張してはならない。 与信・再犯予測ベンダーが「スコア 0.7 の人は群を問わず実際に約 70% が陽性 ── だから公平」と言うことがある。 これは校正の主張だが、 base rate が違う群では 校正を保った瞬間に偽陽性率か偽陰性率のどちらかが必ず群間でずれる (Chouldechova 2017)。 実際 COMPAS 論争 (本ページ冒頭参照, 黒人 FPR 45% vs 白人 23%) は、 ベンダーが「校正済み」と反論し、 ProPublica が「FPR が不均等」と批判した ── 双方とも正しく、両立不能なだけだった。

派生する典型的な誤り: ❶ 指標を一つだけ報告して「公平」と結論する (DP だけ / 校正だけ)。 ❷ base rate 差を「モデルのバグ」と誤認し、 データを増やせば消えると期待する (base rate 差が実在すれば消えない)。 ❸ 敏感属性を入力から外せば公平になると考える (proxy 経由で復活 ── 本ページ冒頭の Amazon 採用 AI の例)。 正しい姿勢は「どの指標を優先し、何を許容するかを明文化して社会的に説明する」こと。

🚀 発展 ── base rate 差を「まず可視化し、次に方針を宣言する」

実務手順は三段: (1) base rate 監査 ── モデルを作る前に群別の陽性割合を出す (上表のように単純集計で足りる)。 (2) 優先指標の宣言 ── 用途で選ぶ。 採用・機会配分なら均等機会 (見逃しの群間平等)、 与信・リスク評価なら校正 (スコアの意味を群で揃える) が典型。 (3) 残差の開示 ── 選ばなかった指標がどれだけ悪化するかを数値で公表する。 「両立不能」は隠すより明示する方が信頼される。

数式で言えば、混同行列の四セル (TP,FP,FN,TN) は各群で自由度が限られ、 base rate p、校正 (PPV)、FPR、FNR は独立に決められない (恒等式で縛られる)。 pA=0 ≠ pA=1 のとき、PPV を群間で揃えると FPR/FNR の少なくとも一方が必ずずれる ── これが不可能性定理の代数的な芯である。 詳細は混同行列の四セルの関係を辿ると腑に落ちる。

校正と誤り率の関係を混同行列側から: 混同行列/ FPR・TPR のトレードオフ曲線として: ROC曲線。 公平性指標そのものの定義は 公平性、 群平均に基づく判断の経済学は 統計的差別。 base rate 差が学習前から混入する経路は データバイアスデータに潜むバイアス選択バイアス、 運用リスク全般は AIセーフティ。 なお「校正 (calibration)」の単独ページは未整備のため、 定義は本節と冒頭の 📐定義 を参照のこと。