いよいよ、BigQueryMLを使って、Webアクセス将来予測を行いましょう
所長のBlogの「GoogleのBigQuery MLを使って、Webのアクセス分析にAIを取り込もう」で予告した、Webアクセス将来予測を、実際に行ってみましょう。
ステップは、至って簡単です。
BigQuery空間に、新しくデータセットを作成
データ予測のためのデータテーブルを作成
ページビュー(PageView)の予測モデルを作成
今後30日間のページビュー(PageView)の予測
なります。
なお、今回使うBigQueryMLは、さまざまなことができます。また、使い方によっては、料金が膨らむことがあるので、気になる方は、以下の文章を確認してください。
BigQuery空間に、新しくデータセットを作成
データの推計では、試行錯誤を行うことが多いので、Google Analytics(GA4)のデータをそのまま、加工や分析に使うことは、あまりお勧めしません。別なデータセットを使って、Webアクセス将来予測を行うのが良いでしょう。
データセットの作り方は、簡単ですが、その前に確認事項があります。Google Cloudの場合は、どのリージョンにデータセットを作るのかを、確認する必要があります。クエリの保存場所で、データセットの保存場所が同じ方が、操作がスムーズなようです。
クエリの保存場所の確認は、以前作成したクエリを開き、その保存リージョンを確認します。
私の場合は、asia-northeast1(東京)だったので、これを参考にしてデータセットを作成します。
データセットの作成の仕方は、簡単で、自分のBigQueryのプロジェクトの横の「3点」マークから、「データセットを作成」を選ぶだけです。
すると、データセットの設定画面が出てくるので、自分でデータセットの名前を決めて、データセットのリージョンをクエリと同じに設定すれば、OKです。
上記の「データセットを作成」を押すと、BigQueryのプロジェクト内に、新しいデータセットができていると思います。
データ予測のためのデータテーブルを作成
さぁ、あとは、SQLの作成を3つ行うだけで、とてもシンプルです。
まずは、Google Analytics(GA4)のデータから、予測モデル作成のためのデータベースを作成します。
今回は、SQLを貼り付けるので、このSQLを自分の環境に合わせて変更してください。なお、このSQLも実は、AIに生成してもらいました。それは、次回の所長のBlogで種明かしをしましょう。
まずは、新規のクエリを開き、そこに以下をコピペしましょう。
CREATE OR REPLACE TABLE `big-query-learning-429123.predict.GA4` AS
# big-query-learning-429123 は、自分の環境に合わせて変更してください。
# predict は、先ほど作った、データセット名です。
SELECT
DATE(TIMESTAMP_MICROS(event_timestamp)) AS date,
COUNT(DISTINCT user_pseudo_id) AS users,
COUNT(*) AS total_events,
SUM(IF(event_name = 'page_view', 1, 0)) AS pageviews
FROM
`big-query-learning-429123.analytics_404904409.events_*`
# big-query-learning-429123.analytics_404904409.events_* は、自分の環境に合わせて変更してください。
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY
date
ORDER BY
date;
このクエリを保存して、実行しましょう。保存する時の場所は、先ほど同じ自分のリージョンにするのが良いでしょう。
これを、実行すると、先ほど作った、predictフォルダーの下に、GA4というデータテーブルが作成されています。
ページビュー(PageView)の予測モデルを作成
これは、以下のSQLをコピペするだけです。
CREATE OR REPLACE MODEL `big-query-learning-429123.predict.traffic_forecast_model`
# big-query-learning-429123 は、自分の環境に合わせて変更してください。
# predict は、先ほど作った、データセット名です。
OPTIONS(
model_type='ARIMA_PLUS',
time_series_timestamp_col='date',
time_series_data_col='pageviews',
auto_arima = TRUE,
data_frequency = 'DAILY',
holiday_region = 'JP' -- 日本の休日を考慮する場合
) AS
SELECT
date,
pageviews
FROM
`big-query-learning-429123.predict.GA4`;
# big-query-learning-429123 は、自分の環境に合わせて変更してください。
# predict は、先ほど作った、データセット名です。
実行すると、今回作ったデータセットの下に、モデルも作成されます。
今後30日間のページビュー(PageView)の予測
最後に、過去のデータから、ここでは、今後30日間のページビューの将来予測を行ってみましょう。
SQLは以下のようにシンプルです。
SELECT
forecast_timestamp AS date,
forecast_value AS predicted_pageviews
FROM
ML.FORECAST(MODEL `big-query-learning-429123.predict.traffic_forecast_model`,
# big-query-learning-429123 は、自分の環境に合わせて変更してください。
# predict は、先ほど作った、データセット名です。
STRUCT(30 AS horizon, 0.8 AS confidence_level))
ORDER BY
date;
実行すると、以下のように、将来のページビューが予測されます。
Webアクセス将来予測を、今後も行うには
この将来予測は、過去のデータが多く蓄積されるほど、予測の精度が高くなります。なので、ぜひ繰り返し、この手法を重ねて、AI予測を体験してください。
また、将来予測のパラメーターも変更、調整可能な場所が多いので、そこもこれから、遊んでみようと思います。
Comments