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

OptimizationNight~機械学習と数理最適化の融合~

hidenari uoi
October 06, 2023

 OptimizationNight~機械学習と数理最適化の融合~

OptimizationNightで発表した内容です。

hidenari uoi

October 06, 2023
Tweet

Other Decks in Science

Transcript

  1. 自己紹介 • 名前:魚井英生 • 所属:ブレインパッド • 役職:シニアリードデータサイエンティスト • ブレインパッド社における役割:数理最適化、機械学習を組み込んだアプリケーション開発プロジェクトのリーダー。 •

    これまでの経験 配送計画の最適化 生産計画の最適化 広告予算の最適化 実験配合の最適化 需要予測+発注の最適化 ユーザーのスコアリングシステム などなど。 • 趣味:卓球
  2. 機械学習(予測)と最適化(意思決定)の活用の大切さ 機 最 明日70%の確率で雨が降ります。 機械学習(予測)だけでは、「で、どうする?」で終わる。 事故率 移動時間 車 20 20

    歩き 20 60 事故率 移動時間 車 60 30 歩き 20 60 降水確率20%のとき 降水確率70%のとき 車と歩きのどちらを選択するべきかを事故率と移動時間の関係から、最適化を通じて、 意思決定できる。事故を避けたいなら、歩き。移動時間を短くしたいなら、車。 +
  3. 実務例1~需要予測に基づいた、発注計画~ 製品の出荷量を予測して、必要分を発注します。これにより卸倉庫の在庫量を削減します。 機 最 + 卸倉庫 メーカーA 小売A 商品xの1日後、2日後の出荷量を予測。 商品x発注リードタイムが7日なので

    前もって発注。 卸倉庫 <特徴量> ・商品xの前年同月実績 ・商品xのカテゴリ ・予測される日の曜日 <制約> ・商品xの発注リードタイム ・倉庫のキャパシティ ・1回の発注の最大量
  4. 実務例2~消費量予測に基づいた、在庫配送計画~ 機 最 + 軒先の在庫の減り具合を予測して、必要な量を良いタイミングで配送します。 軒先A 軒先B 軒先A 消費量予測 配送ルートの作成

    <特徴量> ・軒先Aの前年同月消費量 ・軒先Aのカテゴリ ・予測される日の曜日 <制約> ・時間指定 ・トラックのキャパシティ ・トラックの車格制限
  5. 実務例3~広告効果予測に基づく、予算配分計画~ 過去実績から広告効果を予測して、未来の予算配分を最適化します。 機 最 + 費用 リターン 費用 リターン リターン

    費用 広告A 広告A 広告B <特徴量> ・広告Aの前年同月リターン ・広告Aのカテゴリ ・予測される月 <制約> ・全体予算のキャパシティ ・広告カテゴリの キャパシティ
  6. 実務例4~特性値予測に基づく、実験計画~ 過去実績から特性値効果を予測して、次の実験の配合を最適化します。 機 最 + 原料 配合 特性 原料 配合

    特性 <特徴量> ・各原料の配合比 ・原料Aのカテゴリ ・原料Aの保持する成分 <制約> ・原材料全体の原価のキャパシティ ・原材料の配合比率の上下限
  7. 融合問題の分類まとめ 1. 疎な融合問題 2. 密な融合問題 集合分割、被覆問題 最適化の 難しさ 過去の知見 十分にある。

    ・どのソルバーどのモデリングに適しているか ・どの程度の規模まで解けるか 不十分。 ・どのソルバーがどういった観点で良いか、 まだわからない。 ・どの程度の規模まで解けるか 現実問題の例 配送計画、生産計画、 シフト計画、発注計画 広告予算計画、ダイナミックプライシング 実験配合計画、商品の条件補正 疎な問題は過去の知見が十分あるが、密な問題はこれから。 最適化に対する 機械学習の 役割 ブラックボックス最適化 入力データ 目的関数、制約条件
  8. 勾配ブースティングによる単調制約と交互作用を入れた要因分解 費用に対して、リターンが減少することは考えにくいため、単調制約を入れた勾配ブースティングを用いる ことで、交互作用を入れてかつ費用の増加に対して、リターンが増加するようにできます。 広告メニュー 日付 費用 カテゴリ(大) 月 祝日数 イベントフラグ

    前年同月リターン 当月リターン A 2022年10月 200 ディスプレイ 10 2 0 230 250 A 2022年11月 300 ディスプレイ 11 3 0 220 230 A 2022年12月 500 ディスプレイ 12 5 1 450 470 説明変数 (意思決定) 説明変数 (外部要因) 目的変数 交互作用・・・イベントがあるときに費用とリターンの関係といった組み合わせ効果 単調制約・・・費用が上がると、リターンが上がるといった効果
  9. 線形モデルだと交互作用効果を取り入れられない 後続の最適化を意識するあまり、線形方程式で学習してしまうと、「イベントありでかつ前年リターンが 250以上の場合の費用対効果」といった組み合わせ効果(交互作用効果)を取り入れられない。 広告メニュー 日付 費用 カテゴリ(大) 月 祝日数 イベントフラグ

    前年同月リターン 当月リターン A 2022年10月 200 ディスプレイ 10 2 0 230 250 A 2022年11月 300 ディスプレイ 11 3 0 220 230 A 2022年12月 500 ディスプレイ 12 5 1 450 470 説明変数 (意思決定) 説明変数 (外部要因) 目的変数 Y = a1 * x1 + a2 * x2 + ・・・ 線形ソルバーで解こうと意識しすぎるあまり、線形回帰してしまう(交互作用が得られない)。
  10. 最適化に進む~予測値の列挙による、費用対効果曲線の作成~ 予算配分したい月に対して、予測値を列挙することで、費用対効果曲線を描くことができます。この費用対 効果曲線は、配分したい月の要因を取り込んだ上で描くことができます。 リターン 費用 2023年1月 (イベントなし) 広告メ ニュー 日付

    費用 イベントフラグ 前年度 リターン A 2023年1月 100 0 230 A 2023年1月 110 0 230 A 2023年1月 120 0 320 配分月に対するデータマート 予測値を列挙 交互作用を含めた外部要因を取り込んで、費用対効果曲線の作成 ・ ・ ・
  11. 機械学習と数理最適化の両サイドから追及する 外部要因を増やして、精度を高めることは1つの方法ではありますが、現実的にありとあらゆる外部要因を 集めることは現実的ではありません。そこで過去の実績に着目します。 1. データを増やして精度を高める。 (機械学習) 2. 過去実績との逸脱をペナルティとする。 (最適化) +

    広告メ ニュー 日付 費用 イベントフラ グ 当月リター ン コロナ フラグ A 2023年1 月 100 0 230 1 A 2023年1 月 200 0 230 1 A 2023年1 月 300 0 320 1 外部要因を足していく。 (キリがない、、) 100 0 広告Aの 配分比率の分布 100 0 広告Bの 配分比率の分布 最適化の決定 (ペナルティ0) 最適化の決定 (ペナルティ10)
  12. 混合整数計画による、評価指標の四分位範囲から逸脱を表現する定式化 指標の値が四分位範囲を逸脱したかどうかのバイナリ変数と、逸脱値を表す非負の連続変数を用いることで 定式化することができます。 有効範囲指標lの下限から値が 逸脱した場合、その逸脱値が nlに入る。 有効範囲指標lの上限から値が 逸脱した場合、その逸脱値が puに入る。 •

    𝑉 𝑙 𝑝,𝑡・・・広告pの期tの指標lの値。 • 𝑛𝑙 𝑙 𝑝,𝑡 ・・・広告pの期tの有効範囲lの下限の下振れ値。 • 𝑝𝑙 𝑙 𝑝,𝑡 ・・・広告pの期tの有効範囲lの下限の上振れ値。 • 𝑧𝑙 𝑙 𝑝,𝑡 ・・・広告pの期tの有効範囲lの下限のよりも 下振れる場合に1。 • 𝑝𝑢 𝑙 𝑝,𝑡 ・・・広告pの期tの有効範囲lの上限の下振れ値。 • 𝑛𝑢 𝑙 𝑝,𝑡 ・・・広告pの期tの有効範囲lの上限の上振れ値。 • 𝑧𝑢 𝑙 𝑝,𝑡 ・・・広告pの期tの有効範囲lの上限のよりも 上振れる場合に1。
  13. 【参考】分岐する制約が多い場合は、ヒューリスティックスソルバーが見やすい。 分岐が多い制約は混合整数計画だとBigMが多様されてわかりづらいので、ヒューリスティックスベースのソ ルバーの方が書きやすい。 1. 混合整数計画ソルバー (ex. pulp) 2. ヒューリスティックスソルバー (ex.

    LocalSolver) penalty_lower = iif( V – lower < 0, abs(V - lower), 0 ) penalty_upper = iif( V – upper > 0, abs(V-upper), 0 ) 三項演算子を使うことで、BigM法を使 わずに直感的に制約条件の反映が可能。 pu = LpVariable( name=f"portfolio_ratio_p_upper_{period}_{ad_id}", cat=LpContinuous, lowBound=0, ) nu = LpVariable( name=f"portfolio_ratio_n_upper_{period}_{ad_id}", cat=LpContinuous, lowBound=0, ) zu = LpVariable( name=f"portfolio_ratio_b_upper_{period}_{ad_id}", cat=LpBinary ) constr1 = LpConstraint( e=pu - nu - (cost - upper * total_period_cost), sense=self._sense_map["="], rhs=0, name=f"portfolio_ratio_upper_def1_{period}_{ad_id}", ) ・ ・
  14. まとめ 1. 数理最適化と機械学習の融合を疎と密に分けて分類してみた。疎な融合問題は、機械学習が与える影響は 少ないが、最適化問題自体が難しい。一方で密な融合問題は、最適化問題は簡単だが、機械学習器の選択 が定式化に影響を大きく及ぼす。 2. 密な融合の一例として広告予算の最適化問題を例に出した。勾配ブースティングを用いることで、要因分 解を行うことができる。また、最適化問題を解きやすくするために、正面からブラックボックス最適化問 題を解くのではなく、費用に単調制約を課した上で予測値を列挙することで、古典的な混合整数計画問題 として定式化できることを示した。

    3. 機械学習とはいえ、データには表れていない外部要因があるため、効果曲線を100%信じ切って最適化を 行うには、例え最適化問題が正しく解けていたとしても、効果曲線自体に不備がある可能性をぬぐい切れ ないため、数理最適化でペナルティ関数を定義することで、現実的に実行可能な範囲内で最適化結果を出 すことができることを示した。また、インターフェースの工夫によって、楽観的、保守的な結果を出し分 けられることを示した。 計画を目的に応じて出し分けられるようにし、最後は人手で意思決定することで、実務に接続できるよう にした。