CP4DでModeler Flowを動かす


"IBM Cloud Paks Advent Calendar 2021" 11日目です。

Cloud Paks関連という題材は非常に幅が広いのですが、本日はCloud Pak for Data(CP4D)、つまりデータの収集、編成、分析に関わるツールのうち、自分が使って便利だなあと思う Modeler Flow についてご紹介します。
ちょっと触ってみよう！あるいは、ふーん、こんなことができるのね！と思って頂けたら幸いです。

## はじめに
市民データサイエンティストという言葉も既に浸透して久しく、データ活用やAIモデルなしに企業活動を進めることは考えられない時代になっています。データ分析や機械学習(AI)モデル作成、その継続活用に関わる仕組みも数多く提供されており、何かしらのツールに触ったことがある(しかも複数)、という方も多いと思います。

機械学習やデータ分析のはじめの一歩、を踏み出すのは、近年では簡単になっています。
でも、その一歩をどの方向に踏み出すかによって、どのくらい長く歩き続けられるかは変わってくると思います。
単にAIモデルが作成できれば目的達成・・という訳にはいかないのですから、どうせなら、便利に末永く、ストレスなくデータ活用を続けていけるツールを選ぶのが重要ではと思っています。

## どんなツールでデータ分析を始めるのが良いか
これには好みもあると思いますが、ビジネスのスピードが求められ、かつ、中長期的に使い続けていくことを考えると、下記のような特徴があると良さそうです。

 * GUIベースである (始めやすい/とっつきやすい/結果が見やすい！)
 * 他人と共有しやすい (引継ぎやすい/再現や改善がしやすい！)
 * データの確認や編集がしやすい (データ理解・品質確認・変更といった余地があり、痒い所にも手が届く！)

統計知識にも業務フローやデータの意味にも精通したデータ分析の専門集団が準備できれば、もちろん理想的です。
また、データ前処理や特徴量作成、モデル構築、精度の比較までを数クリックで実施してくれるようなツールも、場合によっては便利でしょう。
しかし、データ活用を継続的に実施し、ビジネスの洞察を取り込みながら、組織としてそのモデルを育てて行く・・ということを考えるなら、なるべく馴染みやすいインターフェースで、柔軟に操作できるツールを選ぶことのメリットは大きそうです。

##SPSS Modeler, Modeler Flowとは
SPSS Modelerは、本格的なデータ分析ツールとして長年の実績がある統計解析、データ分析ソフトウェアです。分析入門者から分析スペシャリストのガチ勢まで、非常にファンの多い製品だという印象です。

GUI上でアイコンをつなぐだけでデータを加工・整備できるため、DBなどの知識がない業務ユーザであっても、SQLやETLツール、Pythonプログラムなどの知識なしで簡単に利用することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/dacdad8e-c334-ab07-817d-487475825e25.png) 図：SPSS Modeler(デスクトップクライアント)の画面例

Modeler Flowは、SPSS Modelerをベースに作られています。ソフトウェア版のSPSS Modelerとは、見た目や操作感は少し異なりますが、SPSS Modelerと同様に、一通りのツールがアイコン形式でリストされており、ドラッグ＆ドロップやパラメーターの設定だけで処理の流れを記載できる点は変わりません。
ソフトウェア版のSPSS Modelerをお使い頂いている場合は、そのストリームファイルをModeler Flowへ移行することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/b16cbdcd-24e7-db3a-fffd-89a852ac4799.png) 図: Modeler Flowの画面例

なお、本来的ではないかも知れませんが、機械学習モデルに必要な機能がアイコンとして提供されているため、これらの品揃えを調査していくうちに自然と統計の知識を深められるという点も、ユーザー目線として有難いと思っていることの一つです。

## CP4D (Cloud Paks for Data)とは
CP4Dは、データの収集、整理、分析、活用といったニーズに対応できるオールインワンのトータルなプラットフォームです。
さまざまな機能が提供されていますが、ベースの部分に対して機能を付加していく方式になっているため、必要な機能を選択して使用することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/16ad460f-b432-2f8b-9f94-d536bede75de.png)

CP4Dの中核的な機能として、Watson Studioがあります。Watson Studioは、データソースやモデルの管理、データ分析ツールを一元的に提供し、複数人で共有しながら使えるデータ分析のプラットフォームです。

 * チームメンバーや他部門のユーザーと同一のプラットフォームで分析結果やスキルを迅速に共有できる
 * 必要に応じ、様々なツールを追加していくことができる

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/4be25dcc-e9a2-3a81-8084-5a66f6760def.png)
Watson Studioに統合されているものは、ある程度共通のインターフェースで触ることができるため、Modeler Flow以外のサービスを使うときにもWatson Studionの画面に慣れておくことは有用です。
今回ご紹介するModeler Flowも、このWatson Studioと連携して動作します。


