[レポート] Alteryxを使った数理最適化入門 – Alteryx Inspire 2018 #alteryx18
現地時間2018年06月04日〜2018年06月07日に米国アナハイムで開催されているAlteryxの年次カンファレンスイベント「Inspire 2018」。今回クラスメソッドからは計4人のメンバーが現地参加しています。
当エントリではイベント初日に行われたトレーニングセッション「Prescriptive Optimization」について、その内容をレポートしたいと思います。
目次
セッション概要
当トレーニングセッションの概要は以下の通りです。
Prescriptive Optimization
(数理最適化問題を解くためのツールの使い方入門)
登壇者(トレーニング講師):
Hoss Carroll
トレーニング概要:
In this very basic introduction to the optimization tool, learn about how a single tool, in conjunction with data preparation, can find the best possible outcome for your business problems.
(この非常に基本的な最適化ツールの紹介では、データ準備と組み合わせて単一のツールがビジネス上の問題に対して最良の結果を得る方法について学びます。)
セッションレポート
このトレーニングで使い方が学べるツールはなんと1つです!たった1つのツールでがっつり学ぶことがある、しかも概要にあるように"基本的な"となっているその正体は何者なのでしょうか?
それはPrescriptiveにあるOptimizationツールです。
これは数理最適化問題を解くためのツールなのですが、"数理最適化問題"とはがわかっていないと使いこなせないツールとなっています。 その数理最適化問題の基本的な部分も含めて学ぶことができるトレーニングとなっています。
なぜ最適化が必要なのか
最初に最適化が必要になる理由とデータ分析の種類分けについての解説となります。
最適化を行わない場合は、何をするのが適切なのかを推測で判断するしかなく本当にそれが最適であったのかはわかりません。 それに対して、最適化を行うことで確実にもっともよい解決策を見つけ出すことができます。
続いて、データ分析の種類とその役割を分類しています。
種類 | 役割 |
---|---|
記述的 | データの集約やデータマイニングで"何が起こったのか"を知ることができます |
予測的 | 統計モデルや時系列分析などによって"これから何が起こるのか"を知ることができます |
処方的 | 最適化やシミュレーションによって"何をすべきか"を知ることができます |
Optimizationツールでできること
Alteryxの数理最適化問題を解くツールであるOptimizationツールの使い方の解説です。
まず入力の方法としては以下の3つがあります。
- ツールの設定に直接入力
- ツールの設定でファイルを読み込む
- 他のツールの出力を入力として受け取る
ツールが対応している最適化問題は以下の3つになります。
- 線形計画問題
- 整数計画問題
- 二次計画問題
数理最適化問題の例
数理最適化問題とはどのようなものなのかを例題と共に提示します。
Google先生の力を借りて日本語にすると以下のような内容になります。
衣料品メーカーには750平方フィートの綿織物と1000平方フィートのポリエステルがあります。 ズボンのすべてのペアは、1平方フィートの綿と2平方フィートのポリエステルが必要です。 すべてのjacektには、1.5平方フィートの綿と1平方フィートのポリエステルが必要です。 製造上の制限により、1日に400枚以上のジャケットを製造することはできず、最低200ペアのパンツを製造する必要があります。 パンツの価格は$50、ジャケットは$40です。
これらの商品が最大の売り上げを得るためには、製造業者が店に与えなければならないパンツとジャケットの数はいくらですか?
最適化問題を解くためにはまずこれを数式に変換する必要があります。
最初に変数となる値を設定します。 ここでは、
- x : ズボンの数
- y : ジャケットの数
としています。
続いて、求めたいものを数式化します。 ズボンの価格は$50, ジャケットの価格は$40なので、それぞれの製造個数でx, yと合わせて以下の値を最大化するxとyの値を求めることになります。
[latex] 50x + 40y [/latex]
続いて、制約条件となる項目を取り出します。
コットンの繊維、ポリエステルの総量とズボン、ジャケットを1つ作るのに必要な量は決まっています。 それぞれの条件を数式化するとして制約条件を設けています。
また、ジャケットは400枚以上作れない、ズボンは200枚以上という制約もあります。
これらの条件を合わせると
maximize: [latex] 50x+40y \\ [/latex] s.t.: [latex] 2x + y \leq 1000 \\ x + 1.5y \leq 750 \\ 0 \leq y \leq 400 \\ x \geq 200 [/latex]
この条件を満たすx, yを求めることになります。
Optimizationツールの使い方
数式に落とし込んだこの問題をOptimizationツールにどのように設定するのかがここからの話の流れとなります。 前述の通り、Optimizationツールには3つの設定方法があるのでそれぞれでの解説となります。
手動で設定
ツールの設定項目でこれらを記述していく方法です。
まずは変数としてx, yがあることと、対象となる計算式を入れます。
続いて制約条件を順に加えていきます。 あとはこのワークフローを実行すれば、xとyの適切な値が求められます。
他のツールの出力を使う
続いて、他のツールの出力を使う方法で同じことをします。
Optimizationツールの各入力に必要な値が記載されたデータを与える形式となります。
ファイルから入力
同じことを実現するための最後のやり方は、これらの式を記述したファイルを読み込んで実行する方法です。
こちらのような形式でそれぞれの項目を記述してOptimizationツールの設定から読み込ませれば同様のことが実現可能となります。
関連リソース
最後にOptimizationツールをより深く学ぶための関連リソースの紹介がされました。
こちらはサンプルワークフローの紹介です。 Alteryx Designerがインストールされている環境であれば誰でも見ることが可能です。
続いては、ツールのヘルプです。 こちらも日本語対応してますので、気軽に確認できるものですね。
最後は、コミュニティにあるData Science Blogです。 こちらは英語の内容とはなりますが、なんでも揃うコミュニティはまさにAlteryxに関する情報源として大変素晴らしいですね。
おわりに
Alteryx Inspire 2018のトレーニングセッション「Prescriptive Optimization」のレポートでした。 ちょっとだけではありますが、数式も登場して難しく感じた人もいるかもしれません。 数理最適化問題は数式の形にさえ落とし込めればあとはAlteryxのOptimizationツールがよろしくやってくれるのですが、そのまでのプロセスが難しかったりするので興味を持たれた方はぜひそこにもチャレンジしてみてください。