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

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

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

Daiki Katsuragawa

April 17, 2022
Tweet

More Decks by Daiki Katsuragawa

Other Decks in Research

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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")

    View full-size slide

  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)

    View full-size slide

  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”

    View full-size slide

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

    View full-size slide

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

    View full-size slide