- はじめに
- Google Auto ML Tables とは
- 実際に使ってみる
- データの準備
- モデルのトレーニング
- project を作り Tables を選択
- 新しいデータセットを作る
- データをインポートする
- トレーニングの設定を行う
- モデルの評価
- まとめ
はじめに
DROBE ではサービスの設計段階から、データサイエンスで使う事を念頭に多くのデータを取得して運用や機械学習に活かしてきました
正直データが多すぎて使いきれていないというような状況でもあるのですが、Google の Auto ML Tables を使う事で、ほぼノンプログラミングで機械学習機能の PoC が可能です
この記事では Google Auto ML Table の簡単な使い方について解説します
Google Auto ML Tables とは
Google Auto ML Tables とは Google が GCP 上で提供する機械学習のサービスです (2021 年 5 月現在、まだ β 版です)
Auto ML Tables では主に Feature Engineering, Model Selection, Hyperparameter tuning を自動でやってくれるというものです
利用する側は、教師となる正解データを含む入力データを準備してやるだけで、あとは 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 の Dashboard から Project を作成し (既にある場合は既存の Project を使う形でも大丈夫です)、 人工知能->Tables
を選択します
新しいデータセットを作る
Tables のダッシュボードから、 新しいデータセット
ボタンをクリックし、適当な名前を決めてデータセットを作ります
リージョンは現在グローバルと欧州しかなさそうなので、グローバルを選択しておきます
データをインポートする
データセットを作ったら、データをインポートします
手元で作った CSV を使う場合は パソコンからファイルをアップロードする
を選択します
CSV のアップロード先は GCS (Google Cloud Storage) になるため、バケットを新規で作るか既存のバケットを選択する必要があります
また、データが BigQuery などに置いてある場合は直接 BigQuery を指定する事もできます
トレーニングの設定を行う
データのインポートが終わったらトレーニングの設定を行います
ターゲット列
で予測をしたいカラムを指定します
もちろん ターゲット列
で指定したカラムはトレーニングからは除外されます
また必要があれば各カラムのデータ型を調整します
インポート時に自動で推定してくれますが、整数データなどはカテゴリ型と推定される事もあるため必要があれば調整が必要です
他のパラメータを編集
をクリックすると、データ分割の方法を指定可能です
例えば 2020年1月から12月のデータを持っているといった場合には、 時間列
を指定すると 2020年1月から11月のデータをトレーニングに使い、12月のデータをテストに使う、といった事が簡単に設定できます
全ての設定が終わったら モデルのトレーニング
をクリックします
モデルの評価
モデルのトレーニングが終わったらメールなどで通知がきます
評価
タブを選択するとAUC や Confusion Matrix, Feature importance などが確認できます
ここでの結果を見る事で、持っているデータを使ってモデルを構築した場合のだいたいの予測精度に検討をつける事が可能なのではと考えています
ここで精度があがってこなかった場合はいくつかの原因が考えられます
- データが良くない
- 持っているデータから予測出来るような課題じゃない
1 の可能性を潰すために、データの準備に戻って所謂特徴量エンジニアリングを行うと、精度が大きく向上する事もあります
一方ここで結果が良すぎる場合には、なにがしかのデータリークが発生している可能性が高いので、その場合にもデータに戻って、本来ありえない情報が入力に入っていないか、といった事を確認する必要があります
まとめ
Google Auto ML Table について解説しました
PoC を行なう事の利点として、少なくとも手持ちのデータでどれくらいの精度が出せそうという期待値が設定できる事だと思います
ここである程度期待値がわかる事で、実装上の都合で Auto ML Table とは別の技術 (例えば LGBM や Pytorch を使って ANN でモデルを組むなど) を使う必要があったとしても、データが悪いのか実装や設計が悪いのかといった切り分けがある程度可能になります
Google Auto ML Table を使う事で、例えば高度なスキルを持ったデータサイエンティストが居なくても PoC を進める事が可能になる場合があり、データはあるけど上手く使えていないという場合には積極的に活用してくのが良いと思います