AutoAIでお手軽機械学習(その2) モデル構築編

# はじめに
AutoAIはIBM Cloud上のサービスWatson Stuioおよび、オンプレミスでOpenShiftを前提とした製品CP4D (Cloud Pak for Data)で利用可能な、機械学習モデル自動構築ツールです。
「その2」では実際にモデルを作ってみます。

[AutoAIでお手軽機械学習(その1) 準備編](https://qiita.com/makaishi2/items/d63f0bbac32a975c391e) の続編です。
このシリーズは
[AutoAIでお手軽機械学習(その3) Webサービス編](https://qiita.com/makaishi2/items/e5ad4d068bd364fdc056)
[AutoAIでお手軽機械学習(その4) Jupyter Notebook編](https://qiita.com/makaishi2/items/0c59ae675362c9f85640)
[AutoAIでお手軽機械学習(その5) API編](https://qiita.com/makaishi2/items/12061696efc97bc1c747)
に続きます。


[2020-01-27] フルセットのデータを使うシナリオに変更しました。AutoAIの精度も大幅によくなったので、その結果も反映しています。
[2020-07-19] AutoAIが日本語対応したので、内容を全面的に改定しました。
[2020-09-23] 学習用データ修正(データ内容の日本語化、学習件数の変更)
[2020-11-03] cp4dタグ追加
[2020-12-20] 画面上の用語変化への対応


# 想定ユースケース・利用データ

https://archive.ics.uci.edu/ml/datasets/bank+marketing　
に公開されているデータセット **Bank Marketing Data Set**を利用して、テレバンキング先の顧客が、商品を購入するかどうかを予測するモデルを作ります。

![スクリーンショット 2019-07-29 18.45.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/083073db-3e18-8731-1417-d696b9f1086e.png)

以下で利用するサンプルデータでは、オリジナルの英字項目名を日本語に修正したものを利用します。

|項目名(英字オリジナル)  |日本語項目名  |
|---|---|
|age|	年齢|
|job|	職業|
|marital|	婚姻|
|education|	学歴|
|default|	債務不履行|
|balance|	平均残高|
|housing|	住宅ローン|
|loan|	個人ローン|
|contact|	連絡手段|
|day|	最終通話日|
|month|	最終通話月|
|duration|	最終通話秒数|
|campaign|	通話回数(販促中)|
|pdays|	前回販促後経過日数|
|previous|	通話回数(販促前)|
|poutcome|	前回販促結果|
|y|今回販促結果|

フルセットのデータ45211件のうち4521件を学習用に、40690件を評価用に利用します。
(2020-12-20 追記)学習用データの件数を少なくしているのは、無料のライトアカウントでも問題なく学習ができるようにするためです。有料アカウントを利用できる場合、通常と同様、学習データ：検証データを7:3または6:4にすることも可能で、その場合、モデルの精度は以下の記事で示した結果よりよくなります。

# データ準備
学習に使う以下のデータは、あらかじめダウンロードしておいて下さい。

[Bank Marketing学習用CSV(bank-train-jp-autoai.csv)]
(https://raw.githubusercontent.com/makaishi2/sample-data/master/data/bank-train-jp-autoai.csv)

# モデル作成

## Watson Studio プロジェクト管理画面の表示

最初に次のURLを指定して、Watson Studioにログインします。

https://dataplatform.cloud.ibm.com

下のような画面になるはずなので、「その1」で事前に作成したプロジェクトのリンク(画面下の赤枠)をクリックします。

![スクリーンショット 2020-07-19 16.51.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/59ca059a-c01f-0a19-ce52-0fba8a73359f.png)

もし、このプロジェクトが出てこない場合は、左上の「三」のアイコン(画面の黄枠)をクリックして下さい。
下のようなメニューが出てくるので、「**すべてのプロジェクトを表示**」を選択して、事前に作成したプロジェクトを呼び出します。

![スクリーンショット 2020-07-19 16.26.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/ff5de6d8-f7cc-2887-6932-6a4d1efda2e1.png)

下のような画面が出てくれば、プロジェクト管理画面の表示ができている状態です。

![スクリーンショット 2020-07-19 16.29.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/f395dba7-7d2d-92d4-b1f8-fbec9aa790db.png)

## AutoAIの呼出し
画面右上の「**プロジェクトに追加**」をクリックします。
下のようなメニューが出てくるので、「**AutoAIエクスペリメント**」を選択して下さい。

![スクリーンショット 2020-12-20 15.32.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/c8faea94-2ee1-650c-e6a3-2f7fbe17f302.png)

モデルの名称として「**営業成約予測**」と名称を入力して、画面右下の「**作成**」ボタンをクリックします。

![スクリーンショット 2020-07-19 16.34.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/31231c06-f0b7-083b-a1fd-26deb8859141.png)

## csvファイルのアップロード
下のような画面になるので、指示に従い、赤枠の領域に事前にダウンロードしておいた`bank-train-jp-autoai.csv`ファイルを drag & dropでアップロードします。

![スクリーンショット 2020-07-19 16.35.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/65bea858-f7b5-3836-3c11-c87742c9f055.png)

## 学習の開始

画面が下のように変化するので、**予測列の選択**ドロップダウンをクリックし、一番下の「**今回販促結果**」を選択します。

![スクリーンショット 2020-07-19 16.38.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/9eccc6e2-4fe1-88fc-4dcb-238272fc19b2.png)

![スクリーンショット 2020-07-19 16.38.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/46c32700-9f2d-f07c-f4a4-57be3b023cc3.png)

このままモデル作成に進めることもできますが、今回は評価基準を**ROC面積**に変更することにします。そのため、下の画面で「**エクスペリメント設定**」をクリックして下さい。

![スクリーンショット 2020-07-19 16.39.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/1299fb14-cfa2-c554-1d46-90208ce589be.png)

下の設定画面になります。
①左のメニューから「**予測**」を選択
②陽性分類のドロップダウンを「**成功**」に変更
③「最適化メトリック」として、上から2番目の「**ROC AUC**」(ROC下面積)を選択
④最後に画面右下の「**設定を保存**」をクリック
の手順で、評価基準の変更をします。

![スクリーンショット 2020-09-23 21.40.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/62fd3ca4-9772-fe8f-d964-6bc28cbee886.png)

前の画面に戻るので、画面右下の「**エクスペリメントの実行**」をクリックします。

## 学習の状況

図のような形で、学習が進んでいきます。後は、AutoAIにまかせて、最適なモデルができるのを待って下さい。今回の実習で使っている学習データの場合、20分程度で完了するはずです。
最終的には、下記のようになります。

![スクリーンショット 2020-09-23 21.46.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/3751449d-2df4-9b3a-6057-1483c7e2c7be.png)

画面を下方にスクロールすると、作成済みモデルのリストが表示されます。
デフォルトの状態の場合、作成済みモデルが8個できているはずです。(初期設定で4,8,12を選択可能)

![スクリーンショット 2020-09-23 21.47.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/480330ce-6914-377a-10d3-778c123a56bf.png)

画面上部のタブを、「**パイプラインの比較**」に変更すると、下のような画面になります。

![スクリーンショット 2020-09-23 21.48.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/0fd70cbb-7a77-fa77-178b-229739911a8b.png)

![スクリーンショット 2020-09-23 21.48.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/51e0a4c4-22ff-f02b-89d1-decb91af27b5.png)


## 学習結果の確認

### 作成済みモデル詳細画面

メインの「**エクスペリメントサマリー**」タブに戻り、モデル一覧から個別のモデルのリンクをクリックすると詳細画面になります。以下に、個別のメニューでどのような画面が表示されるかを示します、

モデル評価(ROC曲線と精度評価サマリー)

![スクリーンショット 2020-12-20 16.16.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/bf82605a-2ec2-6d10-fd90-89f5ab3f67d4.png)

混同行列(Confusion Matrix)

![スクリーンショット 2020-12-20 16.13.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/4df0447d-d2af-8937-b538-b0981efb1e6f.png)

適合率・再現率曲線
![スクリーンショット 2020-12-20 16.14.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/7fe77a36-b31b-0597-d57b-07c97f1bff91.png)


特徴量の変換
![スクリーンショット 2020-12-20 16.15.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/ebec9bf2-78e0-ea7e-9b34-77bc86a26d34.png)

特徴量の重要度

![スクリーンショット 2020-12-20 16.15.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/f207f0b4-ee68-8747-9de1-bb0436fe968c.png)


第三部では、こうやって作ったモデルをWatson Machine Learningにデプロイして、Webサービス経由でアクセスすることで、モデルの精度を検証します。
[AutoAIでお手軽機械学習(その3) Webサービス編](https://qiita.com/makaishi2/items/e5ad4d068bd364fdc056)