WatsonStudioの「AutoAI」を使ってみた（学習編）

#１．はじめに
以前試した[SONYのAutoMLサービス「PredictionOne」](https://qiita.com/paco_itengineer/items/7b6f1c62ae7263ac1a43)をはじめ、次々にAutoMLが出てきていますね。今回は、2019年6月(?)にリリースされた、**IBMCloudが提供するAutoAI**を試してみようと思います。ひとまず、何も考えずに**Titanicのデータ**を突っ込んでどうなるか見てみます！

いつものことながら、マニュアルは一切読まずに、勘と経験と度胸（！？）で進めます。

今回は、長くなりそうなので、「学習編」と「評価編」に分けて書こうと思います。


#２．環境とデータ
##（１）環境
・Windows10
・IBMCloud（ライトプラン）
・WatsonStudio
※やってみてわかったのですが、WatsonStudioのなかにAutoAIという機能がありました。


##（２）利用データ
**Kaggle Titanicのデータ**
https://www.kaggle.com/c/titanic/data


#３．手順
##（１）IBMCloudで機能を探す
ひとまずIBMCloudにログインして、カタログから「AutoAI」で検索・・・・するも出てこない。どこにあるんじゃ？？とりあえず、サイドメニューの「AI」で絞り込んでみたところ、可能性があるのは、**「WatsonStudio」**でしょうか。とりあえずやってみます。（マニュアルは読まない！）


##（２）WatsonStudioを立ち上げる
①**WatsonStudio**を選択します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/45ec893f-7d6c-557b-6959-6338f06c5048.png)

②地域は**「ダラス」**、リソースグループは**「デフォルト」**で「作成」をクリックします。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/b669e6e1-071f-6f87-6b49-8cd6c4099fd5.png)

参考：ライトプランで無料で使えるのは以下の範囲です。	
>1 authorized user
>50 capacity unit-hours monthly limit
>1 free small compute environment with 1 vCPU and 4 GB RAM (does not require >capacity unit-hours)

##（３）プロジェクトの作成
①こんな画面が出てきたので、とりあえず「GetStarted」を選びます！
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/b0a810ea-cb48-d030-fa96-94797731fc26.png)

②「CreateProject」をクリックしてみます。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/77818329-ec34-1440-7b90-539d4884b621.png)

③おおお:grinning::v_tone1:あった:bangbang:AutoAIっぽいのがありました！これをクリックします！！
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/91880ff9-9599-6fde-2cfd-f8b6b80ed4e8.png)

④途中で**「Select a region for Machine Learning」**というダイアログが出たので**「US South」**を選択しました。

⑤プロジェクト名に**「titanic」**を入力して、「Create」をクリックします。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/ce07885d-7feb-fb54-a063-eaca2c7a4100.png)

すると、プロジェクトが立ち上がります。

##（４）データの登録
①「Asset」をクリックしてみます。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/c8a01d76-eb40-8e17-dbdb-037fcbcfefd0.png)


②右側に**「Drop files here or browse for files to upload.」**と書かれている欄があるので、学習用データ（train.csv)を登録してみます。今回はKaggleでおなじみの[Titanic](https://www.kaggle.com/broaniki/titanic)のデータを利用します。


③データが登録できたら、「New AutoAI experiments」をクリックします。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/e874d0dc-8378-95e2-e728-16c87e73b0e3.png)


##（５）AutoAI New AutoAI experiments の設定＆実行
①設定はデフォルトのまま、適当なAssetNameを入力して、「Create」をクリックします。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/0a6f30b0-6c57-1ea7-897a-035d6558ad08.png)

②学習データを選択する画面が出てきました！「Select from Project」をクリックして、先ほど登録した学習用データ（train.csv）を選択します。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/37ed52f4-4003-4e0c-f90c-f415f275fac9.png)

③すると、DataSource欄にデータが表示され、左側にカラム名とデータ型が表示されます。

④左側の一覧において、目的変数として「Survived」を選択すると、自動的に予測タイプとして「BinaryClassification」、最適化指標として「ROC　AUC」が選択されました。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/2453fe6b-b894-ec28-c4ef-74cb9f97a51c.png)

⑤「Run experiment」をクリックして実行します。

（参考）この画面で「EditPrediction」をクリックすると、以下の画面が表示され、予測タイプと最適化指標を変更できるようです。（今回はデフォルトで行きます）
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/802c6077-ed5c-dd86-4bdc-ce68b3fe738c.png)

⑥約２分で処理が完了し、このような画面が表示されました。これを見ると、**Extra Trees Classifier**で、**特徴量抽出**と**ハイパーパラメーターのチューニング**をいろいろな組み合わせで試しているように見えますね。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/a57305b4-78e0-e947-c53f-d40160cc6d5f.png)

##（６）学習結果とモデル保存
①一番精度がよさそうなPipeline３を選択すると、モデルの詳細が表示されました。何の前処理もせずに**AUCが0.870**はなかなかの結果ではないでしょうか。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/3860213b-9ece-71cb-22c5-6cc356376020.png)

②作成したモデルを保存するために、右上の**「Save as model」**をクリックしてSaveします。

③保存が完了すると、Model欄に保存したモデルが表示されます。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299024/d35c00d1-9ede-94ab-2f88-6f4e0c7a2a35.png)


今回は学習編ということでここまでにします:grinning:
ここまでお読みいただいてありがとうございました。

#４．感想
何とかTitanicの学習してモデルを作ることができました。以前に試したSonyのPredictionOneと比較すると、**やや操作が難しい**ように思います。IBMCloud自体が提供している機能が多いため、そもそもAutoAIがどこにあるのかが分かりにくかったです。（WatsonStudioの中にありました）とはいえ、**マニュアルを読まなくてもここまでできた**ので、**「簡単に機械学習ができる！」**と十分言えると思います。

PredictionOneがモデル構築に特化したツールであるのに対し、AutoAIはIBMCloudの他の機能と組み合わせて実装していくという拡張性を考えると、利用する人のスキルや目的によってどちらが良いかは変わってきそうですね。

なお、学習精度の比較対象として、同じくTitanicのデータを使ってPredictionOneの交差検証ありでモデルを作成した結果との比較が以下です。学習の結果なので、過学習している可能性があり、これだけでは良し悪しはわかりませんが・・・:disappointed_relieved:

**【学習精度の比較】**

| 　　　項目　　　             |  　　AutoAI　　          |    PredictionOne    |
|:-----------------:|------------------:|------------------:|
| AUC             |0.870 |0.853|
| Accuracy        |0.805 |0.773|
| Precision       |0.729|0.661|
| Recall          |0.805 |0.839|


次回は、このモデルで**テスト用データ（test.csv）**を用いて、予測精度比較をしてみようと思います:relaxed:

#５．関連記事
**SONYのAutoMLサービス「PredictionOne」を使ってみた**
https://qiita.com/paco_itengineer/items/7b6f1c62ae7263ac1a43

**WatsonStudioの「AutoAI」を使ってみた（学習編）**
https://qiita.com/paco_itengineer/items/910b7ee4b6373ff21e4e

**WatsonStudioの「AutoAI 」を使ってみた（評価編）**
https://qiita.com/paco_itengineer/items/ca1f97f17bb91ac351eb

**GoogleCloudPlatformの「AutoMLTable」を使ってみた**
https://qiita.com/paco_itengineer/items/4cf064d272f007fcae57