IBM Watson - AUTO AIを試す

# はじめに
IBM Cloudには「Watson Studio」というCloud上の分析ソフトがあります。
その中には「AutoAI」というプログラミングしなくても、簡単に機械学習ができるツールがあり、今回はそちらの実施手順をご紹介したいと思います。

<b>AutoAI with IBM Watson Studio</b>
https://www.ibm.com/jp-ja/cloud/watson-studio/autoai

本記事は <b>2020年6月末</b> 時点のものになります。

AutoAIについてはこちらの記事にも詳細に書かれていますのでご参考ください。
[AutoAIでお手軽機械学習(その1) 準備編](https://qiita.com/makaishi2/items/d63f0bbac32a975c391e)
[AutoAIでお手軽機械学習(その2) モデル構築編]
(https://qiita.com/makaishi2/items/d6cd449f7a9f7186a833)

今回の記事は、上記と画面が少し変わっていたので、ハンズオン用に作成してみました。。

# 手順概要

AutoAIを実施する手順は以下の通りになります。

<b>事前準備</b>
1. IBMidの準備
2. Watson Studioのオーダー
3. Watson Studioでプロジェクトを作成
4. AutoAIサービスをオーダー

<b>AutoAIを試す</b>
1. 今回の機械学習の目的と元データ
2. AutoAIにデータを投入
3. 機械学習実行
4. 結果の確認
5. 作成した機械学習モデルをWebサービスとしてデプロイ
6. テストデータでモデルを実行

# 事前準備 

事前準備の以下の項目について記載します
1. IBMidの準備
2. Watson Studioのオーダー
3. Watson Studioでプロジェクトを作成
4. AutoAIサービスをオーダー

手順1と2と3については、以下のサイトを参考にすることで実施可能です。
[無料でなんでも試せる! Watson Studioセットアップガイド](https://qiita.com/makaishi2/items/b666f847a98c2e42dfbb)

ここでは手順の4から説明します

プロジェクトを開いた画面で「プロジェクトに追加」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/6e08fd30-ef4f-95c6-8ad3-158409a2261e.png)

AutoAIを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/1deb3383-a619-5a4c-7235-0f23a20b6cbf.png)

「新規AutoAI実験」画面が出てきますので、そこで左側の「機械学習サービス・インスタンスの関連付け」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/fdd4928c-c4ae-a9fb-da86-9eaf13455c78.png)

Machine Learning のカタログ画面が開きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/9c47ae67-4ec3-56bc-2503-bcf5f0d959d2.png)

「ライト(Lite)」プラン【無償】を選択し、Creatをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/a66c8d7b-ff9d-f723-858d-20c38583907c.png)

Confirm Creation の画面で、
- RegionはWatson Studioを作成した場所（デフォルトはダラス）
- Planは無償の「Lite」プラン
- リソースグループは適当に（デフォルトはDefault)
- サービス名は適当に名前を付与してください
そして「Create」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/833d8445-7561-ff0e-f015-51e011dd1e3a.png)

前の画面に戻り、「再ロード」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/9ea956ce-ce76-5e54-48e3-4654182b2d53.png)

すると、先ほど作成されたサービスが反映されます。
今回実施するAutoAIの名前を適当に付与します。(下の画面は "Medical exam" となっています）
そして「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/6ae16eab-19ea-88d9-eb88-7a86d0e65c2b.png)

ここまでで準備が完了です。

なお、次回からはプロジェクト画面の「新規AutoAI実験」から開始できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/dce3a5d9-c1d5-8d45-31c7-500f484b933c.png)


# AutoAI を試す

続いて以下の手順をガイドします。
1. 今回の機械学習の目的と元データ
2. データ準備
3. AutoAIにデータを投入
4. 機械学習実行
5. 結果の確認
6. 作成した機械学習モデルをWebサービスとしてデプロイ
7. テストデータでモデルを実行

## 1. 今回の機械学習の目的と元データ
ある人が慢性腎臓病(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">


元データなどのネタはこちらのサイトにあります。
[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)

なお、各カラムには以下の情報が入っております。
一番右側の「class」フィールドの値が疾患しているかどうか「ckd(chronic kidney disease)」か「notckd」の結果です。

age-年齢, bp-血圧, sg-比重, al-アルブミン, su-糖, rbc-赤血球, pc- 膿細胞, pcc-膿細胞塊
ba-細菌, bgr-血糖値ランダム, bu-血中尿素, SC -血清クレアチニン, SOD -ナトリウム, pot-カリウム, HEMO -ヘモグロビン, PCV -充填細胞容積, WC -白血球数の, RC -赤血球数, HTN -高血圧, DM -糖尿病, cad- 食欲-食欲不振, appet -足の浮腫, ane -貧血, class -クラス

## 2. データ準備

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

## 3.AutoAIにデータを投入

先ほど作成したAutoAIのタスク(例では"Medical exam"）に、データ準備でダウンロードしたCSVファイルをドラッグ＆ドロップします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/a0e35c74-d174-ca7d-1370-8f11ae3379ec.png)

成功すると以下の画面が表示されます。
chroic_kidney_disease_full.csvファイルがアップロードされたことがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/449663a0-6f44-4f57-45e9-3516dc563e04.png)

