BigQuery ML で時系列予測にカスタム ホリデーを使用する方法
Google Cloud Japan Team
※この投稿は米国時間 2023 年 7 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。
時系列予測は、小売、通信、エンターテイメント、製造など、さまざまな業界で最も重要なモデルの一つです。収益や在庫レベルの予測などの多くのユースケースで活用されており、時系列が BigQuery ML で特に人気のあるモデルの一つとなっていることは当然と言えます。時系列データの変化や変動に対応するために、時系列予測モデルでは休日を定義することが重要となります。このブログ投稿では、最近強化された機能を利用してカスタム ホリデーを定義し、BigQuery ML の予測モデルの説明可能性を高める方法について説明します。
時系列モデルの作成時には、あらかじめ HOLIDAY_REGION を指定できます。モデルは、その HOLIDAY_REGION 内の休日情報を使用して、休日効果をキャプチャします。しかし、お客様からは、モデリングにどの休日が使用されるのか、モデル内の個々の休日がどのような影響を与えるのか、モデリング用に独自の休日をカスタマイズまたは作成できるのかなど、休日効果を詳細に理解したいとの声が寄せられていました。
これに対応するため、このたび ARIMA_PLUS と ARIMA_PLUS_XREG でカスタム ホリデー モデリング機能のプレビュー版をリリースしました。これらの機能によって、次のことができるようになりました。
BigQuery の一般公開データセット bigquery-public-data.ml_datasets.holidays_and_events_for_forecasting にクエリを実行するか、テーブル値関数 ML.HOLIDAY_INFO を使用して、すべての組み込みの休日データにアクセスする(予測モデルのフィッティングに使用される休日データを検査できます)
標準の GoogleSQL を使用して休日データ(主な日付や休日効果期間など)をカスタマイズし、時系列予測の精度を高める
各休日が予測結果に与える影響を説明する
これらの機能の使い方に入る前に、まずカスタム ホリデー モデリングとこの機能が必要な理由を理解しましょう。Google のデベロッパー向け主力イベントである Google I/O に関する Wikipedia ページの毎日のページビューを予測したいとします。Google I/O の参加者が多いことを考えると、イベント開催日の前後にこのページへのトラフィックが大幅に増加することが予想されます。イベント開催日と前後の日付は Google 固有の日付であり、デフォルトの HOLIDAY_REGION には含まれていないため、予測されるページビューでは、これらの日付付近の急増について十分な説明が得られません。したがって、予測の説明可能性を高めるためには、モデルにカスタム ホリデーを指定する機能が必要です。カスタム ホリデー モデリング機能の導入により、BigQuery ML を使って、よりパワフルで正確な時系列予測モデルを構築できるようになりました。
次のセクションでは、BigQuery ML での予測において新しいカスタム ホリデー モデリングを使用する例をご紹介します。この例では、Google I/O の毎日のページビューを示す bigquery-public-data.wikipedia データセットを調査し、Google I/O イベントのカスタム ホリデーを作成します。次に、モデルを使用して過去のデータから毎日のページビューを予測し、カスタマイズした休日カレンダーを考慮に入れます。
米国に拠点を置く大手金融機関のデータ サイエンティストは、次のように語っています。「技術面での凍結や市場の不安定化による凍結など、さまざまな理由により『技術的な休日』がある銀行では、カスタムの休日カレンダーを利用したいと考えています。また、Arima の ML モデルをトレーニングする際に、これらの凍結カレンダーを組み込みたいと考えています。」
例: Google I/O に関する Wikipedia の毎日のページビューを予測する
ステップ 1. データセットを作成する
BigQuery は、すべての言語にわたって 1 時間ごとの Wikipedia ページビュー データをホストします。はじめに、日別とすべての言語別にデータを集計します。
ステップ 2: カスタム ホリデーなしで予測する
ここで通常の予測を行います。2017 年から 2021 年までの毎日のページビュー データを使って 2022 年のページビューを予測します。
Looker Studio を使用して ml.explain_forecast の結果を可視化し、次のグラフを取得できます。
ご覧のように、予測モデルは全体的な傾向をかなりよく捉えています。ただし、以前の Google I/O イベントに関連するトラフィックの増加は捕捉できず、2022 年の正確な予測も生成できていません。
ステップ 3: カスタム ホリデーを使って予測する
下の表からわかるように、Google I/O は 2017 年から 2022 年の以下の日付で開催されています。これらの日付も考慮するように予測モデルに指示します。ご覧のように、Google I/O イベントの完全な日付リストを予測モデルに提供しました。さらに、イベント前後の潜在的なビュー トラフィックをキャプチャするために、イベント日の前後 4 日間を含めるよう休日効果の時間枠も調整します。
Looker Studio で可視化すると、次のグラフが表示されます。
グラフからわかるように、カスタム ホリデーは予測モデルのパフォーマンスを大幅に向上させており、今回は予測モデルが Google I/O に起因するページビューの増加を完全に捉えています。
ステップ 4: 休日効果を詳しく説明する
ml.explain_forecast を使用すると、個々の休日による休日効果をさらに調べることができます。
結果は次のようになります。Google I/O は実際に、カスタム ホリデーの全体的な予測結果に多大な休日効果をもたらしていることがわかります。
ステップ 5: モデルのパフォーマンスを比較する
最後に、ml.evaluate を使用して、カスタム ホリデーなしで作成された以前のモデルと、カスタム ホリデーを使用して作成された新しいモデルのパフォーマンスを比較します。具体的には、今後のカスタム ホリデーを予測する際に新しいモデルがどのように機能するかを確認したいので、2022 年の Google I/O の週に時間範囲を設定しています。
次の結果が得られました。新しいモデルのパフォーマンスが大幅に向上していることがわかります。
まとめ
上記の例では、予測にカスタム ホリデーを使用し、予測モデルへの影響を評価する方法を説明しました。一般公開データセットと ML.HOLIDAY_INFO テーブル値関数もまた、モデルのフィッティングにどの休日が使用されているのかを理解するのに役立ちます。この機能には、次のようなメリットがあります。
標準の GoogleSQL を使用してカスタム ホリデーを簡単に構成でき、BigQuery のスケーラビリティ、データ ガバナンスなどを活用できます。
BigQuery での時系列予測の透明性と説明可能性が高まります。
次のステップ
予測モデルのカスタム ホリデー モデリングがプレビュー版で試用できるようになりました。BigQuery ML のチュートリアルでその方法をご確認ください。詳細については、ドキュメントをご覧ください。
謝辞: BigQuery ML チームの Xi Cheng、Haoming Chen、Jiashang Liu、Amir Hormati、Mingge Deng、Eric Schmidt、Abhinav Khushraj に感謝します。Google Resource Efficiency Data Science チームの Weijie Shen と Jean Ortega にも感謝を申し上げます。
- BigQuery ML ソフトウェア エンジニア Honglin Zheng
- BigQuery ML プロダクト マネージャー Anant Prakash