Watson Machine Learning Server + Watson Studio Desktop 構成で AutoAIを使ってみる

# はじめに
AutoAIは、IBMが提供するAIモデル作成の自動化ツールです。
モデル作成に使用するデータセットと、説明変数および目的変数として使用するフィールドを指定すれば、機械学習モデルが自動作成されます。
作成したモデルは、Watson Machine Learning環境へデプロイすることで、スコアリング可能となります。

AutoAIは様々な環境向けに提供されていますが、今回は Watson Machine Learning Server（サーバ）+ Watson Studio Desktop（クライアント）の構成で AutoAIを使ってみます。

|製品名  |提供形態  |
|---|---|
|Watson Studio Cloud + Watson Machine Learning|IBM Cloud上で提供|
|Cloud Pak for Data  |IaaSやオンプレミス等、任意の環境へ導入して利用|
|Watson Machine Learning Server + Watson Studio Desktop|IaaSやオンプレミス等、任意の環境へ導入して利用|

■テスト環境

- サーバ
    - RHEL 7.6
    - Watson Machine Learning Server 2.0  ※AutoAIは2.0から提供開始
- クライアントPC
    - Windows 10
    - Watson Studio Desktop 2.0


# 1. 事前準備

**1. Watson Studio Desktop から Watson Machine Learning Server への接続**

クライアント環境のWatson Studio Desktopより、Watson Machine Learning Serverに対する接続設定を行います。

クライアントPCで Watson Studio Desktop を起動し、「アドオンおよびサービス」より「マシン学習サービスの追加」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/45d5eac4-201d-0376-a0bd-f8679ac72d10.png)

Machine Learning Server を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/a03fe195-ef2d-bbe2-67b7-1e8c12028402.png)

Machine Learning Server への接続情報を指定し、「接続」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/c488ed9e-8b7a-b64d-f387-fa4e9ee1d104.png)

接続に成功すると、Machine Learning Serverが一覧に追加されます。
また、画面左側のメニューへ、デプロイメント・スペース という項目も追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/2f51d55c-42f2-93e0-3c96-d19cb37cc550.png)

**2. デプロイメントスペースの作成**
作成したモデルの展開先となる、デプロイメントスペースを作成します。

画面左側のメニューより「デプロイメント・スペース」を押下します。ポップアップが表示された場合は、「後で確認」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/5951fb2b-5db3-d429-58af-c45aa0585b2b.png)

「新規デプロイメント・スペースの作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/4233251c-5d15-bc2e-b0bf-31be640061c9.png)

「空のスペースを作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/171e949a-c27e-40c3-5391-0c826b8f830e.png)

名前 を指定し、「作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/4604c509-65df-6481-36ad-b0d47f1a4942.png)

作成が完了すると、デプロイメントスペースが開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/12e367d4-296c-d64a-c0ef-59a4d420e5a6.png)

**3. プロジェクトの作成**
Watson Studio ではプロジェクトという単位で、分析やモデル開発を管理します。
AutoAIをテストするため、プロジェクトを1つ作成します。
プロジェクトはフォルダのようなイメージです。

画面左側のメニューの「プロジェクト」より、「新規プロジェクト」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/788cf261-d82f-c044-f10f-05cd76a8586d.png)

「空のプロジェクトを作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/78ceb87d-15a8-9cd2-758c-2664e9f16aac.png)

名前を指定し、「作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/d37614f6-80e3-518a-86e4-0c4e6f36cee5.png)

プロジェクトの作成が完了すると、プロジェクトが開きます。
設定タブより、「デプロイメント・スペースの関連付け」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/dae064e6-67d4-93d4-8f86-5e9cb5a14dc6.png)

既存タブより、作成済みのデプロイメント・スペースを選択し、「関連付け」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/e851e114-b6cd-223b-de4b-4c73e74bf162.png)

事前準備は以上です。

# 2. AutoAIの実行

今回は、下記のチュートリアル手順を実行します。

- AutoAI チュートリアル: 二項分類モデルの作成 (バージョン 2.0)    
https://www.ibm.com/support/knowledgecenter/ja/SS3PWM/wsj/analyze-data/autoai_example_binary_classifier.html

### 2-1. データの収集

