BigQuery MLとLooker Studioによるお手軽機械学習

はじめに

こんにちは、データ戦略室の伊藤です。普段の業務では、機械学習モデルの作成やインフラ基盤の構築を担当しています。

今回はBigQuery ML(以降BQML)とLooker Studio(旧称データポータル)を使用した事例について、紹介できればと思います。

BQMLとは

BQMLは、BigQuery で標準 SQL クエリを使用して機械学習モデルの作成&予測ができる機能です。BigQuery内で全ての作業が完結するため、他言語の知識や複雑な前処理が不要で、かなりお手軽に機械学習を試すことができます。

現在(2023年2月)サポートされている学習モデルの種類は、以下の通りです。

  • 線形回帰
  • ロジスティック回帰(分類)
  • K 平均法クラスタリング
  • 行列分解
  • 時系列(時系列予測)
  • ブーストツリー(XGBoost ベースの分類モデルと回帰モデル)
  • ディープ ニューラル ネットワーク(DNN)

各モデルの詳細については、公式ドキュメントに分かりやすい説明が記載されているため、本記事では割愛いたします。

これらのほかに、学習済みのTensorFlowモデルからBQML用のモデルを作成する機能や、逆に作成したBQMLのモデルをVertex AIのモデルとしてデプロイして、予測のエンドポイントを公開するような機能も提供されています。

Looker Studioとは

Looker StudioはGoogleが提供する無料BIツールです。(サポートや拡張管理機能等を利用するには、有償版へとアップデートする必要があります)以前はGoogleデータポータルという名称でしたが、2020年にGoogleが買収した別サービスのLookerと統一する形で名称が変わりました。

代表的な使い方として、スプレッドシートやBigQueryをはじめ、様々なデータソースのデータからチャートやグラフなどのレポートを作成できます。

活用事例

先程紹介させていただいたとおり、BQMLはSQLを書くだけで学習モデルの作成&予測が可能です。 シンプルな例として、有名なアヤメの分類問題をブーストツリーで予測する時のクエリを書いてみます。

学習モデルの作成

CREATE OR REPLACE MODEL
  `[データセット名.モデル名]` OPTIONS (MODEL_TYPE='BOOSTED_TREE_CLASSIFIER', -- モデル名・モデルの種類
    BOOSTER_TYPE = 'GBTREE',
    INPUT_LABEL_COLS = ['y'], -- 目的変数
    DATA_SPLIT_METHOD = 'random', -- 評価用のデータセット分割
    DATA_SPLIT_EVAL_FRACTION = 0.20) AS
SELECT
  * EXCEPT(subset) -- 目的変数に指定したカラム以外は、自動的に説明変数として扱う
FROM
  `[データセット名.テーブル名]`
WHERE
  subset = "train" -- 訓練データとテストデータを分けている場合

学習モデルによる予測

SELECT
  *
FROM
  ml.PREDICT( MODEL `[データセット名.モデル名]`,
    (
    SELECT
      * EXCEPT(subset)
    FROM
      `[データセット名.テーブル名]`
    WHERE
      subset = "test" ) )

この時、ml.PREDICT関数の代わりにml.EXPLAIN_PREDICT関数を使用すれば、Explainable AIの機能によってどの特徴量が予測結果に寄与しているかを把握することもできます。

Looker Studioのカスタムクエリ

BQMLの機能によって、BigQueryのコンソール上で予測結果を見れるようになりましたが、更にデータを分かりやすくするために、今度は予測結果をLooker Studio上で表示しようと思います。

上記のクエリをカスタムクエリに入力することで、予測結果を他のデータソースと同じように予測結果をデータとして扱えるようになります。 (パラメータを使用すれば、他のデータソース以上にチャートやグラフをインタラクティブに変化させることも可能です)

一点注意しなければいけない点として、もし予測対象のテーブルが頻繁に更新される場合は、データの更新頻度を設定する必要があります。(例: スプレッドシートに入力されたデータを元に予測して、結果をLooker Studioで表示したい場合)

もちろん、更新頻度を短くするとその分クエリの実行回数は増えてしまいますが、BigQuery上とは違って常にクエリが実行されるわけではないことは、意識しておいた方が良いと思います。

おわりに

今回は、お手軽に機械学習が試せるBQML+その結果を可視化するLooker Studioについてお話しさせていただきました。

機械学習のプロジェクトに限ったことではありませんが、エンジニアが時間をかけて作り込んだものがビジネスの人と温度感が食い違ってしまい、結局日の目を浴びることなく眠ってしまうのはとても悲しいことだと思います。 このような悲劇を避けるためには、BQMLなどを活用して、まずは小さく作ってフィードバックを貰うことを徹底していきましょう。

最後まで読んでくださり、ありがとうございました。