Slide 1

Slide 1 text

機械学習における反実仮想説明を 生成するライブラリ“DiCE” 桂川大輝

Slide 2

Slide 2 text

意思決定/施策設計を支援する機械学習 ● 機械学習を活用する動機の一部 ○ 意思決定(行動を決めること)/施策設計(方針を決めること) ○ 機械学習による予測に基づいて意思決定者/施策設計者が判断/行動 ● 機械学習による予測の解釈が困難 ○ 精度は高いが根拠が謎(信用していいのか?) ○ 具体的に「何をどうしたら良いのか」までの検討が困難 ○ つまり、意思決定/施策設計ができない 2 予測に加えて意思決定者/施策設計者に寄り添った説明の提供が必要

Slide 3

Slide 3 text

説明を提供する機械学習 ● 説明可能な人工知能(XAI) ○ 機械学習モデルの予測を人間が理解/信頼できるようにするため手法 ● 特徴アトリビューション法 ○ 予測に対する各説明変数の寄与度を算出(比較が可能) ○ 例:LIME、SHAP ● 「現在の予測結果を覆したい」場合… ○ 重要な説明変数はわかるかもしれないが 可能であれば具体的な定量指標が欲しい 3 “現在の予測結果を覆す”施策設計のために具体的な定量指標の設定が必要

Slide 4

Slide 4 text

反実仮想説明法:反実仮想説明の生成手法 ● 反実仮想説明 ○ 反実仮想(「もし〜だったら… だろうに」)に基づく説明 ○ 現在の予測結果を覆すために必要な説明変数の変更例の提供 4 望ましくない 状態 もし〇〇だったら… “望ましい状態”だろうに 望ましい 状態

Slide 5

Slide 5 text

施策設計に貢献する反実仮想説明 ● 反実仮想説明の基本 ○ 現在の予測結果を覆すために必要な説明変数の変更例の提供 (どの説明変数をどれだけ変動させたら良いのか) ○ 可能な限り変更の差分が小さい説明を提供 ○ ドメイン的に可能な変動を提供 ● 想定する利用シーン ○ ローン許諾/拒否の判定(金融) ○ 健康状態/否の予測(医療) 5 反実仮想説明に基づく具体的な定量指標の設定が期待 従来の予測:あなたは健康状態では ないと予測されます。 反実仮想説明:もし、◯◯の数値を X減少させて、△△の数値をY増加さ せたら健康状態と予測できます。

Slide 6

Slide 6 text

DiCE ● 反実仮想説明を生成するPythonのライブラリ ○ 多様な反実仮想説明を生成 6 DiCEにより反実仮想説明の提供が可能 望ましい 状態 望ましくない 状態

Slide 7

Slide 7 text

DiCEの利用例〜準備〜 ● 実現したいタスク ○ “望ましい状態ではない”と予測された人に対して反実仮想説明を生成 ● データセット ○ 説明変数:20種 ○ 目的変数:1/0の二値(※1が望ましい状態) ● 二値分類に対して予測する学習済みモデル ○ ある程度の精度(例:AUCが0.8以上) ○ ※今回はscikit-learnで実装されているロジスティック回帰を選定 7

Slide 8

Slide 8 text

DiCEの利用例〜対象データの選定〜 8 from numpy.random import seed seed(123) y_predict = model.predict(test_x) test_x["label"] = y_predict pre_counter = test_x.query('label == 0') pre_counter = pre_counter.drop(columns="label")

Slide 9

Slide 9 text

DiCEの利用例〜DiCEクラスの生成〜 9 import dice_ml d = dice_ml.Data(dataframe = pd.concat([test_x, test_y], axis=1), continuous_features=[], outcome_name = "label", random_seed=123 ) m = dice_ml.Model(model=model, backend="sklearn") exp = dice_ml.Dice(d, m)

Slide 10

Slide 10 text

DiCEの利用例〜反実仮想説明の生成〜 10 dice_exp = exp.generate_counterfactuals( pre_counter.query('index == 203'), total_CFs= 3, features_to_vary=pre_counter.columns.to_list(), desired_class = 1, random_seed=123 ) dice_exp.visualize_as_dataframe(show_only_changes=True) ● 対象データ: index == 203 ● 生成する反実仮想説明の 件数:3件 ● 望む状態:“1”

Slide 11

Slide 11 text

DiCEの利用例〜生成された反実仮想説明〜 11 DiCEによる反実仮想説明を確認

Slide 12

Slide 12 text

まとめ ● 意思決定/施策設計を支援する機械学習 ○ 予測に加えて意思決定者/施策設計者に寄り添った説明の提供が必要 ○ 施策設計のために具体的な定量指標の設定が必要 ● 反実仮想説明(および反実仮想説明法) ○ 反実仮想(「もし~だったら… だろうに」)に基づく説明 ○ 現在の予測結果を覆すために必要な説明変数の変更例の提供 ○ 具体的な定量指標を設定する点で施策設計への貢献に期待 ● DiCE ○ 反実仮想説明を生成するPythonのライブラリ ○ 多様な反実仮想を生成 12 元記事:https://daikikatsuragawa.hatenablog.com/entry/2021/12/18/120000