AutoML Tablesを使ってみた

# はじめに

先日の[Google Cloud Next 2019](https://cloud.withgoogle.com/next/sf) で発表されたいくつかのサービスの中に[AutoML Tables](https://cloud.google.com/automl-tables/)があった。表形式のデータをノンプログラミングで分析できるプラットフォームらしい。[Azure Machine Learning Studio](https://azure.microsoft.com/ja-jp/services/machine-learning-studio/)とどう違うのか気になったのでつかってみることにした。

AutoML Tablesは現在ベータ版で[Quick Start](https://cloud.google.com/automl-tables/docs/quickstart)に沿ってやってみようと思う。予測精度の検証はよくわからないのでとりあえず使い方のみで。

# やってみた

GCPのプロジェクトと課金付与はあらかじめやってあるものとする。QuickStart中の**APIを有効にする**ボタンをクリックすると以下の画面になるのでAPIを有効にする。そのあとボタンが**使ってみる**となるのでクリックする

![スクリーンショット 2019-04-14 19.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/191889f9-1a8f-3a6e-400f-03e5878ced3a.png)

ページ上部の**新しいデータセット**をクリックする

![スクリーンショット 2019-04-14 19.15.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/20864ef1-3bf2-8026-a1af-b608901e4280.png)

データセット名を`Quickstart_Dataset`として**データセットの作成**をクリックする

![スクリーンショット 2019-04-14 19.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/7bb14e6e-8c4f-3aa6-6b15-d535abeffda2.png)

**CSV from Google Cloud Storage**を選択して、`gs://`となっている欄に`cloud-ml-tables-data/bank-marketing.csv`と入力して**インポート**をクリックする

![スクリーンショット 2019-04-14 19.18.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/6ce570ec-e2e6-86b0-1d01-7c81ad4f404e.png)

インポート中。。2〜3分かかる

![スクリーンショット 2019-04-14 19.22.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/4d36f682-4286-6e34-fc27-e71c38f12081.png)

インポートが完了するとスキーマに画面が移るので、**Target column**で`Deposit`を選択して**続行**をクリックする。ここで選んだカラムが予測値を分析するカラムとなる

![スクリーンショット 2019-04-14 19.25.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/dbf85dd4-ff4a-b58d-435c-4d3c686cf3dc.png)

分析が終わると各カラムの平均や標準偏差などの統計が確認できる。カラム名などからどうやらこれはUCI Machine Learning Repositoryの[Bank Marketing Data Set](https://archive.ics.uci.edu/ml/datasets/Bank+Marketing)ではなかろうか

![スクリーンショット 2019-04-14 19.29.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/726dd793-1a76-1d6d-b8cb-29a39eb4c9c3.png)

各カラムをクリックすると各値の分布などカラムに合ったグラフが表示される

![スクリーンショット 2019-04-14 19.32.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/4347c329-87eb-8baf-6fbb-83d1ad6a325e.png)

![スクリーンショット 2019-04-14 19.33.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/05df86e0-24dd-e242-8c4a-47e1592379d4.png)

`Deposit`カラムは1 or 2の数値の分布になっている。Bank Marketing Data Setはポルトガルの銀行のダイレクトマーケティングの実績データらしい。1が預金契約不成立、2が契約成立の実績みたいだ。いわゆる二項分類(binary classification)問題になる

![スクリーンショット 2019-04-14 19.59.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/0a09b407-4fff-d54e-b4cb-b619eb80632c.png)

**トレーニング**をクリックしてトレーニングのタブに移動する。モデル名はデフォルトのまま、**Training budget**に`1`を入力、**Input feature selection**はデフォルトのままとする。Training budgetは訓練するときの計算ノードを指定するところで1〜72まで指定可能。大きいほど料金が高くなるようだ

![スクリーンショット 2019-04-14 19.36.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/01de1f7c-d2c7-a67a-5b71-8265a9fb35f9.png)

**概要**の項目で45211行の16個の特徴（カラム）を持つデータを学習することが確認できる。**Optimization objective** をクリックすると評価指標を選択できる。今回はデフォルトの`AUC ROC`を選択する。**TRAIN MODEL**をクリックする

![スクリーンショット 2019-04-14 19.39.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/b14b1334-75bc-b893-2344-a575afff0631.png)

トレーニング中。。だいたい1時間半くらいかかった。*6 hours of free one-time use + $19.32 per hour*らしいので今回は無料の範囲のようだ

![スクリーンショット 2019-04-14 19.43.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/e5998dd6-c3fb-bbc1-ad54-d6230c947536.png)

トレーニングが終わるとこんな感じにレポートされる

![スクリーンショット 2019-04-14 21.28.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/df3c2a69-7498-56c2-39c9-f90debc25bb7.png)

**評価**タブに移動すると予測精度などが確認できる

![スクリーンショット 2019-04-14 21.30.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/06ee17df-84ca-c6e5-3615-e37160a14299.png)

評価タブの下段には**Confusion matrix**や特徴ごとの重要度がレポートされている

![スクリーンショット 2019-04-14 21.34.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/89368fdd-2321-7144-7ce1-eb3278b13b15.png)

**予測**タブに移動して**オンライン予測**を選択し、**DEPLOY MODEL**をクリックする

![スクリーンショット 2019-04-14 21.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/377188e4-6c32-cde8-c2ac-79a03e2abeee.png)

**確認**をクリックする。デプロイにもけっこう時間がかかる。30分くらい

![スクリーンショット 2019-04-14 21.39.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/2883326e-b633-12fd-ae59-26b13631276d.png)


デプロイが完了したあと、**Test and use your model**の欄に以下のようなJSONを入力して**予測**ボタンをクリックする

```testdata.json
{
  "payload": {
    "row": {
      "values": [
        "45",
        "technician",
        "married",
        "secondary",
        "no",
        "52",
        "no",
        "no",
        "cellular",
        "12",
        "aug",
        "96",
        "2",
        "-1",
        "0",
        "unknown"
      ]
    }
  }
}
```

予測結果が返ってくる。

![スクリーンショット 2019-04-14 22.07.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61995/f0682572-26a7-0f9b-2f34-cbb7e145fa11.png)

デプロイ後、予測はWeb APIでもリクエストできるようになる

```shell
curl -X POST -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  https://automl.googleapis.com/v1beta1/projects/[PROJECT NAME]/locations/us-central1/models/TBL[DATASET ID]:predict \
  -d @request.json
```

# まとめ

UIがシンプルなので直感的に操作できる。ややこしいパラメータ調整には関心がなくてとにかくデータの特徴から何かを発見したり予測をしたいという人にフィットするんじゃないだろうか。[Beginner's guide](https://cloud.google.com/automl-tables/docs/beginners-guide)によるとAutoML Tablesは二項分類、多項分類、回帰分析をサポートしていてデータの種類によって最適なモデルをビルドできるとある。あとでいろいろなデータを学習させたりAPIを使ってみたりしたい