PyData.Tokyo meetup #13 数理モデリングから始めるPython数理最適化
数理モデリングから始めるPython数理最適化 に参加してきた。
メモを残しておく。
数理モデルとは?
モデルとは?
現象の模型
現象を、仮定と近似、捨象をした結果が数理モデルであることを忘れてはならない
過程:取り扱う問題は数理モデルで説明できる
近似:ある要件を特定の数式で表現する
捨象:ある要件を無視する
PuLPを使って数理モデリング入門
数理最適化とは?
ある条件に関して、最も良い元、利用可能な集合から選択すること。
例)線形計画法
解くための仕組み
MPS/LPファイル
- 線形計画問題を記述しているファイル
- これをソルバーに突っ込む。
- モデリング言語、データによって作成される。
PuLPとは
モデリング言語。
ソルバーはCPCが用いられることが多い。
数理最適化を構成する部品
- パラメータ:モデルを構成する係数・定数
- 変数:決定したい値
- 目的関数:最適化したい指標の記述
- 制約式:変数間の条件・範囲の記述
例)連立一次方程式を解く
例)線形計画問題
ケーススタディ
問題が解けないこともある。
解けるように問題を設定してあげることが大切。
土木工事の最適化問題。
解けなかった。
制限となっている予算制約を緩和してあげることで
- サービス理解
- 問題設定
- 数理モデリング
- モデリング言語で実装
- 数値実験&解の検証
- ここで暗黙知が出てきて、再度やり直す
問題設定:グルメ多人をフォローして東京のお店を網羅する
STEP 1 ユーザー候補、お店候補の抽出
STEP 2 ユーザーの選抜とお店の網羅
最大被覆問題
数理最適化がいいのは、PDCAを回しやすいところ。
追加パラメータを追加しやすい。
目的関数で、投稿の質・人気店の考慮を入れる。
数理最適化だけで綺麗にモデルを組めること、解けることは少ない。
入力データをどうスコアリング、レーティングするかが肝だったりする。
モデリング時間は安定。
求解計算時間は徐々に大きくなる傾向があるが、不安定
整数計画問題
数理モデリングのお話は初めて聞いたが、興味は湧いた。一言で言えば、データに対して、達成したいことや制約を定めると、解いてくれる(もしくは解けない)ということなのかな。機械学習との違いはあまりわかってない。