【2020/4月更新】 【やってみた】編 ~ Watson Studioに新しく搭載された機械学習の自動化機能「AutoAI」


:newspaper: [誰でもAIモデルが作れる! Watson Studioに新しく搭載された機械学習の自動化機能「AutoAI」をザクっとご紹介します](https://qiita.com/ishida330/items/720ff6eb6add44086d67)の続きです。（長くなるので記事を分割しました）

:memo: (2019/12月) Relationship Mapなど機能強化に伴い一部の画面コピーを取り直しました。
:memo: (2020/04月) モデルの生成数が4->8に増えたのに伴い、一部の画面コピーを取り直しました。

# やってみた
### シナリオ
前述のYoutube動画やCognos Analyticsのデモ等でよく使われる顧客離反の実績データ([customer_churn.csv](https://github.com/ishida330/AutoAISampleData/blob/master/customer_churn.csv))を使って予測モデルを作り、顧客のサービス解約の可能性を予測します。
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/b272038b-7c91-74f0-853d-87cf2db6a7c4.png)

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/1bda374d-6a4f-4020-46df-2c327ac65507.png)
上記のようなデータで、"CHURN"の値(TかFか)を予測する二値予測問題です。
:warning: 記事を読むだけでなく実際に実行される場合は、上記のCSVデータをお手元にダウンロードしておいてください。

### はじめに

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/3e739232-a147-a98a-69ef-929adb3614f2.png)

- 任意のプロジェクトで「**Add to Project**」-「**AutoAI Experiment**」をクリック

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/7f998bec-83ec-9499-b61a-93fea5e3ab76.png)

- **Name**に任意の名前を入力し、利用するWatson Machine Learningのインスタンスを選択して「**Create**」ボタン

### 入力データを指定
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/051c82ac-daa9-e640-ebc5-9ba040302e56.png)

- 「**browse**」リンクでダウンロード済みのcsvファイルを指定します

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/8fbdcd15-03a3-bf81-0608-5bb1cd594e7d.png)

- 「DataSource」欄にCSVファイルの名前が表示されます
- 右側に「Select column to predict(予測したいカラムを選択)」が表示されるので「**CHURN**」を選択します
- 「**CHURN**」を選択すると自動的に「PREDICTION TYPE(予測の種類)」は「**Binary Classification**（二値分類)」がセットされ、「OPTIMIZED METRIC(最適化の指標)」は「**ROC AUC**(Area under an Curve)」にセットされます
- 「**Run experiment**」ボタンを押します

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/9aecc560-d196-da3a-c645-9323388cead6.png)

- 処理の進行につれてRelationShip Mapが逐次、ダイナミックに更新されていきます。

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/90f19640-e2ad-a517-d75b-d3c96570de88.png)

- ビューを切り替えるとProgress Mapもみられます。トレーニングの進行状況を見るのに便利です。

### モデルの評価

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/b512fc19-f72b-5a39-fd10-ff7bc280ce8d.png)

- 完了しました。今回のデータではトレーニングに11分かかりました。
- パネルの下部にモデルの精度が表示されています。
- 「**view details**」のリンクからモデルの詳細情報を参照できます

### View Details
※解く問題の種類により表示される内容は若干違います。当ケースは二値分類の場合の例です。

基礎的な性能指標
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/e05a1193-3ea1-635f-9740-da8162b8cf7f.png)

混同行列(二値分類なので）
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/a98f7a99-94dc-08a9-a38c-dfe9705e30c5.png)

PR曲線
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/d20839ae-5ef6-82c4-1727-ad50c1a9ae17.png)

モデルの基本情報
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/20f84bd9-8289-9ffb-9f1f-017abf292740.png)

特徴量変換の内訳（こういうのを自動でやってくれるの、楽ですね）
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/613cb453-383b-09c0-8630-62ea51c45d98.png)

それぞれの特徴量の重要度
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/0244dfe7-415f-daf3-7d29-91dfafdd9639.png)


### モデルの保管とデプロイ

モデルを保管してWMLにデプロイする手順はModel BuilderやSPSS Modelerなどと同じです。

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/05e69534-b185-46f8-26c9-5dffc95666ad.png)

