Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BQMLことはじめ

shimacos
January 14, 2021

 BQMLことはじめ

社内の技術共有会で発表した資料です。
BQMLの概要について紹介しています。
更に、KaggleのOtto Group Product Classification Challengeのデータを用いて以下のBQMLの機能を試し、肌感について述べています。
- ロジスティック回帰
- KMeans
- XGBoost
- DNN
- Tensorflow modelのインポート

使用したコードについても以下に公開しています。
https://github.com/shimacos37/bqml-tutorial
タスクランナーとしてinvokeを用いていたり、jinja2テンプレートでSQLをなるべく簡潔に書いています。

shimacos

January 14, 2021
Tweet

More Decks by shimacos

Other Decks in Technology

Transcript

  1. 3 名前 島越 直⼈ (シマコシ ナオト) よくトリゴエと間違えられますがシマコシです。 Twitter @nt_4o54 経歴

    奈良県出⾝ 京都⼤学 機械理⼯学専攻 卒業 2019/04 ~ DeNA新卒⼊社 2020/04 ~ MoTに出向中 ⾃⼰紹介
  2. 7 BigQuery上でMLモデルを構築できる 2021/01/14時点で以下のモデルに対応 l 線形回帰 l ロジスティック回帰 l KMeans l

    Matrix Factorization (要申し込み) l ARIMA l XGBoost l DNN l Tensorflow modelのインポート l AutoML Tables (ベータ版) BQMLとは
  3. 9 料⾦ BQMLの概要 https://cloud.google.com/bigquery-ml/pricing?hl=ja モデル 値段 線形回帰, ロジスティック回帰, KMeans, ARIMAの訓練

    普通のBQクエリの50倍の値段 ($250 / TB) AutoML, DNN, XGBoostの訓練 普通のBQクエリと同じ値段 ($5.00 / TB) + AI Platform費用 BQMLで作成したモデルを用いた予測 普通のBQクエリと同じ値段 ($5.00 / TB)
  4. 15 ⼊⼒変数の変換 (データ型に応じて⾃動変換) BQMLの⼊⼒ https://cloud.google.com/bigquery-ml/docs/reference/standard-sql/bigqueryml-syntax-create?hl=ja#inputs ⼊⼒データ型 変換⽅法 INT64, NUMERIC, FLOAT64

    標準化 (KMeansを⽤いるときはOptionで選択) BOOL, STRING, BYTES, DATE, DATETIME, TIME One-hot Encoding (XGBoostはLabel Encoding) ARRAY Multi-hot Encoding TIMESTAMP TIMESTAMPから⾃動的に年・⽉・週・ 分・曜⽇・⽇などを抽出し、 One-hot Encoding (秒は標準化) STRUCT 各Fieldを⾃動的に単⼀の列に展開
  5. 16 ⼊⼒変数の補完 BQMLの⼊⼒ https://cloud.google.com/bigquery-ml/docs/reference/standard-sql/bigqueryml-syntax-create?hl=ja#imputation 特徴量列の種類 補完⽅法 数値列 訓練時に⼊⼒した データ全体の平均値で補完 One-hot

    / Multi-hot Encode列 訓練時は追加カテゴリとして扱い、 未知のデータは予測時に重み0とする TIMESTAMP列 秒に関しては平均値 その他は追加カテゴリとして扱う STRUCT 各Fieldのタイプに応じて補完
  6. 22 コード (https://github.com/shimacos37/bqml-tutorial) ロジスティック回帰: 訓練, OOF予測, test予測 XGBoost: 訓練, 予測はロジスティック回帰と同様

    DNN: 訓練, 予測はロジスティック回帰と同様 KMeans: 訓練, 予測 Tensorflow: インポート, OOF予測, test予測 Stacking: 訓練, OOF予測, test予測 訓練と予測
  7. 27 l 簡単に訓練を並列化できる l 前処理を⾃動的にしてくれるのは楽 l ⼀度SQLを書いてしまうと管理は簡単 (な気がする) l 推論をBQ上で完結できる

    (GKEなどを使わなくて良い) l 推論がスキャン量の課⾦だけで済む (インスタンス代を削れる) ここは良いよBQML