SPSS ModelerのフローをWatson Studioで動かす

# SPSS Modelerのフローを Watson Studio/Data Science Experience(DSX)で動かしてみます

SPSS Modelerのフローを稼働させる環境として、DSX上も可能となりました。

SPSSのフローに<b>大量データをインプットした場合の分析エンジン</b>として利用することはもちろんのこと、データサイエンス関連の機能が満載のDSXを活用して<b>SPSSのフローのアセット管理やデータ管理</b>も実現できます。

ここでは SPSS Modeler で作成したフローをDSX上で動かす手順を記載いたします。SPSS Modelerをご利用されている方は、「DSX上でもフロー実行できるのね」 くらいの気持ちでさらっと読むだけで大丈夫です。

`この記事は2018年3月4日に記載したものであり、現時点DSX上でのフロー機能はベータ版となっております。また今後画面が変更されることがあるかもしれませんのでご理解ください。`

### 参考記事など

DSXのフロー機能についてはこちらの記事も参照してください。
・[「Watson Machine Learning」でSPSS Modelerみたいな「Flows」を使ってみた](https://qiita.com/ishida330/items/f36c6206637fbc97cf07)
・[「DSXL」のSPSS Modelerで故障予知](https://qiita.com/kawada2017/items/f245df00850f3da54b71)

DSXやSPSS Modelerについてはこちらを参照ください。
・[Data Science Experience](https://www.ibm.com/jp-ja/marketplace/data-science-experience)
・[SPSS Modeler](https://www.ibm.com/jp-ja/marketplace/spss-modeler)

ちなみに両方とも<b>無料で</b>試すことができます。

## 手順

SPSS ModelerのフローをDSXで動かす手順は以下の通りになります

1. SPSS Modeler でフローを作成
2. サンプルデータでモデルを作成し、動作を確認
3. SPSS Modeler のフローをエクスポート
4. DSX 上にフローをインポート
5. DSX 上にモデル作成用のインプットデータをインポート
6. DSX 上でモデル作成＆検証

今回利用した Modeler の環境は v18 on MacOS Sierra になります。
DSXは IBM Cloud 上のものを利用しております。

## シナリオ
ある人が慢性腎臓病(chronic kidney disease)かどうかを判定する機械学習モデルを作ります。結果はYES/NOなので「分類」(Classification)の問題です。

データは以下のようなCSVを分析し、一番右側の「class」フィールドの値が「ckd(chronic kidney disease)」か「notckd」かを予測することになります。
※以下の表の抜粋は全て「ckd」ですが・・・。

<img width="1128" alt="スクリーンショット 2018-03-04 15.20.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/1c9259a2-70c7-78a0-dc9f-871c485773d4.png">


ネタはDSX上のサイトのこちらになります。
[Tutorial: Build a predictive analytic model to determine whether a person has chronic kidney disease by using IBM Watson Machine Learning and the Flow Editor](https://datascience.ibm.com/docs/content/analyze-data/ml-example-kidney-disease-flow.html)

## 0.データ準備

[WML-KidneyDiseaseTutorial](https://github.com/IBMDataScience/WML-KidneyDiseaseTutorial)からClone/Downloadしてzipを解凍します。filesディレクトリーにchronic_kidney_disease_full.csvができます。


## 1. SPSS Modeler でフローを作成

以下のような感じでSPSS Modelerでワークフローを作成します。

<img width="547" alt="スクリーンショット 2018-03-04 15.09.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/fc3aa190-e3eb-82d3-e550-f9252d07f50a.png">

「入力」の箇所はcsvファイルをそのまま画面にドラッグ＆ドロップすれば良いです。
「テーブル」は参考のために付けました。

「データ区分」のノードでモデル作成データとテストデータに分類しますが、
以下のように「データ区分フィールド」や「ラベル」は英語表記にしてください。
(DSX上での文字化けを避けるためです。動作は日本語でも問題ありません）

<img width="500" alt="スクリーンショット 2018-03-04 15.10.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/2b5e0cf8-d002-687f-5e42-717f41173218.png">

「データ型」は左がデフォルトの設定でしたが、右側のように変更しました。
<img width="880" alt="スクリーンショット 2018-03-04 15.17.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/4784f5c8-6b75-08c1-a65b-442c16fd9a2f.png">

モデル作成は「C5.0」としました。

## 2. サンプルデータでモデルを作成し、動作を確認

「class」を実行すると、モデルが作成されます。
その後、「精度分析」も以下のオプションで追加します。

<img width="400" alt="スクリーンショット 2018-03-04 15.24.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/cad36cd5-690c-647b-367f-5538976766b1.png">

以下のようなフローと精度分析結果になります。

<img width="638" alt="スクリーンショット 2018-03-04 15.26.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/587cbf1a-7dd5-e40c-d462-950a6de555d6.png">

<img width="300" alt="スクリーンショット 2018-03-04 15.29.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/76b18f19-6910-62f4-085b-afafb89cb0de.png">

## 3. SPSS Modeler のフローをエクスポート

「ファイル」-「ストリームを保存」からストリームを適当な名前でPCに保存します。
ここでは「Kidney.str」として保存します。

## 4. DSX 上にフローをインポート

DSX上でインポートいたします。

DSXの画面上の「Tools」-「Streams Designer」を選択します。
※ 既に作成済の「Project」内の「+ New flow」からでも可能です。

<img width="500" alt="スクリーンショット 2018-03-04 15.32.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/a6c44b84-e970-c8eb-db2c-103e8480102e.png">

「From files」のタブを選択し、ファイルを選択します。
<img width="752" alt="スクリーンショット 2018-03-04 15.35.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/1e05544c-b3b3-bef9-532a-87c2b85d779c.png">

Nameなどは適当に入力して、「Create」ボタンを押してください。
すると、以下のような画面になり、綺麗にインポートされたことがわかります。

<img width="1264" alt="スクリーンショット 2018-03-04 15.38.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/bf42dba3-530e-60c6-0bb7-d3fe8f4c6c1d.png">

## 5. DSX 上にモデル作成用のインプットデータをインポート

インプットファイルがこのままではフローを流せないため、
モデル作成のためのファイルをDSX上にインポートいたします。
＃ 今回はSPSS Modeler上と同じインプットファイルとしております。
＃ 実際は検証用とは異なる大量データのインプットファイルとか、データベースを指定することになります。

右上の「1010（データ）」のボタンをクリックをして、入力用のデータをドラッグ＆ドロップします。
すると、以下の画面のように右側のリストにデータが登録されます。

<img width="1146" alt="スクリーンショット 2018-03-04 15.41.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/da7692ee-9a3e-9113-0b58-bd9571a0b842.png">

登録されたデータをブラウザ上でフロー上にドラッグ＆ドロップします。
既存のファイルを削除して、ドラック＆ドロップしてできたノードと「データ区分」と「テーブル」を接続し、フローを以下のように作成します。

<img width="836" alt="スクリーンショット 2018-03-04 15.46.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/88c2f148-28c6-2a4f-7a8e-2eaa7f5e8958.png">

これでDSX上のフローは完成です。

## 6. DSX 上でモデル作成＆検証

C5.0のノードを選択し、「Run」をクリックします。
※ 最初はC5.0のノードが「No target」となっておりますが、気にしなくて大丈夫です。

<img width="180" alt="スクリーンショット 2018-03-04 15.50.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/0fe4247c-d6d1-89a6-c9d5-4504d114134f.png">

新しいモデルが作成されますので、「精度分析」ノードを再実行（Run）します。

<img width="180" alt="スクリーンショット 2018-03-04 15.52.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/89be92ec-33d7-1015-b92f-68433e14ce79.png">

すると、「精度分析」ノードが実行され、右側のアウトプットに分析結果が出力されます。
※アウトプットは右上の「円型の下矢印」ボタンになります。
※下の画面は2回実行したので二つあります。

<img width="1207" alt="スクリーンショット 2018-03-04 16.02.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/bc41d748-1b15-294a-417a-dcae397b4f5b.png">


分析結果を開くと、以下のような感じになっているはずです。

<img width="915" alt="スクリーンショット 2018-03-04 15.59.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/239309/6f9a2042-e941-aba1-5bd3-ea550b700f94.png">

無事にSPSSのフローをDSX上にインポートし、実行することができました！

# さいごに

このようにまだベータ版ではありますが、SPSSのフローをDSX上で実行することが可能となりました。
SPSS Modelerの実行環境としてDSXを利用することができますので、SPSSユーザの方もぜひ他のDSXのデータ分析に関する機能も加味した上でDSXをご検討ください。