
はじめに
ラスベガスから帰国後、アメリカのジャンキーなご飯と色の濃い飲料が恋しい、松村です。
本ブログでは、前回投稿した記事(※1)にてご紹介した BigQuery ML の新機能のうちの一つ「TimesFM」(プレビュー版)を試した内容をまとめます。具体的には、TimesFM モデルと、WEB サイトの SEO(検索エンジン最適化)をサポートする無料ツール「Google Search Console」(※2) の BigQuery にエクスポートされたデータを組み合わせて、WEB サイト全体の検索パフォーマンスを予測する方法をご紹介します。
(※1)【Google Cloud Next 2025 in Las Vegas】Day 2 参加レポート ~ BigQueryの未来 ~ - NRIネットコムBlog
(※2)参考:Search Console の概要 - Search Console ヘルプ
TimesFM とは
TimesFM(※3)は、Google が開発した時系列データ予測のための基盤モデルです。基盤モデルというのは、特定のタスク専用ではなく、非常に大規模で多様なデータセットを使って事前にトレーニングされた汎用的なモデルのことを指します。
TimesFMの場合、多種多様な実世界の1000億の時系列データポイントでトレーニングされているそうです。この膨大な学習量があるからこそ、私たちが個別に持っているデータに対して、追加のトレーニングやチューニングを行わなくても、ゼロショット(過去データを与えるだけ)で、将来の値を高い精度で予測できる能力を持っているのです。
BigQuery上では、複雑な設定なしに SQL 上で、AI.FORECAST という関数を使用することで、この TimesFM を手軽に利用することができます。
(※3)参考:A decoder-only foundation model for time-series forecasting
TimesFM の一般的な利用シーン
TimesFM は時系列データであれば、どのような分野のデータに対しても利用することができます。例えば、小売業であれば、商品の売上予測や在庫の最適化のために使用することができます。IT の分野では、サーバーリソース使用量の予測に使用することなども、一つの使用方法として考えることができます。
そしてもちろん、今回私が試す WEB サイトの検索パフォーマンス予測も、その一つの選択肢であるというわけです。
実際に使ってみた
それでは、本題である TimesFM を使用して、Google Search Console のデータから WEB サイト全体の表示回数が今後どうなるかを予測してみます。今回は、Google Search Console のデータ(※4)を、BigQuery にエクスポートした際に使用できる「searchdata_url_impression」テーブルを使います。
(※4)参考:テーブルのガイドラインとリファレンス - Search Console ヘルプ
2025年1月1日以降のデータを使って、今後30日間の表示回数を予測したいと思います。
使用する SQL (※5)は、以下の通りです。
(※5)AI.FORECAST 関数の詳細:The AI.FORECAST function  |  BigQuery  |  Google Cloud
SELECT * FROM AI.FORECAST( ( SELECT data_date, -- 日付ごとに表示回数を合計 SUM(impressions) AS num_impressions FROM -- 本 SQL を使用する場合はご自身のテーブル名に置き換えてください `{{projectid}}.{{datasetid}}.searchdata_url_impression` WHERE -- 予測の基にするデータの期間を入力 data_date >= DATE('2025-01-01') GROUP BY data_date ), -- 予測期間を入力 horizon => 30, -- 信頼区間のレベルを入力 confidence_level => 0.95, -- 時間軸となるカラムを入力 timestamp_col => 'data_date', -- 予測対象のデータカラムを入力 data_col => 'num_impressions' )
上記 SQL を実行すると、forecast_timestamp(予測対象日)、forecast_value(予測値)、そして信頼区間の下限・上限(prediction_interval_lower_bound, prediction_interval_upper_bound)などを含んだ結果が返ってきます。「グラフ」タブを確認すると、簡単に実行結果を時系列のグラフを確認することができます。
SQL を使用するだけで、特別なモデル構築の手間なく、時系列データの予測ができました。実際やってみて、こんなにも簡単に使用できることに驚いています。


