Google Auto ML Tables を使った PoC
Google Auto ML Tables を使った PoC

Google Auto ML Tables を使った PoC

はじめに

DROBE ではサービスの設計段階から、データサイエンスで使う事を念頭に多くのデータを取得して運用や機械学習に活かしてきました

正直データが多すぎて使いきれていないというような状況でもあるのですが、Google の Auto ML Tables を使う事で、ほぼノンプログラミングで機械学習機能の PoC が可能です

この記事では Google Auto ML Table の簡単な使い方について解説します

Google Auto ML Tables とは

Google Auto ML Tables とは Google が GCP 上で提供する機械学習のサービスです (2021 年 5 月現在、まだ β 版です)

AutoML Tables | AutoML テーブル | Google Cloud

構造化データに対する最先端の機械学習モデルを自動的にビルドしてデプロイします。 AutoML Tables を使用すれば、チーム内のデータ サイエンティスト、アナリスト、開発者が、さらに高速かつ大規模に、最先端の機械学習モデルのビルドや構造化データへのデプロイを自動化できます。エンタープライズ データを活用し、サプライ チェーン管理、不正行為の検出、見込み顧客のコンバージョン最適化などのミッション クリティカルなタスクに取り組んでお客様の生涯価値を高め、ビジネスを変革しましょう。 モデルの品質向上 最先端のモデル( くわしくは機能の項をご覧ください )をワンクリックで作成しましょう。Google の Model Zoo で構造化されたデータを自動検索し、比較的単純なデータセット用の線形 / ロジスティック回帰モデルから、より大規模で複雑なデータセット用の高度なディープ検索、組み合わせ検索、アーキテクチャ検索手法まで、お客様のニーズに合ったモデルを探します。 AutoML Tables の高速性、正確性、規模の大きさにより、Fox Sports はオーストラリアの何百万人ものクリケット ファンに、これまでにない新しい体験を届けることができるようになりました。これまでのクリケット ゲームの複数変数でモデルをトレーニングすることで、ウィケットが倒れるタイミングを 5 分前に予測できるようになりました。この新機能は、私たちのマーケティング戦略に不可欠な要素となりました。AutoML を App Engine や Cloud Dataflow と統合することで、お客様とのすべてのタッチポイントが変わりました。クリケットの中継が今までと大きく変わり、ユーザー エンゲージメントが業界平均と比べて 140% 向上しました。マーケティングでは、適切な場所、適切なタイミングでファンにアピールすることで、1 ドルの支出に対する契約者数が 150% 増加しました。 Fox Sports 社マーケティング ディレクター Chris Pocock 氏 無料トライアル: 請求先アカウント単位でトレーニングとバッチ予測ごとに 6 時間の無料ノード時間を使用することで AutoML Tables を無料で試すことができます。無料ノード時間は最初のモデルを作成する直前に発行され、最長で 1 年間利用できます。 詳細については、 料金ガイド をご覧ください。 次のステップ $300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して Google Cloud で構築を開始しましょう。

AutoML Tables | AutoML テーブル | Google Cloud

Auto ML Tables では主に Feature Engineering, Model Selection, Hyperparameter tuning を自動でやってくれるというものです

Auto ML Tables の概要 (

利用する側は、教師となる正解データを含む入力データを準備してやるだけで、あとは Atuo ML Tables が自動で正解を予測するモデルを構築してくれます

少し周りくどい説明になってしまったので、具体例で説明します

例えば、DROBE ではユーザーのデータと商品のデータ、またユーザーが商品を購入したか、というようなデータがあります

これらをテーブルの形にして Auto ML Tables にアップロードするだけで、自動的にテーブルの指定したカラムの値を予測してくれるモデルを構築する事が可能です

複数のデータを結合して予測用のテーブルを作る
複数のデータを結合して予測用のテーブルを作る

この例では、Auto ML Tables に 購入 を予測出来るようなモデルを構築したい、という設定を入れてトレーニングを行うと、モデルを自動でトレーニングしてくれます

トレーニングされたモデルへの入力と出力
トレーニングされたモデルへの入力と出力

実際に使ってみる

以下は実際に Auto ML Tables を使ってみる手順を記載していきます

データの準備

まずはデータを準備します

DROBE では機械学習で使うデータは AWS の S3 に parquet の形で毎日保存しているので、そちらをダウンロードして適当に pandas などでデータを調整し、最終的に csv で保存しておきます

ここでもし parquet の中に list 型のようなデータが入っていると Auto ML Table へのインポート時にエラーとなってしまうので、必要があれば文字列や数字などに型を変換する必要があります

List 型のデータなどは pandas の get_dummies などを使って one hot encoding しておくといった形で対応する事も可能です (get_dummies は本番環境では使用を推奨されない場合も多くありますが、PoC と割り切って Auto ML Table 用のデータ整形に使うという意味では特に問題にならないケースも多々あると思います)

モデルのトレーニング

project を作り Tables を選択

GCP のメニュー
GCP のメニュー

GCP の Dashboard から Project を作成し (既にある場合は既存の Project を使う形でも大丈夫です)、 人工知能->Tables を選択します

新しいデータセットを作る

Tables のダッシュボードから、 新しいデータセット ボタンをクリックし、適当な名前を決めてデータセットを作ります

リージョンは現在グローバルと欧州しかなさそうなので、グローバルを選択しておきます

image

image

データをインポートする

データセットを作ったら、データをインポートします

image

手元で作った CSV を使う場合は パソコンからファイルをアップロードする を選択します

CSV のアップロード先は GCS (Google Cloud Storage) になるため、バケットを新規で作るか既存のバケットを選択する必要があります

また、データが BigQuery などに置いてある場合は直接 BigQuery を指定する事もできます

トレーニングの設定を行う

データのインポートが終わったらトレーニングの設定を行います

image

ターゲット列 で予測をしたいカラムを指定します

もちろん ターゲット列 で指定したカラムはトレーニングからは除外されます

また必要があれば各カラムのデータ型を調整します

インポート時に自動で推定してくれますが、整数データなどはカテゴリ型と推定される事もあるため必要があれば調整が必要です

image

他のパラメータを編集 をクリックすると、データ分割の方法を指定可能です

例えば 2020年1月から12月のデータを持っているといった場合には、 時間列 を指定すると 2020年1月から11月のデータをトレーニングに使い、12月のデータをテストに使う、といった事が簡単に設定できます

全ての設定が終わったら モデルのトレーニング をクリックします

モデルの評価

モデルのトレーニングが終わったらメールなどで通知がきます

評価 タブを選択するとAUC や Confusion Matrix, Feature importance などが確認できます

image

ここでの結果を見る事で、持っているデータを使ってモデルを構築した場合のだいたいの予測精度に検討をつける事が可能なのではと考えています

ここで精度があがってこなかった場合はいくつかの原因が考えられます

  1. データが良くない
  2. 持っているデータから予測出来るような課題じゃない

1 の可能性を潰すために、データの準備に戻って所謂特徴量エンジニアリングを行うと、精度が大きく向上する事もあります

一方ここで結果が良すぎる場合には、なにがしかのデータリークが発生している可能性が高いので、その場合にもデータに戻って、本来ありえない情報が入力に入っていないか、といった事を確認する必要があります

まとめ

Google Auto ML Table について解説しました

PoC を行なう事の利点として、少なくとも手持ちのデータでどれくらいの精度が出せそうという期待値が設定できる事だと思います

ここである程度期待値がわかる事で、実装上の都合で Auto ML Table とは別の技術 (例えば LGBM や Pytorch を使って ANN でモデルを組むなど) を使う必要があったとしても、データが悪いのか実装や設計が悪いのかといった切り分けがある程度可能になります

Google Auto ML Table を使う事で、例えば高度なスキルを持ったデータサイエンティストが居なくても PoC を進める事が可能になる場合があり、データはあるけど上手く使えていないという場合には積極的に活用してくのが良いと思います