$30 off During Our Annual Pro Sale. View Details »

Gurobi Machine Learning 1 因果推論とアップリフトモデリング

Gurobi Machine Learning 1 因果推論とアップリフトモデリング

More Decks by NearMeの技術発表資料です

Other Decks in Research

Transcript

  1. 0
    Gurobi Machine Learning 1
    因果推論とアップリフトモデリング
    2023-06-16 第49回NearMe技術勉強会
    @yujiosaka

    View Slide

  2. 1
    機械学習

    View Slide

  3. 2
    既知のデータを学習することで、未知のデータについて予測すること
    機械学習のおさらい
    x1とx2の2 変数だけを使って、
    メールをSPAMかHAMかに分類したい
    ● x1: 文字化けの数
    ● x2: 文中の「おめでとう」の回数
    として、以下の分類ができる
    f(x) > 0: SPAM
    f(x) < 0: HAM

    View Slide

  4. 3
    教師あり
    ● 分類
    ○ スパムフィルタ
    ○ 画像認識
    ● 回帰
    ○ 株価予測
    ○ 不動産価格予測
    教師なし
    ● クラスタリング
    ● GAN(Generative Adversarial Netrowk)
    機械学習の分類

    View Slide

  5. 4
    ● 治療を行うことで患者が回復するかどうか
    ● 奨学金を与えることで入学率が向上するかどうか
    ● 割引することで売上が伸ばせるかどうか
    ● etc.
    リスク
    コスト
    コスト
    介入操作が行われる分野
    因果推論は、リスクやコストを伴う介入を行う分野とその研究
    リスクやコストを最小限に抑えつつ、効果を最大化させたい

    View Slide

  6. 5
    普通の予測と何が違うのか?

    View Slide

  7. 6
    因果推論の根本問題
    https://ja.wikipedia.org/wiki/%E7%9B%B8%E9%96%A2%E9%96%A2%E4%BF%82%E3%81%A8%E5%9B%A0%E6%9E%9C%
    E9%96%A2%E4%BF%82

    View Slide

  8. 7
    アップリフトモデリング

    View Slide

  9. 8
    対象を4章限に分類
    この象限内の対象を分類したい

    View Slide

  10. 9
    ● 「勉強したらテストに合格した」という観測からは
    「勉強しなかったらテストに合格しなかった」のかはわからない
    ● 後からこの学生は、「Persuadable」か「Sure Things」かは分類できない
    ● ABテストを行えば、統計的に分類することは可能
    ● 実用的には、「Persuadable」の分類予測が行えれば十分なことが多い
    解説
    ABテストを必須としない方法も研究されている
    勉強したから合格した 勉強してもしなくても合格した
    誰に勉強させる(Treatment)べきかを知りたい

    View Slide

  11. 10
    勉強した学生(Treated)としなかった学生(Control)の2つのグループにランダムに分ける
    ①勉強した学生(Treated)を対象に、
     過去の成績等のデータから「(勉強した場合の)合格率」を予想するモデルを構築
    ②勉強しなかった学生(Control)を対象に、
     過去の成績等のデータから「(勉強しなかった場合の)合格率」を予想するモデルを構築
    2モデル
    過去の成績が分かっている新たな学生に対し、「① - ② > 0」であれば、
    その学生は勉強することで合格率が上がるだろうと予測できる
    コストの高い勉強(塾に通わせる等)であれば、「① - ②」の差が
    より大きい学生だけに介入するといった応用もできる

    View Slide

  12. 11
    ● パラメータチューニングが難しくなる
    ● 予測時の計算量が2倍になる
    ● 特徴量の解釈が難しくなる
    2モデルの問題点
    → それぞれ異なるチューニングをして問題ないかは判断が難しい
    → 一度実行すればいい学習と違って、予測時の計算量は直接サーバーコストに影響する
    → 2つの学習結果で全く異なる特徴が抽出されてしまう

    View Slide

  13. 12
    変数Zを導入して、教師として学習
    Pythonコード例
    1モデル
    // 学習データ
    df = pd.DataFrame({
    'y': [1, 0, 1, 0], //合格したか?(response)
    't': [1, 1, 0, 0], // 勉強したか?(treatment)
    'x1': [0.2, 0.8, 0.3, 0.4],
    'x2': [0.4, 0.4, 0.2, 0.2]
    })
    x = df[['x1', 'x2']]
    z = 1 - (df['y'] ^ df['t']) // z = [1, 0, 0, 1]
    model.fit(x, z) // どんな分類器でも可

    View Slide

  14. 13
    介入の回数や予算に制約がある場合に効果を最大化させたい
    例:
    試験に合格したn人の学生に対して、奨学金を配ることで入学する学生数を最大化させたい。
    ただし、奨学金には予算上限があり、1人あたり250万円以内、n*0.2人までにしか配れない。
    どの学生に対して奨学金をどれだけ配るべきか?
    アップリフトモデリングが答えてくれない問題
    数理最適化と機械学習の統合が必要 → 次回 Gurobi Machine Learning を解説

    View Slide

  15. 14
    ● Decision trees for uplift modeling
    参考資料

    View Slide

  16. 15
    Thank you

    View Slide