全4004文字
PR

 コンサルティングファームで働く現役データサイエンティストの視点から、ビジネスに使える最新のアルゴリズムを選んで紹介する本特集。今回は10種類目のアルゴリズムとして「最適化計算」を取り上げる。また選外として、最近話題になることが多い「自然言語処理」(Natural Language Processing、NLP)についても触れておこう。

■本連載で取り上げるアルゴリズム10選
分類アルゴリズム取り上げる回
教師なし学習k-means第1回
教師なし学習主成分分析第1回
教師なし学習潜在クラス分析第1回
教師あり学習LightGBM第2回
教師あり学習ベイズモデリング第2回
因果推論Causal Forest第2回
時系列分析Prophet第3回
時系列分析ベイズ構造時系列モデル第3回
時系列分析Temporal Fusion Transformer第3回
最適化計算混合整数最適化今回
本特集の第3回: 「時系列分析」にはグーグルやフェイスブックが考案した最新手法がお薦め

最適化計算

 これまで解説してきた教師なし学習や教師あり学習、因果推論、時系列分析は、データに基づいてビジネスの構造を明らかにするアルゴリズムだった。それに対して今回紹介する最適化計算は、自社の戦略や施策を最適化するニーズに応えるアルゴリズムだ。

 限られたコストやリソースをどのように割り振れば、最も効率的な行動になるのか。最適化計算はそのようなビジネス計画の立案に使用する。代表的な例としては営業・配送などの最適ルート計算や、製造に際してのリソースの割り振りなどがある。

 今回は最適化計算のアルゴリズムとして「混合整数最適化」を紹介する。なおこれまで紹介してきた9種類のアルゴリズムはいずれも機械学習に分類されるが、最適化計算は機械学習ではない。またこれまで紹介したアルゴリズムについては、データサイエンティストではない現場のビジネスパーソンが自ら使うことを想定していた。しかし最適化計算については、ビジネスパーソンが自ら実装する必要性は少ないだろう。学習コストが高い割に、それほど頻繁に使うわけではないからだ。社内外のデータサイエンティストと連携するなど、専門知識がある人のノウハウも生かしながら使うことをお薦めする。

混合整数最適化

ポイント評価
簡便性★☆☆
汎用性★★☆
データ取得性★☆☆
可読性★☆☆

 混合整数最適化は整数と実数の両方が含まれる「線形計画」問題であり、制約条件のある中で、複数の変数の最適な組み合わせを見つけるアルゴリズムだ。

 似た手法として数十年前から使われる「整数計画法」があるが、こちらは整数しか取り扱えない。しかし実際のビジネスの世界においては、整数と実数の両方を含んだ問題が多い。例えば配送個数(整数)と配送距離(実数)から最適な配送計画を立案する問題などだ。整数と実数の両方を含むことで最適な組み合わせを見つけるのが難しくなる。この問題に対応するのが、混合整数最適化のアルゴリズムだ。

 最適解を求める考え方はシンプルで、初期の設定(変数の組み合わせ)から出発し、その周辺でより良い解を見つける。次に新しく見つかった解の周辺で、さらに良い解を見つけようとする。これらのプロセスを徹底的に繰り返すことによって、最適な解を見つけていく。計算量が莫大になるため、現実的な速度で解を得るために分枝限定法などの手法が用いられる。

 Pythonを使って手軽に最適化問題を記述するためのフリーのライブラリーとして「PuLP」がある。本来は専用のプログラミング言語で書かなければならない最適化問題を記述する手助けをしてくれる。

 最適化問題を解く流れは2段階だ。

ステップ1. ツール指定のフォーマットで解きたい問題を記述する(プログラムを記述)

ステップ2. ツールに読み込ませて解を求める

 PuLPを使うことで記述しやすくなるとはいえ、ステップ1のプログラミングは癖が強くバグが混じりやすいため練習が必要だ。また、結果に違和感がある時も何が原因なのか特定する方法がなく、自分で考える必要があるため、専門知識が求められる。

ビジネスの課題を最適化問題に落とし込むのが難題

 ビジネス現場において「リソース割り当ての最適化」に属する課題は多々あるが、実際のところビジネス課題を最適化問題に落とし込んで解けるケースはそれほど多くない。最適化問題の計算は難しく「最適化問題として解ける形」が限定されているからだ。

 この「形」にビジネス課題をうまく当てはめないと解けないため、簡便性の評価は下げた。逆にうまく「形」に当てはめることができれば、研究された計算アルゴリズムを使うことで非常に効率よく問題を解ける。

 最適化問題で著名なのは「物流における配送最適化」だが、これは一般のビジネスパーソンからすると、大きすぎて扱いづらい問題である。その他には、業務時間内におけるタスク実行のスケジューリング問題や、特定システム内で使用する機器の最適化の問題、鉄道の運転計画や自動車の交通計画の立案などで活用される。これらの問題は、通常のビジネスで活用するというよりは、やや規模の大きな問題である。業務に生かせるくらいコンパクトな問題は限られるため、汎用性の評価も1つ落としている。