BigQueryMLでkmeansによるクラスタリング
BigQueryMLで機械学習モデルを構築する
BigQueryには標準SQLを使って機械学習を利用することができますが、BigQueryAPIが有効なプロジェクトでなければいけません。有効になっていなければこちらの「APIsを有効にする」から設定してください。
リファレンスによるとBigQueryMLでサポートされているモデルは以下のようなものです。
・線形回帰
・ロジスティック回帰
・TensorFlow モデルのインポート
詳細はリファレンスが詳しいのでそちらを参照いただければと思いますが、サポートされているkmeans法を使ってGoogleアナリティクスのユーザーのクラスタリングを行いたいと思います。kmeans法はデータをクラスタ(集合体)に分ける代表的な手法です。
create model
`{bigqueryプロジェクトID}.{データセット}.{書き出す先}`
options(model_type='kmeans',num_clusters = 5) as
select
fullvisitortid,
visitnumber,
device.devicecategory,
device.browser,
device.operatingsystem,
geoNetwork.city,
from `{bigqueryプロジェクトID}.{データセット}.ga_sessions_*`
where _table_suffix between '20200101' and '20200131'
;
こちらのクエリではクラスターの数が5つになるように指定しています(num_clusters=5)が、これはオプションなので、指定しなければ何個に分類するかを勝手に判断してくれます。
実行すると宛先テーブルに結果が格納されます。「評価」というタブをクリックすると分類されたクラスターの特徴が下図のサンプルように可視化されます。
紹介したクエリでは、訪問回数、デバイス情報、アクセス地域でクラスター分類していますが、ビジネスによってどんなカテゴリや数字を用いるかは当然異なってくると思います。
結果を活用するイメージを持った上で機械学習を活用するといいのかもしれません。
モデルができればこれを教師データにして、新規ユーザーが分類されたクラスターのどこに該当するかを予測することができますが、それは追々ポストできればと思います。
(統計知識はほぼありませんので、あくまでBigQueryMLの使い方の紹介でした)