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

BQMLことはじめ

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for shimacos 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をなるべく簡潔に書いています。

Avatar for shimacos

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