- 「Save as model」でモデルを保管します

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/c0c0374b-d514-bf6a-049a-55cc08fb2b15.png)

- 任意の名前を指定して「Save]

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/e9f4255c-a493-3ce2-92f8-cee2db6126da.png)

- saveされました
- 「**View in project**」のリンクをクリック

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/d6d67aec-aefe-734a-8b79-e4d0873e8a9b.png)

- 「**Deployments**」タブ-「**Add Deployments**」をクリック

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/ea0817d0-8053-1419-a923-afd50c176f0f.png)

- 任意の名前を入力して「Save」

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/1acc411d-a41d-646c-020d-19e79474fb86.png)

- Statusが「**ready**」になったらWMLへのデプロイは成功しています
- サービスの名前のリンクをクリック

### モデルのテスト
:memo:(2019/08/06) [What's New](https://dataplatform.cloud.ibm.com/docs/content/wsj/getting-started/whats-new.html)によると2019/07/19付でテストでフォームが使えるようになりました。今まではJSON形式の要求をベタで渡す必要がありましたが、楽になりました。
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/11d2abd6-ed13-b277-9bff-6a8a7dbae7aa.png)

以下はJSON形式の場合です。

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/717ba026-e15d-7dca-6740-f4f14682494e.png)

- 「Test」タブ
- 「Enter input data」欄にjsonの形式で要求ぺイロードを記載します
- 「Predict」ボタン
- 右側にレスポンス(判定結果)が返ります

```json:request
{"input_data":[{
        "fields": ["ID","Gender","Status","Children","Est Income","Car Owner","Age","LongDistance","International","Local,Dropped","Paymethod","LocalBilltype","LongDistanceBilltype","Usage,RatePlan"],
        "values": [[1,"F","S",1,38000,"N",24.393333,23.56,0,206.08,0,"CC","Budget","Intnl_discount",229.64,3]]
}]}
```


- 要求のJSONのレイアウトはマニュアルの[ココ](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/autoai-deploy-model.html?context=analytics)に書いてありますが、要は下記の感じです

```json:request
{"input_data":[{
        "fields": ["名前1","名前2",..."名前Ｎ"],
        "values": [[値1,値2,...値N]]
}]}
```

- JSON中にターゲット=予測対象=当ケースでは「"CHURN"」のカラムとデータは存在してはいけません。(それを予測するのですから当然ですが)
- ターゲット以外は省略できません。存在しないなら明示的にnullという値を渡す必要があります

```json:OKの書き方
{"input_data": [{
    "fields":["ID","Gender","Status","Children","Est Income","Car Owner","Age","LongDistance","International","Local","Dropped","Paymethod","LocalBilltype","LongDistanceBilltype","Usage","RatePlan"],
    "values":[[null,"F",null,null,null,null,null,null,null,null,null,null,null,null,null,null]]}]
}
```

```json:NGの書き方
{"input_data": [{
    "fields":["Gender"],
    "values":[["F"]]}]
}
```

### (ご参考) モデル作成時に指定可能なオプション
発表当初はデフォルト決め打ちでしたが、2019/12月現在、デフォルトの設定を変更できるようになってます。
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/dfb37de3-3640-4151-35c7-44da62459bb1.png)

【データソース】
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/b56eccdc-a695-8fd3-50b1-10ef457603d4.png)

- サンプリング、データのスプリット方法、含めるカラム(デフォルトは全部)

【予測】
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/324de78f-8af7-c0c4-f9a2-1629e65dde79.png)

- 予測手法、Trueの値、重視すべき指標

【一般】
![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108535/3a729859-8c05-a0d0-5f8b-329e95a34217.png)

- 手法の明細など。今は参照のみで変更できません。

以上です！（簡単すぎる。。）

# :clipboard: 改定履歴
初版から記述を追加/変更した箇所には:memo:マークを付けておきますね。

| 版| 日付| 変更内容|
|:---|:---|:---|
| 1.0 | 2019-06-05| 初版公開 |
| 1.1 | 2019-08-06 | テストでFormが使えるようになった点を追記|
| 1.2 | 2020-04-09 | 一部画面コピーの取り直し|