Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

4b46b5f1acab7f5a64c0036c1fc39f31?s=128

Daiki Katsuragawa

April 17, 2022
Tweet

More Decks by Daiki Katsuragawa

Other Decks in Research

Transcript

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

  2. 意思決定/施策設計を支援する機械学習 • 機械学習を活用する動機の一部 ◦ 意思決定(行動を決めること)/施策設計(方針を決めること) ◦ 機械学習による予測に基づいて意思決定者/施策設計者が判断/行動 • 機械学習による予測の解釈が困難 ◦

    精度は高いが根拠が謎(信用していいのか?) ◦ 具体的に「何をどうしたら良いのか」までの検討が困難 ◦ つまり、意思決定/施策設計ができない 2 予測に加えて意思決定者/施策設計者に寄り添った説明の提供が必要
  3. 説明を提供する機械学習 • 説明可能な人工知能(XAI) ◦ 機械学習モデルの予測を人間が理解/信頼できるようにするため手法 • 特徴アトリビューション法 ◦ 予測に対する各説明変数の寄与度を算出(比較が可能) ◦

    例:LIME、SHAP • 「現在の予測結果を覆したい」場合… ◦ 重要な説明変数はわかるかもしれないが 可能であれば具体的な定量指標が欲しい 3 “現在の予測結果を覆す”施策設計のために具体的な定量指標の設定が必要
  4. 反実仮想説明法:反実仮想説明の生成手法 • 反実仮想説明 ◦ 反実仮想(「もし〜だったら… だろうに」)に基づく説明 ◦ 現在の予測結果を覆すために必要な説明変数の変更例の提供 4 望ましくない

    状態 もし〇〇だったら… “望ましい状態”だろうに 望ましい 状態
  5. 施策設計に貢献する反実仮想説明 • 反実仮想説明の基本 ◦ 現在の予測結果を覆すために必要な説明変数の変更例の提供 (どの説明変数をどれだけ変動させたら良いのか) ◦ 可能な限り変更の差分が小さい説明を提供 ◦ ドメイン的に可能な変動を提供

    • 想定する利用シーン ◦ ローン許諾/拒否の判定(金融) ◦ 健康状態/否の予測(医療) 5 反実仮想説明に基づく具体的な定量指標の設定が期待 従来の予測:あなたは健康状態では ないと予測されます。 反実仮想説明:もし、◯◯の数値を X減少させて、△△の数値をY増加さ せたら健康状態と予測できます。
  6. DiCE • 反実仮想説明を生成するPythonのライブラリ ◦ 多様な反実仮想説明を生成 6 DiCEにより反実仮想説明の提供が可能 望ましい 状態 望ましくない

    状態
  7. DiCEの利用例〜準備〜 • 実現したいタスク ◦ “望ましい状態ではない”と予測された人に対して反実仮想説明を生成 • データセット ◦ 説明変数:20種 ◦

    目的変数:1/0の二値(※1が望ましい状態) • 二値分類に対して予測する学習済みモデル ◦ ある程度の精度(例:AUCが0.8以上) ◦ ※今回はscikit-learnで実装されているロジスティック回帰を選定 7
  8. 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")
  9. 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)
  10. 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”
  11. DiCEの利用例〜生成された反実仮想説明〜 11 DiCEによる反実仮想説明を確認

  12. まとめ • 意思決定/施策設計を支援する機械学習 ◦ 予測に加えて意思決定者/施策設計者に寄り添った説明の提供が必要 ◦ 施策設計のために具体的な定量指標の設定が必要 • 反実仮想説明(および反実仮想説明法) ◦

    反実仮想(「もし~だったら… だろうに」)に基づく説明 ◦ 現在の予測結果を覆すために必要な説明変数の変更例の提供 ◦ 具体的な定量指標を設定する点で施策設計への貢献に期待 • DiCE ◦ 反実仮想説明を生成するPythonのライブラリ ◦ 多様な反実仮想を生成 12 元記事:https://daikikatsuragawa.hatenablog.com/entry/2021/12/18/120000