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

Gurobi Machine Learning 2 機械学習と数理最適化の統合

Gurobi Machine Learning 2 機械学習と数理最適化の統合

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

Transcript

  1. 0
    Gurobi Machine Learning 2
    機械学習と数理最適化の統合
    2023-10-06 第63回NearMe技術勉強会
    @yujiosaka

    View full-size slide

  2. 1
    前回のおさらい

    View full-size slide

  3. 2
    対象を4章限に分類

    View full-size slide

  4. 3
    変数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'] ^ train['t']) // z = [1, 0, 0, 1]
    model.fit(x, z) // どんな分類器でも可

    View full-size slide

  5. 4
    介入の回数や予算に制約がある場合に効果を最大化させたい
    例:
    試験に合格したn人の学生に対して、奨学金を配ることで入学する学生数を最大化させたい。
    ただし、奨学金には予算上限があり、1人あたり250万円以内、n*0.2人までにしか配れない。
    過去の実績から、配った奨学金とその他の変数(家族の収入、家族構成、成績)から1人1人の学生の入
    学率が予測できる時、どの学生に対して奨学金をどれだけ配るべきか?
    アップリフトモデリングが答えてくれない問題
    数理最適化と機械学習の統合が必要 → Gurobi Machine Learning

    View full-size slide

  6. 5
    5
    https://github.com/yujiosaka/causal-inference-demo-with-gurobi-machine-learning

    View full-size slide

  7. 6
    既知のデータを学習することで、未知のデータについて予測する
    通常高速
    回帰
    ● スパムフィルタ
    ● 画像認識
    予測
    ● 株価予測
    ● 不動産価格予測
    与えられた制約内で厳密な解を求めるのは苦手
    機械学習の得意分野
    制約を破ると罰則を与える等のアプローチがあるが、厳密な解は通常得られない(アート)

    View full-size slide

  8. 7
    与えられた制約の中で、厳密な最適解を見つける
    通常時間がかかる
    ● セールスマン巡回問題
    ● 配送計画問題
    ● ナップサック問題
    ● スケジューリング問題
    リソース(時間、お金)に限りがある場合に用いられる
    数理最適化の得意分野
    意思決定に有効

    View full-size slide

  9. 8
    よく使われる例
    雨が降りそうだ(機械学習) 誰に傘を配ろうか?(数理最適化)

    View full-size slide

  10. 9
    試験に合格したn人の学生に対して、奨学金を配ることで入学する学生数を最大化させたい。
    ただし、奨学金には予算上限があり、1人あたり250万円以内、
    かつ合計n*20万円までを予算上限としたい。
    過去の実績から、配った奨学金とその他の変数(家族の収入、家族構成、成績)から1人1人の学生の入
    学率が予測できる時、どの学生に対して奨学金をどれだけ配るべきか?
    奨学金を配ると、その学生の入学はどれぐらい高くなるのか?
    どの学生に奨学金を配るべきか?
    問題
    (機械学習)
    (数理最適化)

    View full-size slide

  11. 10
    統合のアプローチ

    View full-size slide

  12. 11
    ● 機械学習で前処理(クラスタリング等)してから数理最適化を行う
    ● 機械学習で予測モデルを用意してから、その予測モデルを数理最適化に当てはめる
    ○ 予測モデルを数式に近似する
    ○ 予測モデルを数理最適化の変数として埋め込む
    機械学習 → 数理最適化
    Gurobi Machine Learning
    費用制約のもとでのクーポン配信による売上最大化

    View full-size slide

  13. 12
    ● 過去の数理最適化の結果(変数と解)を学習させて、新しい問題を高速に解く
    ○ 新しい問題に対して、数理最適化を介さずに機械学習の結果を返す
    ○ 機械学習が解のヒントや制約を返し、数理最適化を高速化する
    数理最適化 → 機械学習
    MIPLearn

    View full-size slide

  14. 13
    ● 機械学習を使って数理最適化のパラメータを学習し、より良い組み合わせを選択
    機械学習 ⊃ 数理最適化
    数理最適化 ⊃ 機械学習
    ● 数理最適化を使って機械学習の特徴選択をサポートする
    ● 数理最適化を使って決定木を最適化(できるらしい)
    ○ 参考:https://www.youtube.com/watch?v=l1b3qEO8_Z

    View full-size slide

  15. 14
    ● 機械学習 → 数理最適化
    ● 数理最適化 → 機械学習
    ● 機械学習 ⊃ 数理最適化
    ● 数理最適化 ⊃ 機械学習
    ● 上記4つの組み合わせ
    5つのアプローチ
    ← Gurobi Machine Learning

    View full-size slide

  16. 15
    ● 予測モデルを数理最適化の変数に組み込む
    ● 機械学習の結果を数理最適化の変数に組み込むだけで良いのでは?
    Gurobi Machine Learning のユースケース
    天候や過去の傾向から需要や配送時間を計算してからVPRを解く
    都市をクラスタリングしてからネットワーク最適化を行う
    https://www.logopt.com/2020/10/19/%E3%82%B1%E3%83%BC%E3%82%B9%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3-%EF%BC%9

    View full-size slide

  17. 16
    ● MNIST手書きデータセットに対する「最適な」敵対的サンプル生成
    ● 非線形関数をReLuを使ったニューラルネットワークによって近似する
    ● 奨学金による入学する学生数の最大化
    ● 価格調整による収益の最大化
    Gurobi Machine Learning のサンプル集
    https://gurobi-machinelearning.readthedocs.io/en/stable/mlm-examples/2DPeakFunction.html
    https://gurobi-machinelearning.readthedocs.io/en/stable/mlm-examples/adversarial_mnist.html
    https://gurobi-machinelearning.readthedocs.io/en/stable/mlm-examples/student_admission.html
    https://gurobi-machinelearning.readthedocs.io/en/stable/mlm-examples/price_optimization.html
    因果推論とアップリフトモデリングに近い分野

    View full-size slide

  18. 17
    ● 奨学金による入学する学生数の最大化
    ○ 奨学金を配ることで、学生の入学率はどのように変化するだろうか?
    ○ 奨学金をどのように配ることで、学生の入学数を最大化できるだろうか?
    ● 価格調整による収益の最大化
    ○ 価格を調整することで、収益はどのように変化するだろうか?
    ○ 価格をどのように調整することで、収益を最大化できるだろうか?
    機械学習と数理最適化の統合
    (機械学習)
    (数理最適化)
    (機械学習)
    (数理最適化)
    価格調整による推定収益をGurobi Machine Learningの変数に組み込む
    奨学金による学生の推定入学率をGurobi Machine Learningの変数に組み込む

    View full-size slide

  19. 18
    import pandas as pd
    from sklearn.linear_model import LogisticRegression
    import gurobipy as gp
    from gurobi_ml import add_predictor_constr
    import gurobipy_pandas as gppd
    historical_data = pd.read_csv(...)
    studentsdata = pd.read_csv(...)
    regression = LogisticRegression()
    regression.fit(X=historical_data.loc[:, [“merit”, “SAT”, “GPA”]], y=historical_data.loc[:, ”enroll”])
    Gurobi Machine Learningの使い方(奨学金による入学数最大化)
    1. 機械学習モデルを用意する

    View full-size slide

  20. 19
    m = gp.Model()
    # 入学率を変数 “y” とする
    y = gppd.add_vars(m, studentsdata, name='enroll_probability')
    # 1人あたりの奨学金の上限(250万円)を制約に加える
    studentsdata = studentsdata.gppd.add_vars(m, lb=0.0, ub=2.5, name='merit')
    # 配る奨学金の金額を変数 “x” とする
    x = studentsdata.loc[:, "merit"]
    Gurobi Machine Learningの使い方
    2. 普通の定式化を行う

    View full-size slide

  21. 20
    # 目的関数を定式化する
    m.setObjective(y.sum(), gp.GRB.MAXIMIZE)
    # 予算制約を定式化する
    m.addConstr(x.sum() <= 0.2 * nstudents)
    # 機械学習モデルを制約に加える
    pred_constr = add_predictor_constr(m, regression, studentsdata, y, output_type="probability_1")
    # 最適化を実行する
    m.optimize()
    # 結果を出力する
    pred_constr.input_values
    Gurobi Machine Learningの使い方
    3. 機械学習のモデルを制約に加える

    View full-size slide

  22. 21
    Gurobi Machine Learningの使い方

    View full-size slide

  23. 22
    モデルを数式に直接置換、または区分線形関数で近似
    Gurobi Machine Learning の仕組み
    ロジスティック回帰 ReLU

    View full-size slide

  24. 23
    サポートしているモデルや変換器が限定されている
    ● モデル(scikit-learn, Keras, PyTorch)
    ○ 線型回帰
    ○ ロジスティック回帰(唯一の二分類器)
    ○ ニューラルネット(ReLu全結合のみ)
    ○ 決定木・ランダムフォレスト
    ○ 勾配ブースティング
    ● 変換器
    ○ StandardScaler
    ○ PolynomialFeatures
    ○ ColumnTransformer
    サポートしていないモデルを使用しようとするとエラーになる
    Gurobi Machine Learning の制約

    View full-size slide

  25. 24
    デモ
    https://github.com/yujiosaka/causal-inference-demo-with-gurobi-machine-learning/blob/main/lab/1.%20Causal%20inference%20demo%20wit
    h%20Gurobi%20Machine%20Learning.ipynb

    View full-size slide