データ・セットは、ポルトガルの金融機関のダイレクト・マーケティング・キャンペーン (電話) のものです。分類の目的は、新規の顧客が定期預金 (変数 y で表す) を契約するかどうか (yes/no) を予測するモデルをトレーニングすることです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/aba4ff04-3ba0-bdc2-e4d9-180c336dbc82.png)

モデル作成で使用するCSVファイルをダウンロードします。

「Raw」ボタンを右クリックし、サンプル・トレーニング・データ・ファイルを [bank-full.csv](https://github.com/IBMDataScience/sample-notebooks/blob/master/CloudPakforData-3.0/notebooks/bank-full.csv) からローカル・コンピューターに保存します。

「Raw」ボタンを右クリックし、サンプル・ペイロード・データ・ファイルを [bank-payload.csv](https://github.com/IBMDataScience/sample-notebooks/blob/master/CloudPakforData-3.0/notebooks/bank-payload.csv)　からローカル・コンピューターに保存します。

### 2-2. AutoAI 実験の作成およびトレーニング
このセクションでは、実験を定義し、バンキング・データに対してその実験を実行して、パイプラインまたはモデル候補を生成します。

画面上部の「プロジェクトに追加」より、「AutoAI実験」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/40501fcb-a68a-9bf4-9076-ef3c4da6e116.png)

AutoAI実験名とコンピュート構成を指定し、「作成」を押下します。
例では、テストのため最小構成を指定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/69df1d71-1a6d-8ace-51cb-16e1344df58e.png)

bank-full.csvをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/a650575c-db67-f1f4-dc0c-1005f2fd3523.png)

データが読み込まれます。
予測対象のフィールドとして、y を指定し、「実験の実行」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/60722c8e-0e67-18e2-cb29-67bb6f26e0a2.png)

AutoAIの実行が開始します。完了まで待機します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/6a251be7-da7c-d6d3-84c6-8e7e9cd442b9.png)

AutoAI実験が完了しました。
最も正解率が高いパイプライン1を押下し、モデルの詳細を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/c76b62b1-f8df-30ad-3218-6cfda1093e17.png)

- モデルの評価
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/8d60f38d-71fc-7ead-d043-75eb7ec39cf8.png)

- 混同マトリックス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/0949854c-3fac-c247-376f-7cc97a95545b.png)

- 適合率/再現率曲線（PR曲線）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/db2ec80e-6ac8-19c7-5c06-ea9a2821bc6c.png)

- モデル情報
今回のモデルは勾配ブースティング分類器で作成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/944a259d-c6a7-d8ae-16c3-d720d1408b75.png)

- 機能の重要度    
特徴量の重要度が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/85085449-40e6-9add-b1b8-ba7d0ab475a4.png)

モデルを保存します。
画面右上の「名前を付けて保存」より「モデル」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/cedc5932-02c4-979d-909d-ef75a546195b.png)

モデル名を指定し、「保存」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/c9beb562-7645-3bea-7f09-b02e79dc104a.png)

プロジェクトに戻ります。資産タブへ、保存されたモデルが表示されます。
モデル名を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/cacbfe8e-a04e-e37c-4bd1-54aca2bb6854.png)

# 3. トレーニングされたモデルのデプロイ

「デプロイメント・スペースへプロモート」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/a35c8385-6c5f-1b0b-3efe-3b7c8d42b27b.png)

「スペースへのプロモート」を押下します。
この操作によって、AutoAIでトレーニングしたモデルが、デプロイメント・スペースにコピーされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/4bc9c4a0-074f-8902-7d59-feafc34b8b3f.png)

デプロイメント・スペースの一覧より、デプロイメント・スペース名を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/297dfca0-555f-969d-c3a4-69563b0c40fe.png)

プロジェクトからプロモートしたモデルが表示されます。モデル名を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/d143f514-8097-bfd6-4b0c-0ebeb33fd020.png)

### 3-1. オンラインデプロイメントの作成とリアルタイムスコアリング

「デプロイメントの作成」を押下します。
モデルを関連づけたデプロイメントを作成することで、スコアリングが可能となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/f402de58-8a51-1016-e3c4-49c67d88141c.png)

デプロイメント・タイプとして「オンライン」、デプロイメントの名前を指定し、「作成」を押下します。
オンラインタイプのデプロイメントでは、REST APIを使用して入力データを渡し、リアルタイムにスコアリングを実行することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/68e3c5e9-5f22-e8b8-763a-7bb72c3db992.png)

