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

無料レッスン

AIの判断を説明する方法

このレッスンのあとで: 入力を1つずつ変えて、どの入力が判断を動かしたかを説明できる。

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

AIの判断は、理由を説明できる

AIの説明可能性とは、モデルがなぜその判断をしたのかを、人がわかる言葉で説明できることです。融資を断られた人が理由を聞けること、担当者が誤りに気づけることのために必要です。

このレッスンでは、入力を1つずつ変えて、どの入力が判断を動かしたかを調べる方法を学びます。

このレッスンのゴール

メモ

入力を1つずつ変えて、どの入力が判断を動かしたかを説明できる。

キーワード

ことばいみれい
説明可能性モデルの判断の理由を、人に伝えられること
特徴量モデルに入れる1つ1つの情報年収
重み入力1つ分の、点数への効き方を決める数
寄与1つの入力が、点数を動かした量
ブラックボックス中身が人に読めないモデル

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

点数は、入力と重みでできている

単純なモデルは、入力に重みをかけて足し、点数にします。重みが大きいほど、その入力が点数を強く動かします。重みがマイナスなら、点数を下げます。

1つの入力が点数を動かした量を、寄与といいます。寄与は、入力の値に重みをかけた数です。

例: 融資の点数の内訳

入力値重み寄与
年収(百万円)428
借金の件数2-3-6
勤続年数515
合計7

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

寄与を1つずつ出す

コード: python
# 融資の点数は、入力に重みをかけて足したものです。
# 入力は、年収(百万円)、借金の件数、勤続年数の順です。
weights = [2, -3, 1]
person = [4, 2, 5]
total = 0
for n in range(3):
    effect = weights[n] * person[n]
    print(n, effect)
    total = total + effect
print("点数:", total)
# person[1] を 1 に変えて、点数がいくつになるか見てください。

ラボで、入力ごとの違いを比べる

ラボのデータで、入力ごとの違いを比べます。天気(晴れと雨)と、曜日(週末と平日)が、1日の貸出台数をどれだけ動かすかを、平均で並べます。

これは、モデルの中を見る方法ではありません。データの上で、どの入力が結果と一緒に動くかを見る方法です。

天気と曜日ごとの平均の台数

コマンド
docker exec jupyter python3 -c "import csv; r=list(csv.DictReader(open('hires.csv'))); m=lambda f: round(sum(int(x['hires']) for x in r if f(x))/sum(1 for x in r if f(x)),1); print('sunny', m(lambda x: x['weather']=='sunny'), 'rainy', m(lambda x: x['weather']=='rainy')); print('weekend', m(lambda x: x['weekday'] in ('Sat','Sun')), 'weekday', m(lambda x: x['weekday'] not in ('Sat','Sun')))"

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

よくある間違い

注意

重みが大きい入力ほど、結果の原因だと考えがちです。重みは、そのモデルの中での効き方で、現実の原因ではありません。単位を変えると重みも変わるので、同じ幅だけ動かして比べてください。

入力を1つだけ変えて、点数を見る

入力を1つだけ変えて、点数がどう動くかを見る方法があります。ほかの入力は、そのままにします。

点数の変化が大きい入力が、その人の判断に強く効いています。モデルの中が読めなくても、この方法は使えます。

例: 1つずつ1増やす

変えた入力点数変化
なし(元の点数)70
年収を1増やす92
借金の件数を1増やす4-3
勤続年数を1増やす81

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

断られた人に、理由と次の道を伝える

説明の目的は、断られた人が次に何をすればよいかを知ることです。「借金の件数が点数を最も下げています。1件減らすと点数が3上がります」のような説明が役に立ちます。

ただし、複雑なモデルでは入力が絡み合います。1つ変えた結果が、人によって違うこともあります。

さらに挑戦: くもりの日も

ラボのコマンドを変えて、くもりの日の平均も表示させてください。晴れ、くもり、雨の順に、台数はどう並びますか。

その並びを使って、「雨の日は、晴れの日より何台少ないか」を、客に伝える一文にしましょう。

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

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