Slide 1

Slide 1 text

BigQueryで行う、 機械学習のための データ前処理 GCPUG Tokyo December 2019 長谷川大耀 (Fringe81)

Slide 2

Slide 2 text

自己紹介 長谷川大耀(@Hase8388)         で 機械学習の開発やってます

Slide 3

Slide 3 text

BigQueryで機械学習が行えると何が嬉しい? ● 大量のデータから、安く簡単にデータセットを構築できる ● SQLで処理ができるので、誰でも簡単に実行可能 ● BQMLで構築したモデルにシームレスにデータを流し込める 今回話すこと さらによりよいモデルを作るために、 BQ(ML)での前処理を行うための方法の紹介 話さないこと アルゴリズムの話など、モデル自体の仕組みの話

Slide 4

Slide 4 text

機械学習では、前処理がなぜ重要? 解くべきタスクの本質を、 より明らかな形として表現するデータに加工することで、 モデルの性能を更に引き出すことができる 1. 概観の把握 2. 特徴量の作成、変換 3. モデルにデータセットを流し込む それぞれのフェイズで 代表的な関数+自分が好きな関数を紹介します

Slide 5

Slide 5 text

1. データの概観するための関数 ● 分布の概観把握なども簡単にできる ● 基本的な統計集約関数

Slide 6

Slide 6 text

より複雑な分析や可視化はJupyterで Jupyter上でBQの出力結果を DataFrameとして格納し、pandas/matplotlibなどで分析 google-cloud-bigqueryでJupyter上から接続 https://googleapis.dev/python/bigquery/latest/magics.html#module-google.cloud.bigquery.magics 誤ったクエリでの重課金を 防ぐために、課金される容量に 上限もつけれる

Slide 7

Slide 7 text

2. 特徴量を作成するための関数 様々な特徴量作成・変換のための 前処理用の関数が、最近続々追加 ! ● ML.QUANTITLE_BUCKTIZE 連続値から、多項式特徴量を作成

Slide 8

Slide 8 text

2. 特徴量を作成するための関数 様々な特徴量作成・変換のための 前処理用の関数が、最近続々追加 ! ● ML.FEATURE_CROSS 交差特徴量を作成

Slide 9

Slide 9 text

2. 特徴量を作成するための関数 様々な特徴量作成・変換のための 前処理用の関数が、最近続々追加 ! ● ML.NGRAMS 文章を指定した単位で分かち書き

Slide 10

Slide 10 text

3. 特徴量を変換するための関数 特徴量の変換も、 短いクエリで簡単に実行可能 ! ● IF 二値化

Slide 11

Slide 11 text

3. 特徴量を変換するための関数 特徴量の変換も、 短いクエリで簡単に実行可能 ! ● ML.QUANTITLE_BUCKTIZE 連続値を指定した数の binに振り分ける

Slide 12

Slide 12 text

3. 特徴量を変換するための関数 特徴量の変換も、 短いクエリで簡単に実行可能 ! ● ML.MIN_MAX_SCALER ● ML.STANDARD_SCALER 正規化、標準化

Slide 13

Slide 13 text

ex. 地理情報をHash化する: ST_GEOHASH 地理情報をカテゴリとして扱うために Hash化するなら、ST_STGEOHASHが便利 ! Hash値を長くすればするほど、 より詳細な位置情報を表現できる

Slide 14

Slide 14 text

3. 前処理したデータをモデルに流し込む 課題: BQMLで作成したモデルにデータセットを流し込む その時、学習、予測、評価で、イチイチ同じ前処理を行うのはシンドい 学習 データ 前処理 評価 データ 前処理 予測 データ 前処理 モデル モデルを使う人が前処理のロジックを 知っている必要がある。つらい 学習時 予測時 重複!

Slide 15

Slide 15 text

3. 前処理とモデルを一体化: TRANSFORM句 前処理を集約-隠蔽でき、 より使いやすいモデルが構築できる 学習 データ 評価 データ 前処理 予測 データ モデル 解決: 前処理モデルの中に組み込み、 予測、評価ではただ元のデータを流し込むだけで良い 学習時 予測時

Slide 16

Slide 16 text

最後に BigQuery(ML)を使うと、SQLだけで簡単に前処理とモデル構築が行える 新しい関数とアルゴリズムがどんどん追加されているので、今後がより楽しみ

Slide 17

Slide 17 text

エンジニアを積極採用中です ! Front-end Back-end Scala / Go Python JS / Elm React / RN