0Pricing
Learn AI with Python · レッスン

MLモデルのバイアス検知

保護属性、格差のある影響、fairlearnの指標、均等オッズ、人口統計学的パリティについて学習します。

「MLモデルのバイアス検知」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

アルゴリズムバイアスとは

モデルの予測が、センシティブ属性(性別、人種、年齢)で定義されるグループに対して体系的に不利になる場合、そのモデルにはバイアスがあります。バイアスは偏ったトレーニングデータに起因することが多く、採用、融資、医療の意思決定で実害を引き起こす可能性があります。

センシティブ属性

センシティブ属性とは、性別や民族など、公平性を測定する対象となる属性です。公平性のメトリクスは、その属性が定義するグループ間でモデルの動作を比較します。これは、その属性がモデルの入力として使われていない場合でも同様です。

人口統計的パリティ

人口統計的パリティでは、グループ間で陽性予測率が等しいことが求められます。ローンモデルがグループAの60%を承認する一方で、グループBでは35%しか承認しない場合、申請者の実際の信用力にかかわらず、人口統計的パリティに違反しています。

# P(prediction = 1 | group = A) == P(prediction = 1 | group = B)

等化オッズ

等化オッズは、より厳しい基準です。グループ間で真陽性率と偽陽性率が等しいことを求めます。これは真のラベルを条件とするため、モデルが各グループに対して同程度に正確であれば、選択率が異なることを許容します。

# TPR and FPR equal across groups
# P(pred=1 | y=1, A) == P(pred=1 | y=1, B)
# P(pred=1 | y=0, A) == P(pred=1 | y=0, B)

パリティとオッズの比較

これらの指標は互いに両立しない場合があります。

  • 人口統計的パリティは真のラベルを考慮しないため、ベースレートが実際に異なる場合でも、率を等しくすることを求める可能性があります
  • 等化オッズは真のラベルを尊重しますが、選択率が等しくないことを許容します

どの状況でも普遍的に正しい指標はありません。選択は、状況と法制度によって決まります。

fairlearnの紹介

fairlearnは、不公平性を測定および緩和するためのPythonライブラリです。中心となる測定ツールはMetricFrameで、センシティブグループ別に分解した任意のメトリクスを計算します。

import pandas as pd
from fairlearn.metrics import MetricFrame
from sklearn.metrics import accuracy_score, selection_rate

MetricFrameの構築

メトリクスの辞書、真のラベル、予測値、sensitive_featuresを渡します。fairlearnは各メトリクスをグループごとに評価します。

mf = MetricFrame(
    metrics={
        "accuracy": accuracy_score,
        "selection_rate": selection_rate,
    },
    y_true=y_test,
    y_pred=y_pred,
    sensitive_features=X_test["gender"],
)

グループ別の結果

by_group属性は、各グループの各メトリクスを表にして返すため、格差をひと目で確認できます。

print(mf.by_group)
#            accuracy  selection_rate
# gender
# female        0.81            0.34
# male          0.83            0.59

全体と差分

fairlearnは集計結果も提供します。overallはデータセット全体を表し、difference()やratio()などのヘルパーは、最も良いグループと最も悪いグループの差を要約します。

print(mf.overall)
print(mf.difference(method="between_groups"))
# selection_rate    0.25  -> 25 point gap between groups

格差の可視化

by_groupの棒グラフにすると、数値を直感的に把握できます。同じメトリクスの棒の間に大きな差があれば、モデルがグループによって異なる扱いをしている明確な警告サインです。

mf.by_group.plot.bar(
    subplots=True,
    layout=[1, 2],
    figsize=(10, 4),
    title="Metrics by group",
)

検出から緩和へ

バイアスを定量化した後、fairlearnでは、ExponentiatedGradientなどの緩和アルゴリズムや、ThresholdOptimizerを使った後処理を利用できます。これらは、再学習やしきい値の調整によって公平性の制約を満たします。必ず最初に検出を行ってください。測定していないものを修正することはできません。

理解度チェック

公平性に関する知識を確認しましょう。

まとめ

バイアスの検出方法を学びました。

  • 人口統計的パリティはグループ間の陽性予測率を等しくします
  • 等化オッズはラベルを条件としてTPRとFPRを等しくします
  • fairlearn MetricFrameは、sensitive_featuresのグループごとにメトリクス辞書を計算します
  • by_groupを可視化して格差を見つけ、その後で緩和を適用します

よくある質問

「MLモデルのバイアス検知」レッスンは無料ですか?

はい。「MLモデルのバイアス検知」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「MLモデルのバイアス検知」で何を学びますか?

保護属性、格差のある影響、fairlearnの指標、均等オッズ、人口統計学的パリティについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「MLモデルのバイアス検知」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. MLモデルのバイアス検知
  2. モデル解釈性のためのSHAP値
  3. LIME:局所的で解釈可能な説明
  4. AI倫理とガバナンスのフレームワーク
← Learn AI with Pythonに戻る