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

BigQueryで行う、 機械学習のための データ前処理

hiroaki
December 18, 2019

BigQueryで行う、 機械学習のための データ前処理

hiroaki

December 18, 2019
Tweet

More Decks by hiroaki

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide