Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OptimizationNight~機械学習と数理最適化の融合~
Search
hidenari uoi
October 06, 2023
Science
0
630
OptimizationNight~機械学習と数理最適化の融合~
OptimizationNightで発表した内容です。
hidenari uoi
October 06, 2023
Tweet
Share
Other Decks in Science
See All in Science
拡散モデルの概要 −§2. スコアベースモデルについて−
nearme_tech
PRO
0
580
Machine Learning for Materials (Lecture 8)
aronwalsh
0
410
【人工衛星】座標変換についての説明
02hattori11sat03
0
110
Mechanistic Interpretability の紹介
sohtakahashi
0
350
Science of Scienceおよび科学計量学に関する研究論文の俯瞰可視化_LT版
hayataka88
0
940
The thin line between reconstruction, classification, and hallucination in brain decoding
ykamit
1
950
Coqで選択公理を形式化してみた
soukouki
0
200
【健康&筋肉と生産性向上の関連性】 【Google Cloudを企業で運用する際の知識】 をお届け
yasumuusan
0
340
(Forkwell Library #48)『詳解 インシデントレスポンス』で学び倒すブルーチーム技術
scientia
2
1.4k
私たちのプロダクトにとってのよいテスト/good test for our products
camel_404
0
180
DEIM2024 チュートリアル ~AWSで生成AIのRAGを使ったチャットボットを作ってみよう~
yamahiro
3
1.3k
(2024) Livres, Femmes et Math
mansuy
0
110
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
KATA
mclloyd
29
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Side Projects
sachag
452
42k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
How to train your dragon (web standard)
notwaldorf
88
5.7k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Writing Fast Ruby
sferik
627
61k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
Optimization-Night 機械学習と数理最適化の融合を考える ~広告予算配分を例に~
自己紹介 • 名前:魚井英生 • 所属:ブレインパッド • 役職:シニアリードデータサイエンティスト • ブレインパッド社における役割:数理最適化、機械学習を組み込んだアプリケーション開発プロジェクトのリーダー。 •
これまでの経験 配送計画の最適化 生産計画の最適化 広告予算の最適化 実験配合の最適化 需要予測+発注の最適化 ユーザーのスコアリングシステム などなど。 • 趣味:卓球
目次 1. はじめに~機械学習と数理最適化の融合の分類について考えてみた~ 2. 広告予算の配分計画(基礎編) 3. 広告予算の配分計画(応用編) 4. まとめ
1. はじめに~機械学習と数理最適化の融合の分類を考えてみた~
機械学習(予測)と最適化(意思決定)の活用の大切さ 機 最 明日70%の確率で雨が降ります。 機械学習(予測)だけでは、「で、どうする?」で終わる。 事故率 移動時間 車 20 20
歩き 20 60 事故率 移動時間 車 60 30 歩き 20 60 降水確率20%のとき 降水確率70%のとき 車と歩きのどちらを選択するべきかを事故率と移動時間の関係から、最適化を通じて、 意思決定できる。事故を避けたいなら、歩き。移動時間を短くしたいなら、車。 +
実務例1~需要予測に基づいた、発注計画~ 製品の出荷量を予測して、必要分を発注します。これにより卸倉庫の在庫量を削減します。 機 最 + 卸倉庫 メーカーA 小売A 商品xの1日後、2日後の出荷量を予測。 商品x発注リードタイムが7日なので
前もって発注。 卸倉庫 <特徴量> ・商品xの前年同月実績 ・商品xのカテゴリ ・予測される日の曜日 <制約> ・商品xの発注リードタイム ・倉庫のキャパシティ ・1回の発注の最大量
実務例2~消費量予測に基づいた、在庫配送計画~ 機 最 + 軒先の在庫の減り具合を予測して、必要な量を良いタイミングで配送します。 軒先A 軒先B 軒先A 消費量予測 配送ルートの作成
<特徴量> ・軒先Aの前年同月消費量 ・軒先Aのカテゴリ ・予測される日の曜日 <制約> ・時間指定 ・トラックのキャパシティ ・トラックの車格制限
一見、機械学習と数理最適化の融合に見えるが、 • 予測問題と最適化問題を分割できる • 予測値が機械学習器である必要がない • 予測ロジックが最適化問題の定式化に一切影響を与えない • 機械学習の汎化誤差の最小化と、最適化の目的関数の最大化が独立の解ける。 疎な融合問題
定式化で見る、疎な融合問題 発注計画、在庫配送ともに、予測値しか定式化に現れない。 商品pの日tの在庫量 商品pの日tの需要量 (発注:出荷量 配送:消費量) 商品pの日tの補給量 (発注:入庫量 配送:供給量) 予測値が機械学習である必要がない
実務例3~広告効果予測に基づく、予算配分計画~ 過去実績から広告効果を予測して、未来の予算配分を最適化します。 機 最 + 費用 リターン 費用 リターン リターン
費用 広告A 広告A 広告B <特徴量> ・広告Aの前年同月リターン ・広告Aのカテゴリ ・予測される月 <制約> ・全体予算のキャパシティ ・広告カテゴリの キャパシティ
実務例4~特性値予測に基づく、実験計画~ 過去実績から特性値効果を予測して、次の実験の配合を最適化します。 機 最 + 原料 配合 特性 原料 配合
特性 <特徴量> ・各原料の配合比 ・原料Aのカテゴリ ・原料Aの保持する成分 <制約> ・原材料全体の原価のキャパシティ ・原材料の配合比率の上下限
これらの例は、機械学習と数理最適化の融合か? • 予測問題と最適化問題を分割できない • 機械学習器の選択が、最適化問題の定式化に大きな影響を与える。 密な融合問題
定式化で見る、密な融合問題 機械学習器自体が、定式化に現れる。 機械学習器の選択が定式化に大きく影響する。 線形モデル→線形計画問題 勾配ブースティング→ブラックボックス最適化問題
融合問題の分類まとめ 1. 疎な融合問題 2. 密な融合問題 集合分割、被覆問題 最適化の 難しさ 過去の知見 十分にある。
・どのソルバーどのモデリングに適しているか ・どの程度の規模まで解けるか 不十分。 ・どのソルバーがどういった観点で良いか、 まだわからない。 ・どの程度の規模まで解けるか 現実問題の例 配送計画、生産計画、 シフト計画、発注計画 広告予算計画、ダイナミックプライシング 実験配合計画、商品の条件補正 疎な問題は過去の知見が十分あるが、密な問題はこれから。 最適化に対する 機械学習の 役割 ブラックボックス最適化 入力データ 目的関数、制約条件
2. 広告予算の配分計画(基礎編)
広告予算の配分計画問題とは? 費用とリターンの関係から、来月、再来月の予算配分を決めます。 2022年の実績を使って、2023年の予算計画を立てるにはどうすれば良いでしょうか? 同じ費用でも、効果が月によって違う。正し く効果を見積もるにはどうすれば良いか? 要因分解と言えば、機械学習! 費用 リターン 2022年10 月
2022年11 月 2022年12 月 2022年9 月 2022年8 月 12月はイベントを打っていたので、 同じ費用でも11月より大きい。 100万 200万 300万
勾配ブースティングによる単調制約と交互作用を入れた要因分解 費用に対して、リターンが減少することは考えにくいため、単調制約を入れた勾配ブースティングを用いる ことで、交互作用を入れてかつ費用の増加に対して、リターンが増加するようにできます。 広告メニュー 日付 費用 カテゴリ(大) 月 祝日数 イベントフラグ
前年同月リターン 当月リターン 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 説明変数 (意思決定) 説明変数 (外部要因) 目的変数 交互作用・・・イベントがあるときに費用とリターンの関係といった組み合わせ効果 単調制約・・・費用が上がると、リターンが上がるといった効果
線形モデルだと交互作用効果を取り入れられない 後続の最適化を意識するあまり、線形方程式で学習してしまうと、「イベントありでかつ前年リターンが 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 + ・・・ 線形ソルバーで解こうと意識しすぎるあまり、線形回帰してしまう(交互作用が得られない)。
Shapley-Valueによる要因分解 学習した勾配ブースティングに対して、shapley-valueを見ることで、費用に対する効果を分解できます。 同じ費用でも、shap値で見ると、上手く要因分解できれば効果が等しくなります。 費用 リターン 2022年10 月 2022年11 月 2022年12
月 2022年9 月 2022年8 月 費用 リターン のshap値 2022年10 月 2022年11 月 2022年12 月 2022年9 月 2022年8 月 外部要因で分解され、ギャップが埋まる。 (上手くいけば)
最適化に進む~予測値の列挙による、費用対効果曲線の作成~ 予算配分したい月に対して、予測値を列挙することで、費用対効果曲線を描くことができます。この費用対 効果曲線は、配分したい月の要因を取り込んだ上で描くことができます。 リターン 費用 2023年1月 (イベントなし) 広告メ ニュー 日付
費用 イベントフラグ 前年度 リターン A 2023年1月 100 0 230 A 2023年1月 110 0 230 A 2023年1月 120 0 320 配分月に対するデータマート 予測値を列挙 交互作用を含めた外部要因を取り込んで、費用対効果曲線の作成 ・ ・ ・
費用対効果曲線の外装補正 勾配ブースティングは決定木をベースにしているため、費用の増加に対して、リターンがストップします。 これに対処するために、逓減曲線でフィッティングすることで、外装領域に対して増加分を得るこができま す。 リターン 費用 実施したことがない領域は効果が ストップする。 階段な効果の増加と、 外装領域における効果の一定化
を避けることができる。 マーケターの間隔とも合致。
混合整数計画(区分線形近似)による定式化 配分月に対して、予測カーブが得られた後は、区分線形近似を用いることで、混合整数計画問題として定式 化できます。このように、ブラックボックス最適化問題を回避することができます。 リターン 費用 z_k z_{k+1} y_k どれか1つの刻み点が採用される (Type1-SOS制約)
広告pの月tにおける費用 <決定変数> :広告Aの月tに刻み幅kを採用する場合に1 <従属変数> <必須制約> 広告pの月tにおける リターン
3. 広告予算の配分計画(応用編)
機械学習の予測を100%信用できない 外部要因を取り込めているとはいえ、データ化れていない外部要因があるため、費用対効果曲線 を100%信用できない。 リターン 費用 広告A 広告B 予測精度が100%に到達することは 現実的に不可能。どこまで信じられるか。 最適化結果
過去実績 ・・・ マーケターからすると受け入れがたい、、 広告C
機械学習と数理最適化の両サイドから追及する 外部要因を増やして、精度を高めることは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)
配分比率以外の評価指標、配分の傾きに注目する 配分比率以外にも、配分の傾きに注目することも重要です。傾きは、費用対効果の効率性の指標です。 広告A リターン/費用の の分布 リターン 広告A 実績の傾きの範囲 費用 効率が良すぎる(悪すぎる)
結果を防ぐ
混合整数計画による、評価指標の四分位範囲から逸脱を表現する定式化 指標の値が四分位範囲を逸脱したかどうかのバイナリ変数と、逸脱値を表す非負の連続変数を用いることで 定式化することができます。 有効範囲指標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。
【参考】分岐する制約が多い場合は、ヒューリスティックスソルバーが見やすい。 分岐が多い制約は混合整数計画だと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}", ) ・ ・
辞書式最適化による優先度付きの多目的最適化 目的関数が増えてきた場合には、辞書式最適化を用いることで、優先度を付与した上で多目的の最適化が可能。 (パレート解を列挙する必要がない。) 1が変わらないなら、2を最適化 2が変わらないなら、3を最適化 ・ ・ ・ 優先度ごとに最適化が可能。 目的
優先度 配分比率の過去実績との逸脱を最小化 1 配分効率(傾き)の過去実績との逸脱を最小化 2 リターンを最大化 3
インターフェースによる工夫によって、計画の出し分けを可能に 目的関数の優先度付けを行えるようにすることで、楽観的、悲観的な最適化結果を出し分けることが可能になり ました。それらの結果を比較し、最終的にはマーケター(人手)による意思決定を推奨しました。 楽観的な計画(機械学習を信じた計画) 保守的な計画(機械学習を信じすぎない計画) マーケター 楽観的な計画・・・リターンの最大限の余地を知れる。 保守的な計画・・・現実的に実行できる。感覚と合致する。 目的 優先度
配分比率の過去実績との逸脱を最小化 3 配分効率の過去実績との逸脱を最小化 2 リターンを最大化 1 目的 優先度 配分比率の過去実績との逸脱を最小化 1 配分効率の過去実績との逸脱を最小化 2 リターンを最大化 3 最後は人手で判断
4. まとめ
まとめ 1. 数理最適化と機械学習の融合を疎と密に分けて分類してみた。疎な融合問題は、機械学習が与える影響は 少ないが、最適化問題自体が難しい。一方で密な融合問題は、最適化問題は簡単だが、機械学習器の選択 が定式化に影響を大きく及ぼす。 2. 密な融合の一例として広告予算の最適化問題を例に出した。勾配ブースティングを用いることで、要因分 解を行うことができる。また、最適化問題を解きやすくするために、正面からブラックボックス最適化問 題を解くのではなく、費用に単調制約を課した上で予測値を列挙することで、古典的な混合整数計画問題 として定式化できることを示した。
3. 機械学習とはいえ、データには表れていない外部要因があるため、効果曲線を100%信じ切って最適化を 行うには、例え最適化問題が正しく解けていたとしても、効果曲線自体に不備がある可能性をぬぐい切れ ないため、数理最適化でペナルティ関数を定義することで、現実的に実行可能な範囲内で最適化結果を出 すことができることを示した。また、インターフェースの工夫によって、楽観的、保守的な結果を出し分 けられることを示した。 計画を目的に応じて出し分けられるようにし、最後は人手で意思決定することで、実務に接続できるよう にした。
機械学習×数理最適化×インターフェースの補完関係の大切さ 機械学習 数理最適化 交互作用を取り込んだ上で 要因分解できる。 機械学習で作り切れない特徴量による 予測誤差を、数理最適化の ペナルティ関数で補完。 インターフェース 制約条件のON/OFFおよび、
目的関数の優先度付けを実行前に設定できる。 真正面から難しい問題に取り組むのも良いが、各モジュールの補完関係を駆使することが重要に思います。