在SQL中使用大模型时间预测模型TimesFM

文章[Forecasting the Future with BigQueryML TimesFM: A Game-Changer in Time Series Analysis]Google 的 TimesFM 集成到 BigQuery ML 中,代表了时间序列预测领域的范式转变。通过将基础模型的强大功能与 SQL 的简洁性相结合,它使数据专业人员能够轻松生成复杂的预测。


文章目录

  • [1. TimesFM 为何可以成为"基础模型"?](#1. TimesFM 为何可以成为“基础模型”?)
  • [2. 使用 AI.FORECAST 进行预测:](#2. 使用 AI.FORECAST 进行预测:)
    • [2.1 关键参数:](#2.1 关键参数:)
  • [3. 金融科技用例:预测每日移动支付交易量](#3. 金融科技用例:预测每日移动支付交易量)
    • [3.1 使用 AI.FORECAST 生成预测:](#3.1 使用 AI.FORECAST 生成预测:)
    • [3.2 结果解读:](#3.2 结果解读:)
  • [4. 何时选择 TimesFM 与 ARIMA_PLUS:](#4. 何时选择 TimesFM 与 ARIMA_PLUS:)

时间序列预测对于企业预测趋势、规划资源分配和制定决策至关重要。许多传统的时间序列预测方法,例如 自回归积分滑动平均 (ARIMA),在处理大型数据集时存在局限性。然而,基于大型语言模型 (LLM) 构建的基础模型正在彻底改变时间序列预测。

Google Research 的 TimesFM (时间序列基础模型) 在这个新时代中脱颖而出,做出了重大贡献。TimesFM 经过数十亿数据点的预训练,展现出令人印象深刻的零样本性能,其准确性通常接近为特定数据集专门训练的模型,但无需进行该数据集的特定训练。最重要的是,TimesFM 现已直接内置到 BigQuery ML 中,使其预测能力可以通过单个 SQL 函数:AI.FORECAST 来使用。这意味着没有机器学习经验的数据分析师可以使用熟悉的 SQL 语法,为其时间序列数据获取预测。

1. TimesFM 为何可以成为"基础模型"?

  • 像 LLM 一样进行预训练: TimesFM 在大量时间序列数据语料库上进行训练,这使其能够学习和泛化时间模式,例如季节性、趋势和噪声。
  • 零样本学习: TimesFM 的预训练使其能够在无需微调的情况下对未见过的时间序列数据集进行准确预测,这与常规模型形成对比。

该模型能有效地从各种数据中学习,并且预训练数据量大且多样。它包括来自 Google 搜索和维基百科浏览的接近真实的数据,以及来自数学模型的采样数据,因为它还包括来自广泛领域的各种测试数据集。

在设计方面,TimesFM 采用了与自动 LLM 相同的模型架构,即一个仅解码器 Transformer,因此它专为时间序列数据设计。它使用一种"补丁"机制,将时间序列数据切分成小段,这类似于文本中的"标记"。一个新特性是它可以从短补丁创建长补丁,这使其能够更有效地进行长期预测。

2. 使用 AI.FORECAST 进行预测:

使用 AI.FORECAST 时,您不是 在创建新模型或连接到外部端点(如通过 CREATE MODEL REMOTE 连接到 gemini-2.0-flash)。相反,您是在调用一个函数,该函数使用 Google Cloud 中预先存在的、托管的 TimesFM 模型。无需指定 gemini-2.0-flash 等模型,也无需管理 CONNECTION 资源。

语法非常简单:

python 复制代码
SELECT *
FROM AI.FORECAST(
    {TABLE 'project.dataset.table' | (query_statement) },
    data_col => 'your_value_column_name',
    timestamp_col => 'your_timestamp_column_name'



    [, id_cols => ['id_column_1', 'id_column_2']]

    [, horizon => number_of_steps_to_forecast]

    [, confidence_level => probability_value]
);

2.1 关键参数:

  • data_col:包含要预测的数值的列。
  • timestamp_col:包含时间点(DATE, TIMESTAMP)的列。
  • horizon:要预测的未来时间点数量。
  • confidence_level:预测区间概率(例如,0.95 表示 95%)。

3. 金融科技用例:预测每日移动支付交易量

让我们考虑一家金融科技公司,它需要预测不同移动支付渠道的每日交易量。准确的预测有助于流动性管理、欺诈检测和资源分配。

场景: 预测未来 7 天内各种移动支付渠道(例如,App 支付、二维码支付、短信支付)的每日交易量。

虚拟数据集: 我们将创建一个代表历史每日交易量的虚拟 BigQuery 表。

python 复制代码
CREATE OR REPLACE TEMP TABLE MobilePayments AS
SELECT
  DATE('2025-01-01') AS transaction_date,
  'App Payments' AS channel,
  CAST(1500 + RAND() * 500 AS INT64) AS transactions_volume
UNION ALL
SELECT
  DATE('2025-01-02') AS transaction_date,
  'App Payments' AS channel,
  CAST(1550 + RAND() * 500 AS INT64) AS transactions_volume
UNION ALL


SELECT
  DATE('2025-01-01') AS transaction_date,
  'QR Code Payments' AS channel,
  CAST(800 + RAND() * 300 AS INT64) AS transactions_volume
UNION ALL
SELECT
  DATE('2025-01-02') AS transaction_date,
  'QR Code Payments' AS channel,
  CAST(820 + RAND() * 300 AS INT64) AS transactions_volume

UNION ALL
SELECT
  DATE('2025-01-01') AS transaction_date,
  'SMS Payments' AS channel,
  CAST(300 + RAND() * 100 AS INT64) AS transactions_volume
UNION ALL
SELECT
  DATE('2025-01-02') AS transaction_date,
  'SMS Payments' AS channel,
  CAST(310 + RAND() * 100 AS INT64) AS transactions_volume



;

3.1 使用 AI.FORECAST 生成预测:

要同时预测所有渠道未来 7 天的每日交易量:

python 复制代码
SELECT *
FROM AI.FORECAST(
    TABLE MobilePayments,
    data_col => 'transactions_volume',
    timestamp_col => 'transaction_date',
    id_cols => ['channel'],
    horizon => 7,
    confidence_level => 0.90
);

这个简单的查询利用 TimesFM 的强大功能,为 channel 列中识别出的每个不同的支付渠道生成预测。

3.2 结果解读:

AI.FORECAST 函数返回一个包含以下列的表:

  • channel:特定时间序列的标识符(例如,'App Payments')。
  • forecast_timestamp:每个预测点对应的日期。
  • forecast_value:模型对该日期预测的交易量。
  • prediction_interval_lower_boundprediction_interval_upper_bound:实际值预期落入的范围,基于指定的 confidence_level
  • confidence_level:请求的置信水平(例如,0.90)。
  • ai_forecast_status:指示该序列的预测是否成功或包含错误消息。

4. 何时选择 TimesFM 与 ARIMA_PLUS: