BigQuery ML
Introduction to BigQuery ML  |  BigQuery  |  Google Cloud
機械学習 の流れの通り? モデルの作成し、
モデルの評価出力 ML.EVALUATE
トレーニング、特徴量などの結果出力 Model and feature inspection functions
予測 ML.PREDTION
ができる。
モデルの作成
The CREATE MODEL Statement  |  BigQuery  |  Google Cloud
線形回帰線形モデル、ロジスティック回帰(多クラスもある), k-means ..Matrix Factorization tensorflow絡みのもの..
L1, L2の正則化
文字列などは、自動的に one-hot encodingされる。
L1正則化と合わせて、変数選択とかができる?
timestamp型は、
day of month, day of week, month of year, hour of day, minute of hour week of year, yearで特徴量作ってくれる
https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-weights
bq の sql 上で、unix timeを timestamp型に、timestamp_seconds(int t) timestamp_mills(int 100t)
onehot encoding される。 日付・時間の周期表現も欲しい?
評価指標などもテーブルが作られる
holdout で、train, testに分けられて評価。
モデルが保存されるのは、メリットかも。試行錯誤して放置されて、、あとで探すとかあるので。
ただ、モデル作成時の from ... のデータソース?の部分が、BQのUI上で見つからない??? ないのか?
tutorialでは、 Google Analytics のデータを使った購入予測
ロジスティック回帰をセッションごとにかけて、その後に任意のグルーピングをして、そのグループでの購入数を予測
バスケットの3ポイントの試行数?を求めるのはよくわからなかった。
モデルの評価
下の画像
特徴量をみる
struct(true as standarize)で、
all features have a mean of zero and a standard deviation of one.
トレーニング後のモデル段階での、standarize..よくわからない。
標準偏回帰係数の求め方 - 統計学備忘録 since2016
glmnetでロジスティック回帰の標準回帰係数を計算する - Qiita
結果として、最初にデータを標準化した場合と同じとおもってよさそう。
メリっト
ただ、BQでやることで、いろんな線形子の組み合わせや、L1などでの変数選択など、モデルをたくさんつくって保存できるのが利点なのかもしれない。
以下のリンクに利点(基本はエンジニアリング工数の削減、データのexport, プログラミング言語の使用を省く)は列挙されてるが、、、Introduction to BigQuery ML  |  BigQuery  |  Google Cloud
ここにも説明がある。
Google AI Blog: Machine Learning in Google BigQuery
BigQuery ML is based on the standard (batch) variant of gradient descent rather than the stochastic version.
In the future, we plan to further integrate our gradient descent implementation with BigQuery infrastructure to realize more performance gains.
上記の記述は気になった。着実に進化していくだろうか..
Hivemailとかで、データウエアハウス上で直接、学習器を作成して、評価というのはあるようなので(よく知らない)ニーズはありそうだけど、データ分析は事例がなかなか表に出てこないので、世間にニーズがよくわからない。Google は利用ログとかみれば、わかるのかもだけど。
#BigQuery #gcp
グラフがいつの間にか充実してる。recall precision f1score 混同行列などのイメージがつかみやすい。
トレーニングの loss(train/test)、学習率も
評価ステージで、ロジスティクス回帰の threasholdを変えて、評価指標の動きをみる。
f1scoreが最大になるのが表示されるとよいのだが、、
最終的には、evaluationの queryを投げるので、要らない???
https://gyazo.com/6cc036d2b68d05dad9c4a03ff8056661