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

BigQueryMLハンズオン勉強会

yaginuuun
November 09, 2018

 BigQueryMLハンズオン勉強会

11/9 ハンズオン勉強会

yaginuuun

November 09, 2018
Tweet

More Decks by yaginuuun

Other Decks in Technology

Transcript

  1. BigQueryMLハンズオン
    柳沼 慎哉
    グロービス データサイエンティスト
    2018/11/9

    View full-size slide

  2. 自己紹介
    柳沼 慎哉
    - 株式会社グロービス データサイエンティスト
    - Tableau, DataStudioなどBIツールが得意
    - 機械学習、統計学勉強中
    twitter : @shinmaidssin
    Qiita : @s_yaginuma

    View full-size slide

  3. これの分析やってます
    - 「BigQuery ML」でSQLを書いて機械学習モデルを構築&予測でき
    る!
    - BigqueryMLで作成したモデルをGoogle Data Studioで可視化してみ

    - ビギナーズラックで跳ねた記事:
    新米データサイエンティスト、研修プログラムを考える。

    View full-size slide

  4. Qiita書いてます
    - 「BigQuery ML」でSQLを書いて機械学習モデルを構築&予測でき
    る!
    - BigqueryMLで作成したモデルをGoogle Data Studioで可視化してみ

    View full-size slide

  5. アジェンダ
    - BigQueryMLの概要
    - ハンズオン
    - BigQueryMLの強み、弱み
    - 懇親会

    View full-size slide

  6. アジェンダ
    - BigQueryMLの概要
    - ハンズオン
    - BigQueryMLの強み、弱み
    - 懇親会

    View full-size slide

  7. BigQueryMLの概要
    ・BigQuery:SQLライクなクエリを用いて大規模なデータに対しても高速
    に結果を返すことのできるDW
    ・BigQueryML:BigQueryのクエリエディタ上からSQLを書くように機械学
    習モデルの構築、評価、予測ができる
    Docs : すべての BigQuery ML ドキュメント

    View full-size slide

  8. 機械学習モデルとは?
    与えられたデータ(説明変数)から、ターゲットとなる変数(目的変数)を
    予測するモデル。
    目的変数が離散値:分類 目的変数が連続値:回帰

    View full-size slide

  9. 学習のプロセス(線形回帰)
    ①初期化
    y = a0x + b0

    View full-size slide

  10. 学習のプロセス(線形回帰)
    ②損失関数の計算
    y = a0x + b0

    View full-size slide

  11. 学習のプロセス(線形回帰)
    ①重みの更新
    y = a1x + b1

    View full-size slide

  12. 学習のプロセス(線形回帰)
    ④最適化
    y = ax + b

    View full-size slide

  13. 学習のプロセス
    線形回帰
    y = ax1 + bx2 + cx3 + dx4 + e
    a~d:最適化された重み
    重みが格納された配列 = モデル

    View full-size slide

  14. 機械学習モデルとは?
    具体例:コースの完了率
    y = ax1 + bx2 + cx3 + d
    1ヶ月以内の完了率 コースの長さ コースの難易度 1動画の長さ
    説明変数の重みが分かっていれば、新しいコースのリリース前にコース
    完了率を予測できる

    View full-size slide

  15. Python, R vs BigQueryML
    機械学習用のパッケージがあり、そ
    れを利用する必要がある。
    モデルの構築、評価、予測の一
    連のプロセスをSQLライクに書
    いて実行できる
    学習コストが高い
    学習コストが低い

    View full-size slide

  16. アジェンダ
    - BigQueryMLの概要
    - ハンズオン
    - BigQueryMLの強み、弱み
    - 懇親会

    View full-size slide

  17. 機械学習の流れ
    データの下処理
    モデルの作成
    モデルの評価
    新データに対しての予測
    SQLで加工、集計

    View full-size slide

  18. Boston Housing データ
    ・ボストン近辺の住宅価格の予測
    https://www.kaggle.com/c/boston-housing

    View full-size slide

  19. BigQueryにデータセットを作成する
    ・GCPコンソールのナビゲーションメニューからBigQueryを開く
    ・自分のプロジェクト名にカーソルを合わせる
    ・データセットを作成をクリック
    ・データセットIDを入力し、データセットを作成する

    View full-size slide

  20. ・作成したデータセットをクリック
    ・テーブルを作成をクリック
    ・ソースデータ:アップロード → Slackからダウンロードしたデータを選
    択。形式はcsvを選択
    ・テーブル名を入力、スキーマの自動検出をチェック、作成
    作成したデータセット内にテーブルを作成する

    View full-size slide

  21. データの中身
    - 目的変数
    - medv : 区画の家の値段の中央値(/1000$)
    - 説明変数(13個):
    - crim : 犯罪発生率
    - zn : 住宅地の割合
    - indus : 非小売業種の割合
    - chas : チャールズ川の河川境界線かどうか
    - nox : 窒素酸化物濃度
    - rm : 住居あたりの部屋数
    - age : 1940年以前に建設された建物の割合
    - dis : 5つのボストン雇用センターまでの距離の加重平均
    - rad : 高速道路へのアクセスの良さ
    - tax : 1万ドルあたりの固定資産税率
    - ptratio : 生徒と教師の比率
    - black : 黒色人種居住者の割合
    - lstat : 低所得者の割合

    View full-size slide

  22. 機械学習モデルの作成
    CREATE MODEL ステートメント
    CREATE MODEL `<データセット名>.<モデル名>`
    OPTIONS(
    model_type='<使用するアルゴリズム>',
    input_label_cols=['<ターゲットのカラム名>'],
    ...) AS (
    SELECT
    <学習に使用するデータを抽出するクエリ>
    ...)

    View full-size slide

  23. トレーニングデータと評価データについて
    データ
    ・NGなケース
    学習用
    評価用
    モデルは学習データに対して適合するので、評価用データに学習用
    データと同じものを使うと実際よりも高い精度で予測され、真に未知の
    データに対しての予測性能が測定できない!

    View full-size slide

  24. トレーニングデータと評価データについて
    データ
    ・OKなケース
    学習用
    評価用
    予め学習用と評価用に分けておくことで、未知のデータへの予測性能
    を測定することができる

    View full-size slide

  25. 機械学習モデルの評価
    ML.EVALUATE 関数
    SELECT
    *
    FROM
    ML.EVALUATE(MODEL `<モデル名>`,
    (<モデル作成に使用した特徴量を抽出するクエリ>))

    View full-size slide

  26. モデルの評価
    出力される評価指標:
    - mean_absolute_error:平均絶対値誤差
    - mean_squared_error:平均二乗誤差
    - mean_squared_log_error:平均二乗対数誤差
    - median_absolute_error:絶対値誤差の中央値
    - r2_score:決定係数
    - explained_variance:因子寄与
    平均二乗誤差:データに対するズレ → 低い方が良い
    決定係数:データに対する当てはまり → 1に近い方が良い

    View full-size slide

  27. 作成したモデルで予測
    ML.PREDICT 関数
    SELECT
    *
    FROM
    ML.PREDICT(MODEL `<モデル名>`,
    (<予測するのに必要な特徴量を抽出するクエリ>))

    View full-size slide

  28. 特徴量の重みの確認
    ML.WEIGHTS 関数
    SELECT
    *
    FROM
    ML.WEIGHTS(MODEL `<モデル名>`
    y = ax1 + bx2 + cx3 + d

    View full-size slide

  29. BigQueryMLが自動でやってくれること
    数値変数の標準化
    単位:cm, %, kg, $... → 単位が違うと重みを比較できない
    標準化:各データをそれぞれの特徴量の平均値を引き、標準偏差で割

    特徴量の無次元化、スケーリング
    異なる単位でも重みを比較できる

    View full-size slide

  30. 分類:アイリスデータの分類
    BigQueryMLで多クラス分類が可能に!
    Google Cloud ブログ
    折角なのでやってみましょう。

    View full-size slide

  31. 分類:アイリスデータの分類
    - 特徴量:
    - sepal length(cm)
    - sepal width(cm)
    - petal length(cm)
    - petal width(cm)
    - クラス:
    - Setosa
    - Versicolour
    - Virginica

    View full-size slide

  32. 手順:
    - BigQueryにアイリスデータを読み込む
    - iris/create_model.sqlでモデルを作成
    - iris/evaluate_model.sqlでモデルを検証
    - iris/predict.sqlで予測結果を出力

    View full-size slide

  33. 分類モデルの評価
    出力:
    - 予測値
    - 予測確率

    View full-size slide

  34. アジェンダ
    - BigQueryMLの概要
    - ハンズオン
    - BigQueryMLの強み、弱み
    - 懇親会

    View full-size slide

  35. BigQueryMLの良いところ
    - 簡単!
    - データと同じ場所にモデルを置いておける
    - BIツールと連携しやすい(可視化)
    - 自動で色々やってくれる(データの分割、標準化)

    View full-size slide

  36. (補足)BigQueryMLが自動でやってくれること②
    カテゴリ変数のダミー化
    カテゴリ:カテゴリA、カテゴリB、カテゴリC...
    というデータはそのまま機械学習に使えない
    ID カテゴリ
    1 A
    2 B
    3 C
    ID カテゴリ_A カテゴリ_B カテゴリ_C
    1 1 0 0
    2 0 1 0
    3 0 0 1

    View full-size slide

  37. BigQueryMLの微妙なところ
    - 現状使用可能なモデルが少ない
    - BigQueryML単体だと可視化ができない
    - パラメータサーチがしづらい

    View full-size slide

  38. BigQueryMLの微妙なところ
    現状使用可能なモデルが少ない
    機械学習
    教師あり学習
    教師なし学習:未対応
    回帰:線形回帰のみ
    分類:ロジスティック回帰のみ
    クラスタリングや、人気のあるランダムフォレストなどの手法に対応して
    いない。

    View full-size slide

  39. BigQueryMLの微妙なところ
    BigQueryML単体だと可視化ができない
    下処理
    モデルの作成
    モデルの評価
    新データに対しての予測
    EDA
    EDA:探索的データ解析
    分析の初期段階にデータの分布や目的変
    数への影響をデータを可視化、集計しなが
    ら観察する手法
    BigQueryで可視化や集計結果の保持はしづ
    らいため、他のサービスを使用する必要が
    ある

    View full-size slide

  40. BigQueryMLの微妙なところ
    パラメータサーチがしづらい
    ハイパーパラメータ:人間が設定する必要のあるパラメータ
    (例)最適なパラメータAを探したい場合:
    A = 0, 1, 2, 3, 4, 5, 10, ...に対しモデルを作成し精度を計算
    最も精度の高いパラメータの値が最適と判断、採用
    しかし、BigQueryMLではループ処理をサポートしていないため、不可能

    View full-size slide

  41. 現状考えられるユースケース
    ・BigQueryMLのみで全てやるのは考えづらい
    下処理
    モデルの作成
    モデルの評価
    新データに対しての予測
    EDA
    モニタリング
    Datalab
    BigQuery

    View full-size slide

  42. ご静聴ありがとうございました!

    View full-size slide

  43. 懇親会!!

    View full-size slide