LoginSignup
4
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-07-13

はじめに

これから記述するガイドが最終的に目指すのは、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説明性のセットアップ手順書」としても利用できることになります。

[2020-04-25] セットアップ手順修正

モデルの説明

モデルは回帰モデルとしてメジャーな、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」を選択します。

スクリーンショット 2019-07-13 12.47.20.png

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

スクリーンショット 2019-07-13 12.49.32.png

モデラーの起動

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

スクリーンショット 2019-07-13 12.47.31.png

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

スクリーンショット 2019-07-13 12.53.51.png

Modeler Flowによるモデル作成 step1

本ガイドの目的はSPSSの使い方ではないので、ここからの手順は省略した書き方にします。
より詳細な手順を知りたい場合は、別ガイドSPSSクラウド版で簡単機械学習を参照してください。

部品の配置

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

Import -> Data Asset

Field Operations -> Type

Modeling -> linear

スクリーンショット 2019-07-13 13.17.02.png

Data Assetの設定

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

スクリーンショット 2019-07-13 13.28.44.png

Typeの設定

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

スクリーンショット 2019-07-13 13.28.28.png

学習の実施

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

スクリーンショット 2019-07-13 13.20.28.png

Modeler Flowによるモデル作成 step2

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

部品の配置

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

Import -> Data Asset

Field Operations -> Filter

Outputs -> Table

学習済みモデルのコピー

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

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

スクリーンショット 2019-07-13 13.35.41.png

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

スクリーンショット 2019-07-13 13.35.53.png

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

スクリーンショット 2019-07-13 13.34.58.png

フローの完成

4つの部品を結線した後、Data Assetは事前にアップロードしたboston-10-test.csvと関連づけます。
Filterノードに関しては、下の図のような設定をします。これは、入力パラメータを全部カットして、$L-PRICEという予測値の項目のみを出力とすることを意味しています。

スクリーンショット 2019-07-13 13.46.47.png

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

スクリーンショット 2019-07-13 13.47.13.png

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

スクリーンショット 2019-07-13 13.47.24.png

2つめのフローの意味

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

スクリーンショット 2019-07-13 13.48.36.png

ここには

① 学習に使ったオリジナルのフロー
② 学習済みモデルを使って作った派生的なフロー

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

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

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

  • 入力で予測に不要な項目(PRICE)も入力値で定義しないとエラーになる
  • 出力に本来不要な入力項目も含まれてしまう

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

  • 入力が予測に必要な項目のみでいい
  • 出力は予測値の項目($L-PRICE)のみ

というWebサービスとして必要最小限の条件を満たしたシンプルなものになっていることがわかります。
それで、この2つめのフローをWebサービス化して、きれいな入力、出力インターフェイスを持つWebサービスとすることができるのです。(これは私もつい最近知ったことです。。。)

Webサービスの作成

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

モデルの保存

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

スクリーンショット 2019-07-13 14.23.58.png

下のような画面が出てくるので、Model Nameの欄を、「SPSS boston model」など、それっぽい名前に変更します。あとは全部デフォルト値で、右下のSaveボタンをクリックします。
ちなみに、上から2つめにBranch Terminal Nodeをもう一つの候補PRICEに変更すると、オリジナルの①のフローがWebサービス化されることになります。

スクリーンショット 2019-07-13 14.24.53.png

Webサービスの生成

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

スクリーンショット 2019-07-13 14.33.10.png

ここから先は普通のWastson Studioの使い方とまったく同じです。
「Deployments」タブをクリックして画面右側の「Add Deployment」のリンクをクリックします。

スクリーンショット 2019-07-13 14.36.10.png

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

スクリーンショット 2019-07-13 14.36.42.png

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

スクリーンショット 2019-07-13 14.39.56.png

Webサービスのテスト

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

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

① Testタブを選択
② JSONアイコンをクリックして入力形式をJSONにします
③ 事前にダウンロードしておいたboston-web-test.jsonをテキストエディタで開いて、全体をクリップボートにコピーし、③の場所に張り付けます
Predictボタンをクリック

スクリーンショット 2019-07-13 14.44.30.png

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

スクリーンショット 2019-07-13 14.44.55.png

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

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3