Satoshi Yoshimura
Jul 30, 2018 · 6 min read

グルーヴノーツ コンサルタントの吉村です。
先週(日本時間7月26日午前1時過ぎ)に発表されたBigQuery MLを試してみました。

BigQuery MLとはGoogleのDWHであるBigQuery上で線形回帰とロジスティック回帰を実現するものです。 もちろんBigQueryで動くのでモデルを作るところも並列で高速に処理されることが期待できます。

これまで線形回帰といえばR言語やPython、またはExcelの分析ツールアドイン(16項目制限有り)を使っていたかと思います。 これがBigQueryでやればクエリを書けばプログラミングはいらないしデータサイエンティストには便利ですよね。


さて実際に使ってみたいと思います。題材としてはもちろん電力需要で線形回帰でモデルを作って予測していきます。元ネタのデータはこの形です。

説明変数
・月(1〜12の整数が文字列として入っている)
・曜日(0〜6の整数が文字列として入っている)
・休日(0か1が文字列として入っている)
・天気(晴,曇,雨,雪が入っている)
・最低気温(少数を含む数値)
・最高気温(少数を含む数値)
・降水量(整数値)
・日中時間(整数値)
目的変数
・電力需要実績(整数値)

学習データ:2016/04/01〜2018/05/31
予測データ:2018/06/01〜2018/06/16

中身はこのような感じです。


モデル作成

次にこのデータを使ってモデルを作成します。モデルをクエリで作るって不思議な感じですね。 目的変数はlabelという項目名で抽出してあげないといけないみたいです。

# モデル作成
create model `kaiki_bqml.denryoku_model`
options(model_type='linear_reg') as
select
month
,weekday
,holiday
,weather
,min_temp
,max_temp
,rainfall
,daytime
,power as label
from `kaiki_bqml.denryoku_data`
where key between cast('2016-04-01' as date) and cast('2018-03-31' as date)
;

出来上がったモデルについて各種情報を見てみましょう。これらクエリを実行すると見れるようです。

# トレーニング情報
select * from ml.training_info(model `kaiki_bqml.denryoku_model`);
# 特徴の情報
select * from ml.feature_info(model `kaiki_bqml.denryoku_model`);
# 重みの情報
select * from ml.weights(model `kaiki_bqml.denryoku_model`);

重みは下の方も見てみましょう。

すごいですね。天気の日本語のカテゴリデータまでカテゴリごとの重みを算出しています。


予測

もちろん予測もクエリです。予測と同時に答えとの比較もしています。

# 予測と比較
with denryoku_predict as (
select * from `kaiki_bqml.denryoku_data`
where key between cast('2018-06-01' as date) and cast('2018-06-16' as date)
)
select
predict.key as date
,predicted_power
,actual_power
,abs(predicted_power - actual_power) as error_power
from (
select key,predicted_label as predicted_power
from ml.predict(model `kaiki_bqml.denryoku_model`, table denryoku_predict)
) as predict
join (
select key,power as actual_power from denryoku_predict
) as actual
on predict.key = actual.key
order by 1
;

結果が表示されました。この結果をそのままデータスタジオに出せるみたいです。これはいいですね。

クエリを書くだけで線形回帰のモデルを作って、予測もクエリでできるのはすごいですね。また冒頭でも書きましたが今回の数百件のデータではなく数万件ともっと多量のデータだったとしてもBigQueryなら楽にさばくだろうと考えるとBigQuery ML恐ろしいですね。さすがGoogleと言うところです。

google-cloud-jp

Google Cloud Platform 製品などに関連するコミュニティが記載したテクニカル記事集。掲載された意見は著者のものであり、必ずしも Google のものを反映するものではありません。

Satoshi Yoshimura

Written by

google-cloud-jp

Google Cloud Platform 製品などに関連するコミュニティが記載したテクニカル記事集。掲載された意見は著者のものであり、必ずしも Google のものを反映するものではありません。

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade