クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

AIの公平性をどう測るか

このレッスンのあとで: グループごとの割合を比べて、モデルが公平かどうかを数で測れる。

55分のレッスンコマンド1件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

AIの公平性は、数で測れる

AIの公平性とは、モデルが性別や年齢などのグループの違いで、人を不当に違う扱いにしないことです。公平さは数で測れますが、測り方が2つあり、答えが食い違うことがあります。

たとえば、ある会社が書類選考にAIを使うとします。グループAとBの通過する割合を比べると、公平かどうかの手がかりになります。

このレッスンのゴール

メモ

グループごとの割合を比べて、モデルが公平かどうかを数で測れる。

キーワード

ことばいみれい
公平性グループの違いで、不当に扱いを変えないこと
通過率グループの人数のうち、通過した人の割合
人口統計的パリティグループの通過率が等しいこと
真陽性率条件に合う人のうち、通過した人の割合8人中6人
機会均等条件に合う人の真陽性率が、グループで等しいこと

学生が入力するセルは、このプレビューでは空白です。

通過率は、グループごとに数える

通過率は、グループの人数のうち、通過した人の割合です。全体の平均だけでは見えない差が、グループごとに分けると見えます。

グループの通過率が等しい状態を、人口統計的パリティといいます。

例: 書類選考の通過率

グループ応募した人通過した人通過率
A20人12人60%
B10人3人30%

学生が入力するセルは、このプレビューでは空白です。

グループごとに数える

コード: python
# [グループ, 通過したか(1なら通過)] の記録です。
rows = [["A", 1], ["A", 1], ["A", 0], ["B", 1], ["B", 0], ["B", 0]]
for name in ["A", "B"]:
    total = 0
    passed = 0
    for row in rows:
        if row[0] == name:
            total = total + 1
            passed = passed + row[1]
    print(name, passed, "/", total)
# rows の最後に ["B", 1] を2件足して、Bの割合がどう変わるか見てください。

ラボで、グループ別の割合を数える

ラボの自転車データでも、同じ数え方を練習します。ここでは人ではなく、日が1件の記録です。

「忙しい日」(1日300台以上)の割合を、週末と平日のグループで比べます。

週末と平日の、忙しい日の割合

コマンド
docker exec jupyter python3 -c "import csv; r=list(csv.DictReader(open('hires.csv'))); w=[int(x['hires'])>=300 for x in r if x['weekday'] in ('Sat','Sun')]; d=[int(x['hires'])>=300 for x in r if x['weekday'] not in ('Sat','Sun')]; print('weekend', sum(w), len(w), round(sum(w)/len(w),2)); print('weekday', sum(d), len(d), round(sum(d)/len(d),2))"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

全体の正解率が高ければ、公平だと考えがちです。少数のグループで間違いが多くても、多数のグループが正しければ、全体の正解率は高いままです。必ずグループごとに分けて測ってください。

条件に合う人が見逃される割合も測る

通過率が同じでも、扱いが同じとは限りません。真陽性率は、本当に条件に合う人のうち、通過した人の割合です。

条件に合う人が見逃される割合がグループで違うなら、機会均等が崩れています。

例: 条件に合う人の通過率

グループ条件に合う人そのうち通過真陽性率
A10人8人80%
B5人3人60%

学生が入力するセルは、このプレビューでは空白です。

2つの測り方は食い違うことがある

人口統計的パリティを満たすように通過率をそろえると、機会均等が崩れることがあります。逆も起こります。

どちらを優先するかは、データだけでは決まりません。結果が人の生活に何をもたらすかを考えて、人が決めます。

さらに挑戦: しきい値を変える

ラボのコマンドで、300 を 350 に変えて、もう一度実行してください。週末と平日の割合の差は、大きくなりましたか、小さくなりましたか。

割合の差と、割合の比は、別の見方です。どちらで「不公平」と言うべきかを、一文で書きましょう。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。