目のマークのアイコンがありますが、それをクリックすると、テーブル(CSV)の中身を確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/6eb30e08-e1e8-8df8-a829-21bd1269183f.png)


## 4. 機械学習実行

予測する内容に、今回のモデルで推測したいカラムを指定します。
今回はCSVファイルの一番右の class のカラムを予測するモデルを作成するので、classを選択します。

classは、「ckd(chronic kidney disease)」か「notckd」の2項目しか値がありませんので、
今回は「2項分類」のモデルとして表示されます。

これで準備が完了しました。「実験の実行」ボタンをクリックし、自動学習します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/92c91e1e-81d2-78f2-ba4c-9ba98e19452d.png)

すると、機械学習が開始します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/3e04e150-db0c-19ec-5773-013efab3342e.png)

## 5. 結果の確認

右側で「実験完了」となると、学習が完了したことになります。
様々な学習方式を使って自動作成されたモデルが確認できます。

正解率やF値など様々な指標で各モデルを比較することもできます。
ここではモデルの作成方法や結果の見方の説明はしませんので、各自勉強ください。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/ddb1c9c9-6f29-f6db-dcfb-2345447661df.png)

## 6. 作成した機械学習モデルをWebサービスとしてデプロイ

作成されたモデルを取り出してWebサービス化します。
Webサービス化すると、そのモデルをプログラムから呼び出して、
モデル適用したい「インプット」に対して「結果」を得ることができます。
（今回でいうと、全く新しい人の医療データから疾患しているか「判定」することができる）

保存したいモデルを選択し、「名前を付けて保存」で「モデル」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/44218365-8e25-a9aa-9bce-173c57001dcd.png)

「デプロイメントの作成」という画面が出てきますので、
適当な名前を付与し、そのモデルを「保存」します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/6773a5b0-b055-722e-76bb-57efcf1604ba.png)

すると、デプロイが開始します。状況が「準備完了」になると完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/16616e36-f1d1-b549-bc53-a80ff945bfc5.png)

作成したものを開くと、以下のような作成したWebサービスの概要を表示した画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/f29e4b18-cc96-5750-3f97-5549094d30a8.png)

これでモデルがWebサービス化されました。
「実装」のカラムに各プログラムからの呼び出し方のサンプルが載っていますので、
そちらを参考にプログラムからこのモデルを呼び出すことが可能になります。

## 7. テストデータでモデルを実行

この画面から簡単にテストを実施することができます。
「テスト」の項目をクリックします。

すると、カラムが出てきますので、検証したデータをインプットします。
そして「予測ボタン」をクリックすると、モデルを適用した結果が右側に出てきます。
今回は90%の可能性で疾患しているといった結果になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/dab4dd4e-0280-5c79-655d-335abd5802fb.png)

すべてのカラムを手で入力するのは大変で、通常のプログラムと同様、JSON形式のインプットを利用することも可能です。

以下に入力するJSONのインプットを記載します。適当にパラメータは変えてもらって構いません。

```
{"input_data":[{"fields":["age","bp","sg","al","su","rbc","pc","pcc","ba","bgr","bu","sc","sod","pot","hemo","pcv","wbcc","rbcc","htn","dm","cad","appet","pe","ane"],"values":[[49,80,"1.01","1","0","normal","normal","present","notpresent","120","36",1.2,"111","2.5","15.6","44","9900","4","yes","yes","no","good","no","no"]]}]}
```

「ファイル」のアイコンをクリックするとJSONの入力画面が出てきます。
なお、一度各カラムを手で入力して予測を実行した後に、このボタンをクリックすると、その入力に対するJSONコードを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/d29958d0-e23b-08f5-8b34-e38e34d59f33.png)

## さいごに

AutoAI、いかがでしたでしょうか。
学習用のCSVファイルを準備すれば、プログラミングすることなく、簡単に機械学習できることがわかったと思います。ぜひ色々と試してみてください。

今回実行した機械学習を Watson Studio 上の SPSS で実行する方法はこちらになります。
[SPSS ModelerのフローをWatson Studioで動かす](https://qiita.com/dicekm-i/items/5ae674a278bfdf230226)

以上