Edited at

Watson StudioのSPSS Modelerを使って回帰モデルをWebサービス化する


はじめに

これから記述するガイドが最終的に目指すのは、Watson Studio上のSPSS Modeler Flowを使って作った回帰モデルを、OpenScaleの管理対象にして、更に説明性の機能のセットアップをすることです。

そのため、次の3つのステップに分けてそれぞれの手順を別記事として解説します。


  1. Watson StudioのSPSS Modelerを使って回帰モデルをWebサービス化する

  2. 上記WebサービスをPython FunctionとしてWatson Machine Larningに登録する リンク

  3. 2.の結果登録したPython Function(回帰モデル)をOpenScaleの管理対象とする リンク

2.と3.の組み合わせによって、任意の機械学習モデルがPythonから呼出し可能であれば(この条件は機械学習モデルがPublicからアクセス可能なWebサービスになっていれば自動的に成立します)OpenScaleの管理対象にできることを意味しています。

つまり、2.と3.の組み合わせだけみれば「Python Functionを利用したOpenScale説明性のセットアップ手順書」としても利用できることになります。


モデルの説明

モデルは回帰モデルとしてメジャーな、boston datasetを利用します。

データセットの意味については、ググれば沢山出てきますが、例えば Scikit-learnで機械学習(回帰分析)などを参考にしてください。


データ準備

これからのガイドでは以下のデータを利用します。必要に応じて事前にダウンロードしておきます。

ファイル名
リンク
目的

boston-all.csv
boston-all.csv
SPSSモデル学習用

boston-10-test.csv
boston-10-test.csv
SPSSモデルテスト用

boston-web-test.json
boston-web-test.json
Webサービステスト用

flow-step1
spss-boston-step1.str
(参考) SPSS フローファイル(step1)

flow-step2
spss-boston-step2.str
(参考) SPSS フローファイル(step2)


環境準備

IBM Cloud上で、Watson Studioのプロジェクトが作成済みで、Watson Machine Lerningとの関連づけも済んでいる必要があります。

具体的な手順は別記事 Watson Studioセットアップガイド(ライトアカウント可) を参照してください。

手順書でオプションとなっている機能のうち、Machine Learningは必要ですが、Sparkは不要です。


CSVファイルのアップロード

事前にダウンロードした2つのCSVファイルboston-all.csvboston-10-test.csvをWatson Studio上にアップロードします。

Watson Studioのプロジェクト管理画面から、「Add to project」->「Data」を選択します。

下のような画面が右側に出てくるので、2つのファイルをdrag and dropでアップロードします。


モデラーの起動

Watson Studio管理画面から「Add to project」->「Modeler flow」を選択します。

下のような画面になるので、名称だけ適当に設定して、後はデフォルト値のまま、画面右下の「Create」ボタンをクリックします。


Modeler Flowによるモデル作成 step1

本ガイドの目的はSPSSの使い方ではないので、ここからの手順は省略した書き方にします。

より詳細な手順を知りたい場合は、別ガイドSPSSクラウド版で簡単機械学習を参照してください。


部品の配置

次の3つの部品を配置し、結線します。

Import -> Data Asset

Field Operations -> Type

Modeling -> linear


Data Assetの設定

先ほどアップロードしたboston-all.csvと関連づけます。


Typeの設定

項目のうち、一番上のPRICEのRoleをTargetにします。


学習の実施

「Run」アイコンをクリックして学習を実施します。下の図のようになっていれば学習完了です。


Modeler Flowによるモデル作成 step2

これで予測モデルとして動作するフローは完成したのですが、Webサービス用に最適化した2つめのフローを作成します。


部品の配置

次の3つの部品を追加します。

Import -> Data Asset

Field Operations -> Filter

Outputs -> Table


学習済みモデルのコピー

次の操作で学習済みモデルのコピーを作ります。

学習済みモデル(オレンジの方)にマウスをあわせてコンテキストメニューからEdit->Copy

白いキャンバスにマウスをあわせてコンテキストメニューからPaste

この段階で、次の図のようになるはずです。


フローの完成

4つの部品を結線した後、Data Assetは事前にアップロードしたboston-10-test.csvと関連づけます。

Filterノードに関しては、下の図のような設定をします。これは、入力パラメータを全部カットして、$L-PRICEという予測値の項目のみを出力とすることを意味しています。

設定が終わったら再度「Run」アイコンをクリックします。うまくいくと次のような画面になるので、テーブルの内容を確認します。

下のような10行1列のデータになっていれば成功しています。


2つめのフローの意味

下に完成したフロー図を添付しました。

ここには

① 学習に使ったオリジナルのフロー

② 学習済みモデルを使って作った派生的なフロー

の2つのフローがあります。Modeler Flowを使ったWebサービスを定義するときには、


  • 入力はImport Node

  • 出力は一番右の末端のノード

というルールがあります。このため、①のフローを使ってWebサービスを定義すると、


  • 入力で予測に不要な項目(PRICE)も入力値で定義しないとエラーになる

  • 出力に本来不要な入力項目も含まれてしまう

という結果になってしまいます。これに対して②のフローをWebサービス化すると、


  • 入力が予測に必要な項目のみでいい

  • 出力は予測値の項目($L-PRICE)のみ

というWebサービスとして必要最小限の条件を満たしたシンプルなものになっていることがわかります。

それで、この2つめのフローをWebサービス化して、きれいな入力、出力インターフェイスを持つWebサービスとすることができるのです。(これは私もつい最近知ったことです。。。)


Webサービスの作成

それでは、いよいよWebサービスの作成を行います。


モデルの保存

最初のステップは、モデルの保存です。Flowの編集画面で、Tableアイコンにマウスをあわせてコンテキストメニューを表示し、Save branch as a modelを選択します。

下のような画面が出てくるので、Model Nameの欄を、「SPSS boston model」など、それっぽい名前に変更します。あとは全部デフォルト値で、右下のSaveボタンをクリックします。

ちなみに、上から2つめにBranch Terminal Nodeをもう一つの候補PRICEに変更すると、オリジナルの①のフローがWebサービス化されることになります。


Webサービスの生成

モデルの保存までできたら、Watson Studioのプロジェクト管理の画面に戻り、Watson Machine learning modelsを確認します。今保存したSPSS boston modelが一覧に含まれているはずなので、そのリンクをクリックします。

ここから先は普通のWastson Studioの使い方とまったく同じです。

「Deployments」タブをクリックして画面右側の「Add Deployment」のリンクをクリックします。

「SPSS boston web service」など適当な名前を入れて、「Save」をクリックします。

下の画面に遷移するので、ブラウザをリフレッシュして、ステータスを確認します。ステータスが下のようにDEPLOY_SUCCESSになっていればWebサービスが完成してます。


Webサービスのテスト

Watson Machine Learningで持っている簡易テスト機能を利用して、Webサービスのテストを実施します。そのため、上の画面の左側のリンクをクリックしてください。

Webサービスの管理画面になったら

① Testタブを選択

② JSONアイコンをクリックして入力形式をJSONにします

③ 事前にダウンロードしておいたboston-web-test.jsonをテキストエディタで開いて、全体をクリップボートにコピーし、③の場所に張り付けます

Predictボタンをクリック

下の図のように結果が帰ってくれば、Webサービスのテストに成功しています。

お疲れ様でした。

これで、三部作シリーズの第一部である、「Watson StudioのSPSS Modelerを使って回帰モデルをWebサービス化する」は完了したことになります。