## 使用感を紹介
ここではざっと以下2点を簡単にご紹介します。
全体のおおまかな流れや、どんなことが出来るのかという概要をお見せするのが目的のため、全ての操作方法の詳細な説明や、機械学習モデルそのものの説明は割愛させていただきます。

 *   CP4DでModeler Flowを使い始める方法
 *   Modeler Flowの操作イメージ

Modeler FlowをCP4Dで使う場合、Watson Studioの「プロジェクト」に対してModeler Flowを紐づけて使います。
プロジェクト、というのがWatson Studioの作業場所であり、この単位でユーザー制御をしたり、さまざまな資産(データソースなど)を管理します。
Watson Studioを使うとなったら、まず実施することは「プロジェクト」を作成することです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/5167ee7d-2d80-c22d-9ea3-df5c38fac88b.png)

プロジェクトを作成して開いたら、右上のボタンから「プロジェクトに追加」を選択します。
基本的にはここで追加したものが、プロジェクト内の「資産」として扱われるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/35323661-fd69-766d-612e-b546c682419e.png)

「Modelerフロー」を追加すると、新しいタイプが追加され、Modelerで作成した処理フローはここにリストされるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/d53faed4-5b3f-849b-3010-f9b1eb68d18e.png)

基本的に画面左側のノード・パレット(処理操作を示すアイコン群)から必要なノードを選択し、キャンパス上でつなげていくことで一連のフローを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/9c24c68f-d7ae-bca2-dbc0-9fe9b8c1cd8e.png)

あるいは、キャンバス上でノードを選択した状態(点線が表示)のままパレットからノードを選択すると、自動的にノードがつながった状態で追加することも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/c0d14bec-960d-6ad6-6b2d-9deb0fb4412d.png)

参考までに、ノード・パレットの一覧を記載します。
カテゴリーごとに有用な機能がラインナップされているので、処理を書いていく際にはここから選んで進めて行くことが可能です。
また、ノードの色・形がカテゴリーと関連しているため、フローをざっと眺めるだけで処理の概要を視覚的に理解するのに役立ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/b566bb63-c724-c009-e22e-b52072643dd2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/dfe03e75-19ea-19d1-ed73-5cd52c8c2277.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/f7c2ae35-32c0-4dae-2f5e-4fa213f2daf2.png)

例えば、決定木モデルを作成するには、「モデル作成」カテゴリーから必要なノードを選択します。
ここでは、「CHAID」を選択し、該当ノードをダブルクリックすることで、パラメータを調整できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/fa2dffa5-0da2-2326-f483-f962d841374b.png)

モデルを作成するには、該当のノード(ここでは「不履行」と言う名前のCHAIDノード)を実行します。
モデルが正常に作成されると、モデルナゲット(茶色いアイコン)が作成されます。
モデルナゲットは、モデル作成の結果を示すルールや式のセットです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/3e1143b8-9ba8-d5db-31b8-0273470a5822.png)

作成されたモデルナゲットをクリックして、「モデルの表示」を選択すると、重要度の高い変数や、モデルのツリー構造での表現などを確認することができます。(どのような結果が表示されるかは、モデルの種類に依存します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/5d9920b1-dbd2-26d9-2845-781033e49cf1.png)

モデルの精度も気になるところです。モデルナゲットに精度分析ノードを接続し、該当ノードを右クリックし、実行します。
右側のペインに精度分析結果が出力されるので、該当結果を選択すると、精度分析結果を表示させることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/73ac593a-f643-c108-6567-6a564f81b442.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/03c7bbbc-3ee5-154e-37b2-8db915b7d406.png)


もちろん、PythonやScalaなどを使って決定木モデルを作成することは可能です。
ただし、ライブラリや関連パッケージのバージョンが異なるとうまく動かないため、他人と共有した場合や、時間が経って環境が変わってしまった場合などには苦労されたという方も居るのではないでしょうか。
しかし、Modeler Flowであれば、そのような共有時の苦労は軽くなりますし、何よりも都度、ライブラリの仕様を調べ、関連パッケージを導入し、オプションの動きを調査して試行錯誤する・・という、時に長い道のりが不要になるのは有難いのではないかと思います。

##触ってみませんか
Cloud Pak for Data (As a service) は2021年12月現在、Liteプランで使用することが可能です。
Modelerフローが使用できる制限時間(キャパシティー・ユニット時間:CUH)に制限はありますが、Modeler Flowもお試しいただけます。
もしご興味を持たれた方がいらっしゃいましたら、ぜひ一緒に触ってみましょう。