Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
BigQueryMLハンズオン勉強会
yagi
November 09, 2018
Technology
3
340
BigQueryMLハンズオン勉強会
11/9 ハンズオン勉強会
yagi
November 09, 2018
Tweet
Share
More Decks by yagi
See All by yagi
shyaginuma
0
42
shyaginuma
2
3.1k
shyaginuma
0
320
shyaginuma
0
36
shyaginuma
1
780
shyaginuma
1
1.2k
Other Decks in Technology
See All in Technology
manuelmeyer
0
130
youtalk
0
250
karamem0
1
690
norioikedo
0
210
oliva
7
1k
clustervr
0
130
yuzutas0
8
2.8k
hanacchi
0
140
mokocm
0
1k
yosuke_matsuura
PRO
0
170
shirayanagiryuji
1
130
kanaugust
PRO
0
150
Featured
See All Featured
geeforr
332
29k
pedronauck
652
110k
davidbonilla
70
3.6k
deanohume
295
28k
holman
448
130k
bkeepers
52
4.2k
tmm1
61
9.2k
trallard
13
710
62gerente
587
200k
ammeep
656
54k
sstephenson
145
12k
bryan
100
11k
Transcript
BigQueryMLハンズオン 柳沼 慎哉 グロービス データサイエンティスト 2018/11/9
自己紹介 柳沼 慎哉 - 株式会社グロービス データサイエンティスト - Tableau, DataStudioなどBIツールが得意 -
機械学習、統計学勉強中 twitter : @shinmaidssin Qiita : @s_yaginuma
これの分析やってます - 「BigQuery ML」でSQLを書いて機械学習モデルを構築&予測でき る! - BigqueryMLで作成したモデルをGoogle Data Studioで可視化してみ た
- ビギナーズラックで跳ねた記事: 新米データサイエンティスト、研修プログラムを考える。
Qiita書いてます - 「BigQuery ML」でSQLを書いて機械学習モデルを構築&予測でき る! - BigqueryMLで作成したモデルをGoogle Data Studioで可視化してみ た
アジェンダ - BigQueryMLの概要 - ハンズオン - BigQueryMLの強み、弱み - 懇親会
アジェンダ - BigQueryMLの概要 - ハンズオン - BigQueryMLの強み、弱み - 懇親会
BigQueryMLの概要 ・BigQuery:SQLライクなクエリを用いて大規模なデータに対しても高速 に結果を返すことのできるDW ・BigQueryML:BigQueryのクエリエディタ上からSQLを書くように機械学 習モデルの構築、評価、予測ができる Docs : すべての BigQuery ML
ドキュメント
機械学習モデルとは? 与えられたデータ(説明変数)から、ターゲットとなる変数(目的変数)を 予測するモデル。 目的変数が離散値:分類 目的変数が連続値:回帰
学習のプロセス(線形回帰) ①初期化 y = a0x + b0
学習のプロセス(線形回帰) ②損失関数の計算 y = a0x + b0
学習のプロセス(線形回帰) ①重みの更新 y = a1x + b1
学習のプロセス(線形回帰) ④最適化 y = ax + b
学習のプロセス 線形回帰 y = ax1 + bx2 + cx3 +
dx4 + e a~d:最適化された重み 重みが格納された配列 = モデル
機械学習モデルとは? 具体例:コースの完了率 y = ax1 + bx2 + cx3 +
d 1ヶ月以内の完了率 コースの長さ コースの難易度 1動画の長さ 説明変数の重みが分かっていれば、新しいコースのリリース前にコース 完了率を予測できる
Python, R vs BigQueryML 機械学習用のパッケージがあり、そ れを利用する必要がある。 モデルの構築、評価、予測の一 連のプロセスをSQLライクに書 いて実行できる 学習コストが高い
学習コストが低い
アジェンダ - BigQueryMLの概要 - ハンズオン - BigQueryMLの強み、弱み - 懇親会
機械学習の流れ データの下処理 モデルの作成 モデルの評価 新データに対しての予測 SQLで加工、集計
Boston Housing データ ・ボストン近辺の住宅価格の予測 https://www.kaggle.com/c/boston-housing
BigQueryにデータセットを作成する ・GCPコンソールのナビゲーションメニューからBigQueryを開く ・自分のプロジェクト名にカーソルを合わせる ・データセットを作成をクリック ・データセットIDを入力し、データセットを作成する
・作成したデータセットをクリック ・テーブルを作成をクリック ・ソースデータ:アップロード → Slackからダウンロードしたデータを選 択。形式はcsvを選択 ・テーブル名を入力、スキーマの自動検出をチェック、作成 作成したデータセット内にテーブルを作成する
データの中身 - 目的変数 - medv : 区画の家の値段の中央値(/1000$) - 説明変数(13個): -
crim : 犯罪発生率 - zn : 住宅地の割合 - indus : 非小売業種の割合 - chas : チャールズ川の河川境界線かどうか - nox : 窒素酸化物濃度 - rm : 住居あたりの部屋数 - age : 1940年以前に建設された建物の割合 - dis : 5つのボストン雇用センターまでの距離の加重平均 - rad : 高速道路へのアクセスの良さ - tax : 1万ドルあたりの固定資産税率 - ptratio : 生徒と教師の比率 - black : 黒色人種居住者の割合 - lstat : 低所得者の割合
機械学習モデルの作成 CREATE MODEL ステートメント CREATE MODEL `<データセット名>.<モデル名>` OPTIONS( model_type='<使用するアルゴリズム>', input_label_cols=['<ターゲットのカラム名>'],
...) AS ( SELECT <学習に使用するデータを抽出するクエリ> ...)
トレーニングデータと評価データについて データ ・NGなケース 学習用 評価用 モデルは学習データに対して適合するので、評価用データに学習用 データと同じものを使うと実際よりも高い精度で予測され、真に未知の データに対しての予測性能が測定できない!
トレーニングデータと評価データについて データ ・OKなケース 学習用 評価用 予め学習用と評価用に分けておくことで、未知のデータへの予測性能 を測定することができる
機械学習モデルの評価 ML.EVALUATE 関数 SELECT * FROM ML.EVALUATE(MODEL `<モデル名>`, (<モデル作成に使用した特徴量を抽出するクエリ>))
モデルの評価 出力される評価指標: - mean_absolute_error:平均絶対値誤差 - mean_squared_error:平均二乗誤差 - mean_squared_log_error:平均二乗対数誤差 - median_absolute_error:絶対値誤差の中央値
- r2_score:決定係数 - explained_variance:因子寄与 平均二乗誤差:データに対するズレ → 低い方が良い 決定係数:データに対する当てはまり → 1に近い方が良い
作成したモデルで予測 ML.PREDICT 関数 SELECT * FROM ML.PREDICT(MODEL `<モデル名>`, (<予測するのに必要な特徴量を抽出するクエリ>))
特徴量の重みの確認 ML.WEIGHTS 関数 SELECT * FROM ML.WEIGHTS(MODEL `<モデル名>` y =
ax1 + bx2 + cx3 + d
BigQueryMLが自動でやってくれること 数値変数の標準化 単位:cm, %, kg, $... → 単位が違うと重みを比較できない 標準化:各データをそれぞれの特徴量の平均値を引き、標準偏差で割 る
特徴量の無次元化、スケーリング 異なる単位でも重みを比較できる
分類:アイリスデータの分類 BigQueryMLで多クラス分類が可能に! Google Cloud ブログ 折角なのでやってみましょう。
分類:アイリスデータの分類 - 特徴量: - sepal length(cm) - sepal width(cm) -
petal length(cm) - petal width(cm) - クラス: - Setosa - Versicolour - Virginica
手順: - BigQueryにアイリスデータを読み込む - iris/create_model.sqlでモデルを作成 - iris/evaluate_model.sqlでモデルを検証 - iris/predict.sqlで予測結果を出力
分類モデルの評価 出力: - 予測値 - 予測確率
アジェンダ - BigQueryMLの概要 - ハンズオン - BigQueryMLの強み、弱み - 懇親会
BigQueryMLの良いところ - 簡単! - データと同じ場所にモデルを置いておける - BIツールと連携しやすい(可視化) - 自動で色々やってくれる(データの分割、標準化)
(補足)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
BigQueryMLの微妙なところ - 現状使用可能なモデルが少ない - BigQueryML単体だと可視化ができない - パラメータサーチがしづらい
BigQueryMLの微妙なところ 現状使用可能なモデルが少ない 機械学習 教師あり学習 教師なし学習:未対応 回帰:線形回帰のみ 分類:ロジスティック回帰のみ クラスタリングや、人気のあるランダムフォレストなどの手法に対応して いない。
BigQueryMLの微妙なところ BigQueryML単体だと可視化ができない 下処理 モデルの作成 モデルの評価 新データに対しての予測 EDA EDA:探索的データ解析 分析の初期段階にデータの分布や目的変 数への影響をデータを可視化、集計しなが
ら観察する手法 BigQueryで可視化や集計結果の保持はしづ らいため、他のサービスを使用する必要が ある
BigQueryMLの微妙なところ パラメータサーチがしづらい ハイパーパラメータ:人間が設定する必要のあるパラメータ (例)最適なパラメータAを探したい場合: A = 0, 1, 2, 3,
4, 5, 10, ...に対しモデルを作成し精度を計算 最も精度の高いパラメータの値が最適と判断、採用 しかし、BigQueryMLではループ処理をサポートしていないため、不可能
現状考えられるユースケース ・BigQueryMLのみで全てやるのは考えづらい 下処理 モデルの作成 モデルの評価 新データに対しての予測 EDA モニタリング Datalab BigQuery
ご静聴ありがとうございました!
懇親会!!