デプロイメントの状況が、デプロイ済み になったことを確認し、デプロイメントの名前 を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/8f07df2d-c5fa-9daa-c5f5-37e3aea33d0f.png)

スコアリングを試します。
テストタブを開き、スコアリングの入力用データをJSON形式で入力の上、「予測」を押下します。

```:入力用JSONサンプル
{ "input_data": [{
	"fields": [
		"age",
		"job",
		"marital",
		"education",
		"default",
		"balance",
		"housing",
		"loan",
		"contact",
		"day",
		"month",
		"duration",
		"campaign",
		"pdays",
		"previous",
		"poutcome"
	],
	"values": [[
		58,
		"management",
		"married",
		"tertiary",
		"no",
		2143,
		"yes",
		"no",
		"unknown",
		5,
		"may",
		261,
		1,
		-1,
		0,
		"unknown"
	]]
}] }

```
スコアリングの結果が表示されます。
今回は、no という予測結果でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/31d2d51b-a4f3-941e-c88e-28a64f6b67c7.png)


### 3-2. バッチデプロイメントの作成とバッチスコアリング

バッチデプロイメントとジョブを利用し、ファイルに含まれる複数レコードに対して、一括でのスコアリングが実行可能となります。

まず、スコアリングの入力用データとなるbank-payload.csv をアップロードします。
bank-payload.csv には 3件のデータが含まれています。

デプロイメント・スペースのトップ画面に戻り、「スペースに追加」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/b8b7bde8-f723-e418-41b2-b11abcfa89dd.png)

「データ」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/5864004e-09b2-b228-26b4-af59df0affe1.png)

bank-payload.csv をアップロードします。
アップロードが完了すると、データ資産の一覧に bank-payload.csv が表示されます。
次に、バッチデプロイメントを作成します。モデル名を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/e85706b2-cb84-7d02-313a-a1121aa644e8.png)

「デプロイメントの作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/bda5f6d3-7651-9b75-3394-a7e0defccd9c.png)

デプロイメント・タイプとして「バッチ」、デプロイメントの名前、ハードウェア定義を指定し、「作成」を押下します。
例では、テストのため最小のハードウェア定義を指定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/30ba830b-7c65-1a92-c1c2-ea8b7a98909b.png)

続いて、バッチ・デプロイメントを使用するジョブを作成します。
バッチ・デプロイメントの詳細画面にて、「ジョブの作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/148bbf16-4e45-fb87-d7b8-b3d087f3f559.png)

ジョブの名前を指定し、次へ進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/cf5d6faa-df92-7feb-60ae-2188b6f95867.png)

ハードウェア仕様を指定し、次へ進みます。
例では、テストのため最小構成を指定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/ac509bda-888c-d1d6-370c-36f1399cd6dc.png)

スケジュール実行の設定は有効化せず、次へ進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/f7a5b8be-2d48-d211-dfb3-6f87d045f455.png)

データの設定を行います。

- 入力ファイルに bank-payload.csv を指定します。
- 出力ファイルに bank-tutorial-output という名前を付けます。

次へ進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/95944aa9-640d-5fa9-f913-3322337607c6.png)

設定内容を確認し、「作成」を押下します。ジョブの作成と実行が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/ea3982da-561e-8d57-4d74-89d9c88649ee.png)

ジョブ名を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/dc21aff4-8d3d-4750-9837-f8f58c02c3a6.png)

ジョブの詳細画面より、状況を確認します。Startingになっていれば、ジョブは開始しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/d56f36f7-97e0-13df-98a6-487b695d33c0.png)

再度、状況を確認します。完了になっていれば、ジョブは完了です。
開始時刻を押下し、ログを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/a8c80169-0547-38f7-1071-246720d0342b.png)

ジョブの実行ログが表示されます。ログを閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/2122504d-1e5d-de06-bd0a-9d194a0b1feb.png)

デプロイメント・スペースのトップ画面に戻ります。
データ資産に、バッチスコアリングの出力 bank-tutorial-output.csv が追加されているので、ダウンロードします。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/90e2afd1-e984-d199-0579-3a37195db351.png)

ダウンロードしたファイルを開くと、スコアリング結果が含まれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237849/a7fae5e6-dfb3-fe7a-a6de-85d2302cba11.png)

以上です。