SPSS Modeler ヒモトク
【リレー連載】わたしの推しノード –最強のラスボス「CPELXの最適化ノード」が予測の次の最終ステージで実力を解放
2020年11月04日
カテゴリー IBM Data and AI | SPSS Modeler ヒモトク | アナリティクス | データサイエンス
記事をシェアする:
日本情報通信(NI+C)の近澤です。
弊社は、SPSS Modelerを中心としたSPSS製品販売からトレーニング・分析業務定着化のサポートサービスを提供しております。特に最近では、各業界の企業様に対して、SPSS製品とデータベース・MA(マーケティング自動化)等の製品との組合せで一連の業務課題解決をご支援する活動に注力しております。 これらご支援の中では、SPSS Modelerから出力した予測結果に基づき、その先の「最適化」を行いたいというご要望を頂く機会が増えております。 一般的に「最適化」はSPSS Modelerに代表されるデータマイニングツールとは別のツールで実現することが必要ですが、SPSS Modelerでは、「最適化」を実現する為のノードが提供されています。 今回は、私の推しノードとして「最適化」をSPSS Modelerのストリーム内で実現できる「CPLEXの最適化ノード」をご紹介します。SPSS Modelerを別領域でも有効活用されたいユーザにとって、非常に便利で有用なノードであること間違いなしです。 まずは、「最適化」で何ができるのかわからないという方のために「最適化」の基本的な考え方とSPSS Modelerで利用可能な「CPLEXの最適化ノード」の活用イメージをご紹介します。
最適化とは?
線形計画法に代表される様な数学的問題を最適化問題といいます。最適化問題では、制約条件(ビジネスルールや課題)を満たす決定変数(何を決めたいか)の中で、目的関数(最大化・最小化の対象)を最大にする値を求めます。 これをビジネス活用することで、複雑な組合せの中から、制限や制約を満たした業務で有用な最適解を見つけ出すこと(=最適化)が可能です。 実際に「最適化」は、数多くのビジネスシーンで活用されています。
→※サントリーコミュニケーションズ様 テレビCM配置の最適化はこちら
運輸・交通: 車両配車計画、クルーシフト割・タスク割り当て
テレコム: ネットワーク収容計画、サポート人員シフト計画、人員ルーティング
製造 : 生産計画、在庫最適化、配送計画・ルーティング
金融 : 投資のバランス化、ローンの最適組み合わせ
小売・流通: 人員配置計画
メディア: 広告最適化
ここからは「最適化」の活用イメージをご紹介します。以下では、担当者のコストやスキル条件を加味して、シフト(担当)を決める際の例を挙げています。 例では、目的関数である合計コストが最も小さくなり、スキル条件も満たしていることを確認し、シフト(担当)を決めていますが、これが「最適化」の結果となります。
上の例は、非常にシンプルな最適化問題である為、人間でも直感的に解くことができます。 しかし、実業務では決定変数やルールの数が数百、数千となるため問題が複雑で人間では解けなくなります。そこでツールを利用することで、「最適化」を高速・効率的に実現し、ミス防止、属人性の排除が可能となります。
SPSS Modelerでも「最適化」ができる
冒頭に記載した通り、「最適化」はデータマイニングツールとは別のツールで実現することが一般的ですが、その代表的なツールはIBM Decision Optimization (CPLEX)です。 IBM Decision Optimization (CPLEX)では、「最適化」(決定変数・目的関数・制約条件)の定義に基づく数理モデル作成や「最適化」処理の実行ができます。機能等の詳細は、以下URLから参照可能です。
→※IBM Decision Optimization (CPLEX)の概要はこちら
また、IBM Decision Optimization (CPLEX)は、数理計画(MP)エンジンと制約プログラミング(CP)エンジンの2つのエンジンを持っており、幅広い最適化問題を超高速なパフォーマンスで対応可能な為、「最適化」を行う上で非常に優れたツールです。 SPSS Modelerでは、バージョン18.1からIBM Decision Optimization (CPLEX)のCommunity Edition利用が可能であり、SPSS Modelerの「CPLEXの最適化ノード」として提供されています。(Community Editionの制約等は、弊社・IBM社までお問合せください。)
「CPLEXの最適化ノード」で最適化を実行してみた
実際にSPSS Modelerの「CPLEXの最適化ノード」を使用して最適化を実行したいと思います。今回は、来店数予測の結果として定義した1ヶ月間の必要スタッフ・ジョブ数から、コストや制約条件を加味した最適なシフトパターンを「CPLEXの最適化ノード」で出力します。 「CPLEXの最適化ノード」は、レコード設定パレットから選択可能ですが、事前の入力データ準備と「CPLEXの最適化ノード」内での数理モデル(OPLモデル)作成が必要です。これら一連の流れを以下でご紹介します。
(1) 決定変数・目的関数・制約条件等を定義した入力データ準備
「CPLEXの最適化ノード」を使用した最適化処理の事前準備として、決定変数・目的関数・制約条件等を定義した入力データを準備し、SPSS Modelerへの読み込みが必要です。 以下が今回使用するデータイメージです。1ヶ月間のスケジュールと必要スタッフ・ジョブ数は来店数予測結果から定義できていると仮定し、「CPLEXの最適化ノード」でスタッフ(氏名)、開始時間、終了時間を割り当てる為の項目を決定変数として用意しています。 また、予算(人件費)600,000円を上限(可能な予算を最小化)とする為のデータを目的関数として用意しています。
続いて、スキル情報や勤務可能時間・希望時間のデータを制約条件として用意しています。これらデータにより、スキル条件や勤務店舗・勤務可能時間・週の上限日数を満たすだけでなく、可能な範囲でスタッフの勤務希望時間を考慮した最適なシフトパターンを「CPLEXの最適化ノード」から出力可能です。
SPSS Modelerへの読み込みは、入力パレットから使用データ形式にあわせてノードを選択ください。今回は、入力データがExcelの為、「Excelノード」を使用しています。 必要に応じて、後続ノードでデータ加工を実施し、「CPLEXの最適化ノード」内での数理モデル(OPLモデル)作成前のデータ準備が完了となります。
(2) 「CPLEXの最適化ノード」内での数理モデル(OPLモデル)作成
準備したデータを使用して、「CPLEXの最適化ノード」内での数理モデル(OPLモデル)を作成します。レコード設定パレットから「CPLEXの最適化ノード」を選択し、入力データの後続に接続します。 「CPLEXの最適化ノード」を開くとオプションタブ内にOPLモデルの作成画面が表示されます。 画面内「OPLモデル(M)」から、数理モデル作成が可能です。ここでは、コーディングが必要となりますが、IBM Decision Optimization (CPLEX)で作成する数理モデルは非常にシンプルなコードで作成可能な為、習得も容易です。 また、IBM Decision Optimization (CPLEX)の製品版等を利用中のユーザは、ローカルのOPLモデルを画面内「OPLモデルファイル(F)」から指定することも可能です。
また、数理モデル作成時は画面下部「入力データ(I)」、「出力(O)」指定が必要です。 画面下部「入力データ(I)」タブから、「データソース」のプルダウンで使用する入力データを選択し、「入力データに対応するOPLのタプルセット名(T)」から任意の名称を入力します。その後、「すべてのフィールドの適用」をクリックし、入力フィールドが表示されることを確認します。 同様に画面下部「出力(O)」タブから、出力に必要な定義を行います。
(3) 「CPLEXの最適化ノード」を使用した最適化処理の実行
これまでの手順で数理モデル作成が完了した為、最適化処理の実行が可能です。処理結果はSPSS Modelerのストリームからファイル出力等も可能です。 実際に「CPLEXの最適化ノード」を使用して実行した最適化処理の結果は、以下のイメージとなります。
今回は、スタッフ(氏名)、開始時間、終了時間といったシフトパターン最適化が目的でしたが、実際に最適化処理によりシフトが割り当てられていることが確認できます。
おまけ:最適化結果を「拡張のエクスポートノード」でビジュアライゼーション
SPSS Modelerでは、グラフ表示等のビジュアライゼーション機能も充実しており、新バージョンを中心にBIツール顔負けの表現も可能となっています。 このようなSPSS Modeler標準機能に加えて、R、Pythonと連携し、結果出力やビジュアライゼーションを行うことも可能です。それが「拡張のエクスポートノード」です。 「拡張のエクスポートノード」は、エクスポートパレット内から選択可能です。また拡張ノードは後続のリレー連載第22回でIBM千代田さんが解説される予定です。
今回は、最適化結果として出力したシフトをシフト表として出力します。「拡張のエクスポートノード」を開き、シンタックスにコード記述・実行することで結果が表示されます。
以下が実行結果です。ビジュアライゼーションの一例にはなりますが、「拡張のエクスポートノード」を使用することで、このような自由な表現での出力が可能です。
おわりに
今回は、私の推しノードとして「CPLEXの最適化ノード」を使用した最適化処理の実現をご紹介しました。 ご紹介した例では、「SPSS Modelerで来店数予測し、シフト案(スタッフ数等)を作成」→「最適化でシフトパターン決定」という流れになっておりましたが、予測から最適化までをSPSS Modelerストリームで全て実現できることで、複数のツールを使い分ける必要がなく、運用面等で非常に大きなメリットがあります。 また、最適化は複雑な組合せの中から、制限や制約を満たした業務で有用な最適解を見つけ出すことが可能な為、シフトパターン決定だけでなく、広い領域での活用が可能です。 コーディングが必要な為、一見すると敷居が高く感じますが、実際には習得も容易です。 最適化の活用や「CPLEXの最適化ノード」の利用を検討されている企業様に対して、以下の特別オファリングでご相談会・ハンズオンも提供しておりますので、お気軽にお問い合わせください。予測の次の最終ステージに進んでラスボスの実力を一緒に体験していただけると幸いです。
→※SPSS Modeler導入/最適化検討中の企業様への特別オファリング
次回のリレー連載はIBMの坂本さんがスーパーノードを説明されます。
近澤 喜史
日本情報通信株式会社(NI+C)
バリューインテグレーション本部 ソフトウェアテクニカルセールス部
→※日本情報通信(NI+C)のSPSS事例・サポートサービスサイト
Modelerデータ加工Tips#05-@OFFSETで車両の時刻と座標から速度や距離を得る
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
みなさんこんにちは。株式会社JALエンジニアリングの竹村 玄と申します。 弊社はJALグループの航空機材全般の点検・整備を行う整備会社で、2016年よりSPSS Modelerを使って故障予測分析に取り組んでいます。故障 ...続きを読む
Modelerデータ加工Tips#04-行列入換で適合率PrecisionやF1スコア・MCCを求める
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
みなさんこんにちは。 Western Digital®の小杉と申します。 弊社は米国に本社を持つHDD, SSD, Flash Memoryを主たる製品とする開発・製造・販売の会社です。弊社の出荷台数から考えますと、皆様 ...続きを読む
Modelerデータ加工Tips#03-欠損値に直前の値を代入または線形補間する
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
みなさん、こんにちは。株式会社ビデオリサーチの田村玄です。 私は、学生時代も含めると約20年、SPSS Statistics, SPSS Modelerを使い続けています。当社はメディアリサーチを生業としておりますが、私 ...続きを読む