説明性:モデルは、何を手がかりに判定しているか
ニューラルネットワークのような複雑なモデルは、重みが何千個もあり、「なぜその判定になったのか」を人間が直接読み取るのは困難です。しかし、人に関わる判断にAIを使うなら、判定の理由を説明できることが求められます。また、モデルが「おかしな手がかり」に頼っていないかを確かめることは、データリークや偏りを見つける手段にもなります。モデルの判定の理由を人間に分かる形で示す取り組みを 説明可能なAI(XAI)と呼びます。
並べ替えによる重要度
どのモデルにも使える、わかりやすい方法があります。
- テストデータで、モデルの正解率を測る
- ある特徴量の列だけを、でたらめに並べ替える(ほかの列はそのまま)
- もう一度正解率を測り、どれだけ下がったかを見る
モデルがその特徴量に頼っているほど、でたらめにされると大きく外れるので、正解率が大きく下がります。頼っていない特徴量なら、並べ替えても変わりません。この下がり幅を、並べ替えによる重要度(permutation importance)と呼びます。
実験:作ったデータで確かめる
仕組みがはっきり分かるように、次の3つの特徴量から正解が決まるデータを作りました(正解には、x1が強く、x2が弱く効き、x3はまったく関係ない)。ロジスティック回帰の正解率は0.923です。
x1を並べ替えると正解率が約0.42も下がり、モデルがx1に強く頼っていることが分かります。関係のないx3は、ほぼ0でした(でたらめのぶれで、わずかにマイナスになることもあります)。
この方法は、モデルの中身を見ずに、入力を変えて出力の変化を見るだけなので、どんなモデルにも使えます。
説明の限界と、いろいろな説明の方法
似た特徴量があると、重要度が分かれてしまう
前のスライドのデータに、x1とほぼ同じ値の特徴量x4(x1に小さな誤差を加えたもの)を加えて、もう一度学習させました。正解率は0.923のまま変わりません。
x1の重要度が0.421から0.269に下がり、残りはx4に分かれました。x1を並べ替えても、モデルはx4からほぼ同じ情報を得られるからです。重要度が小さいからといって、正解と関係がないとは限らない のです。
第9章の最初に使った乳がんの診断データでも、細胞の半径・周の長さ・面積のような、似た特徴量がたくさんあります。並べ替えによる重要度を測ると、上位でも0.02ほどで、重要度があちこちに分かれていました。
説明は、「原因」ではない
重要度が大きいのは「モデルがその特徴量に頼っている」ということで、「その特徴量が結果の原因である」ということではありません。例えば、アイスの売り上げと水難事故の数は、どちらも気温が高いと増えます。アイスの売り上げから水難事故を予測するモデルでは、アイスの売り上げが重要になりますが、アイスが事故の原因ではありません。
いろいろな説明の方法
どの方法も、モデルの振る舞いの一面を示すものです。1つの方法の結果だけで判断せず、データの知識と合わせて確かめます。
Pythonで重要度を求める、この章の点検表
from sklearn.inspection import permutation_importance
# model: 学習済みのモデル、X_test, y_test: テストデータ
result = permutation_importance(model, X_test, y_test, n_repeats=10, random_state=0)
print(result.importances_mean) # 特徴量ごとの重要度(10回並べ替えた平均)
n_repeats は、並べ替えを何回繰り返して平均するかです。並べ替えはでたらめなので、1回だけだと結果がぶれます(レッスン4の再現性と同じ考え方で、random_state も決めておきます)。
よくある誤解
- 「重要度が0に近い特徴量は、正解と関係がない」: 似た特徴量があると、重要度が分かれて小さくなります(x1とx4の実験)
- 「重要度が大きい特徴量が、結果の原因である」: 重要度は、モデルが頼っているものを示すだけです。原因かどうかは、別の方法で確かめる必要があります
- 「説明の手法を使えば、AIの判断は完全に理解できる」: どの手法も一面しか示しません。複数の見方と、データの知識を合わせて判断します
この章の点検表:モデルを使う前に確かめること
- 評価の仕方: 不均衡なデータなら、正解率だけでなく、混同行列・適合率・再現率・F値・AUCを見たか。しきい値は、どちらの間違いが重いかで決めたか(レッスン1・2)
- データリーク: 本番で手に入らない情報を使っていないか。前処理や特徴量の選択を、学習用のデータだけで行ったか。重複や時間の順序に気をつけたか(レッスン3)
- 再現性: 乱数の種・データ・コード・ライブラリの版・設定を記録したか。乱数の種を変えて、結果の幅を確かめたか(レッスン4)
- 公平性: グループごとに評価指標を比べたか。偏りがあれば、原因と対策を考えたか(レッスン5)
- 説明性: モデルがどの特徴量に頼っているかを調べ、おかしな手がかりに頼っていないかを確かめたか(レッスン6)
この点検表は、これから自分でAIを作るとき、いつでも使えます。「正解率が高い」だけで安心せず、この5つを確かめる習慣をつけましょう。