機械学習モデルの公平性と倫理【バイアス検出と対策の実装方法】

機械学習モデルの公平性と倫理【バイアス検出と対策の実装方法】 AI資格・学習

はじめに

機械学習モデルが性別・年齢・人種などによって不公平な予測をしてしまう「バイアス」の問題が注目されています。G検定・E資格でもAI倫理は重要テーマです。実務でも「このモデルは公平ですか?」という質問に答えられることが求められます。

機械学習のバイアスの種類

データバイアスは学習データに偏りがある場合に発生します(採用データが男性に偏っている→モデルが男性を優遇)。アルゴリズムバイアスはモデル自体が特定の属性に不均等に機能する場合に発生します。表現バイアスはデータの中で特定のグループが過小・過大に表現されている場合に発生します。

fairlearnを使ったバイアス検出

pip install fairlearn
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from fairlearn.metrics import demographic_parity_difference, equalized_odds_difference
from fairlearn.metrics import MetricFrame
from sklearn.metrics import accuracy_score

# サンプルデータ(採用予測を模擬)
np.random.seed(42)
n = 1000
df = pd.DataFrame({
    'experience': np.random.randint(0, 10, n),
    'test_score': np.random.randint(60, 100, n),
    'gender': np.random.choice(['male', 'female'], n, p=[0.7, 0.3]),
    'hired': np.random.binomial(1, 0.5, n)
})

# バイアスを意図的に混入(男性の採用率を高くする)
df.loc[df['gender'] == 'male', 'hired'] = np.random.binomial(
    1, 0.65, (df['gender'] == 'male').sum()
)

X = df[['experience', 'test_score']]
y = df['hired']
sensitive = df['gender']

X_train, X_test, y_train, y_test, s_train, s_test = train_test_split(
    X, y, sensitive, test_size=0.3, random_state=42
)

# モデル学習
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# 公平性指標の計算
print(f'全体の精度: {accuracy_score(y_test, y_pred):.3f}')

# グループ別の精度
metric_frame = MetricFrame(
    metrics=accuracy_score,
    y_true=y_test,
    y_pred=y_pred,
    sensitive_features=s_test
)
print('グループ別精度:')
print(metric_frame.by_group)

# 人口統計学的パリティ(採用率の差)
dpd = demographic_parity_difference(y_test, y_pred, sensitive_features=s_test)
print(f'採用率の差(0に近いほど公平): {dpd:.3f}')

バイアスへの対策

データレベルでの対策としては、アンダーサンプリング・オーバーサンプリングで各グループのデータ数を均等にすること、感度属性(性別・年齢)をそのままモデルに使わないことが有効です。アルゴリズムレベルでの対策としては、fairlearnのReductionsアプローチを使って公平性制約付き学習を行うことができます。

まとめ

AIモデルの公平性は技術的な問題だけでなく、倫理・法律的な問題でもあります。fairlearnを使ってグループ別の精度・採用率の差を可視化することで、バイアスを早期に発見できます。G検定・E資格ではAI倫理・公平性の概念が出題されるため、実装を通じて理解を深めておきましょう。

📌 プログラミング・AI学習のおすすめスクール

※本記事にはアフィリエイトリンクが含まれます。

コメント

タイトルとURLをコピーしました