予測精度を実測値と比較してみる
さて、簡単に予測することはできましたが、「その予測ってどれくらい当たるの?」というのが、正直気になるところです。 そこで、TimesFM が出した予測値と、実際のデータ(実測値)を比較して、どの程度の精度なのかを確認してみました。
具体的には、2025年1月1日から3月31日までのデータを基に、TimesFMで4月1日から4月10日までの10日間の表示回数を予測させました。そして、その予測結果と、実際に記録された4月1日から10日までの表示回数を比較します。
比較のために、以下のようなSQLを実行しました。過去のデータ(実測値)と TimesFM による予測値を UNION ALL で縦に結合し、グラフ化しやすいように整形しています。
-- 実測値を取得 (2025-04-01 から 2025-04-10) WITH historical AS ( SELECT data_date AS date, SUM(impressions) AS num_impressions FROM `{{projectid}}.{{datasetid}}.searchdata_url_impression` WHERE data_date BETWEEN DATE('2025-04-01') AND DATE('2025-04-10') GROUP BY data_date ) -- 実測値の整形 SELECT date, -- 実測値 num_impressions AS historical_value, -- 予測値 (NULL埋め) NULL AS forecast_value, -- データ種別 'historical' AS type, -- 信頼区間下限 (NULL埋め) NULL AS prediction_interval_low, -- 信頼区間上限 (NULL埋め) NULL AS prediction_interval_upper_bound FROM historical UNION ALL -- 予測値を取得 (2025-01-01 から 2025-03-31 のデータで 10日間予測) SELECT DATE(forecast_timestamp) AS date, -- 予測日 -- 実測値カラム (NULL埋め) NULL AS historical_value, -- 予測値 forecast_value AS forecast_value, -- データ種別 'forecast' AS type, -- 信頼区間下限 prediction_interval_lower_bound, -- 信頼区間上限 prediction_interval_upper_bound FROM AI.FORECAST( MODEL => 'timesfm', DATA => ( SELECT data_date, SUM(impressions) AS num_impressions FROM `{{projectid}}.{{datasetid}}.searchdata_url_impression` WHERE -- 予測に使用する過去データ期間 data_date BETWEEN DATE('2025-01-01') AND DATE('2025-03-31') GROUP BY data_date ), OPTIONS => ( -- 予測期間 (10日) horizon => 10, confidence_level => 0.95, timestamp_col => 'data_date', data_col => 'num_impressions' ) )
この SQL の結果を Looker Studio を使用してグラフにしてみると、以下のようになりました。
 青い線が TimesFM による予測値、緑の線が実測値、そして点線が予測の信頼区間(95%)を示しています。グラフを見ると、予測値(青線)と実測値(緑線)が、近い動きをしているのが分かります。
もちろん、完全に一致しているわけではありませんし、日によっては少しズレも見られます。特に、実測値が急に跳ね上がった4月1日や4月7日あたりは、予測が少し追いついていない感じもあります。
青い線が TimesFM による予測値、緑の線が実測値、そして点線が予測の信頼区間(95%)を示しています。グラフを見ると、予測値(青線)と実測値(緑線)が、近い動きをしているのが分かります。
もちろん、完全に一致しているわけではありませんし、日によっては少しズレも見られます。特に、実測値が急に跳ね上がった4月1日や4月7日あたりは、予測が少し追いついていない感じもあります。
しかし、全体的なトレンドや変動のパターンは非常によく捉えられています。特別なチューニングもせず、SQL を1回実行しただけでこれだけの精度が出ることに、正直驚いています。
TimesFM は「手軽に、そこそこ信頼できる未来予測を得たい」というニーズに対して、非常に有用な選択肢になるのではないかと思います。
まとめ
今回は、Google Cloud Next 2025 で発表されたばかりの BigQuery の新機能、TimesFM モデルを使って、Google Search Console のデータを使って、サイト全体の検索パフォーマンス予測とその精度検証を行ってみました。
実際に触ってみて感じたのは、その「手軽さ」と「思った以上の精度」です。もちろん、TimesFM はまだプレビュー段階の機能ですが、現時点でも試してみる価値は十分にあると感じます。ぜひ皆さんも、BigQuery にあるデータを用いて、この新機能を体験し、予測や分析に活かしてみてください。
ただし、予測や分析はあくまで手段ですので、「何のために予測するのか」「その結果をどうアクションに繋げるのか」という目的意識を持って、TimesFM を使うように気を付けましょう。
例えば、今回の例で言えば「Web コンテンツのリニューアルによって、SEOパフォーマンスにどのような影響が出ていそうか確認したい」といった目的を持って TimesFM を使ってみる、などが考えられます。
目的が明確であれば、予測結果の解釈や、次にとるべき行動も、より具体的になると思いますので、ぜひ、目的意識を持ってこの新しい技術と向き合い、皆さんのビジネスや分析業務に活かして頂ければと思います。
