当前位置: 首页 > news >正文

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

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


文章目录

  • 1. TimesFM 为何可以成为“基础模型”?
  • 2. 使用 AI.FORECAST 进行预测:
    • 2.1 关键参数:
  • 3. 金融科技用例:预测每日移动支付交易量
    • 3.1 使用 AI.FORECAST 生成预测:
    • 3.2 结果解读:
  • 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 资源。

语法非常简单:

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 表。

CREATE OR REPLACE TEMP TABLE MobilePayments AS
SELECTDATE('2025-01-01') AS transaction_date,'App Payments' AS channel,CAST(1500 + RAND() * 500 AS INT64) AS transactions_volume
UNION ALL
SELECTDATE('2025-01-02') AS transaction_date,'App Payments' AS channel,CAST(1550 + RAND() * 500 AS INT64) AS transactions_volume
UNION ALLSELECTDATE('2025-01-01') AS transaction_date,'QR Code Payments' AS channel,CAST(800 + RAND() * 300 AS INT64) AS transactions_volume
UNION ALL
SELECTDATE('2025-01-02') AS transaction_date,'QR Code Payments' AS channel,CAST(820 + RAND() * 300 AS INT64) AS transactions_volumeUNION ALL
SELECTDATE('2025-01-01') AS transaction_date,'SMS Payments' AS channel,CAST(300 + RAND() * 100 AS INT64) AS transactions_volume
UNION ALL
SELECTDATE('2025-01-02') AS transaction_date,'SMS Payments' AS channel,CAST(310 + RAND() * 100 AS INT64) AS transactions_volume;

3.1 使用 AI.FORECAST 生成预测:

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

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:

在这里插入图片描述

http://www.lryc.cn/news/626690.html

相关文章:

  • 不会写 SQL 也能出报表?积木报表 + AI 30 秒自动生成报表和图表
  • sqlalchemy 是怎么进行sql表结构管理的,怎么进行数据处理的
  • 深度学习核心技巧
  • SQL-leetcode— 2356. 每位教师所教授的科目种类的数量
  • Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发送重平衡(reblanace)
  • Mybatis执行SQL流程(五)之MapperProxy与MapperMethod
  • 在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本2)
  • 力扣 hot100 Day79
  • 大数据常见问题分析与解决方案
  • ODPS 十五周年实录 | 为 AI 而生的数据平台
  • Flask高效数据库操作指南
  • 面向AI应用的新一代迷你电脑架构解析 ——Qotom Q51251AI
  • 【39页PPT】大模型DeepSeek在运维场景中的应用(附下载方式)
  • imx6ull-驱动开发篇31——Linux异步通知
  • Jumpserver堡垒机使用VNC录入Linux图形界面资产
  • 十大经典 Java 算法解析与应用
  • 机器学习--数据清洗—(续篇)
  • (nice!!!)(LeetCode 每日一题) 1277. 统计全为 1 的正方形子矩阵 (动态规划)
  • C++ MFC/BCG编程:文件对话框(CFileDialog、CFolderPickerDialog)
  • 力扣48:旋转矩阵
  • 数据结构之排序大全(1)
  • 2.Shell脚本修炼手册之---创建第一个 Shell 脚本
  • 大模型入门实战 | 单卡 3090 十分钟完成 Qwen2.5-7B 首次微调
  • 电脑驱动免费更新? 这款驱动管理工具:一键扫更新,还能备份恢复,小白也会用~
  • c语言多任务处理(并发程序设计)
  • iOS App 混淆工具实战 医疗健康类 App 的安全与合规保护
  • Elasticsearch 写入全链路:从单机到集群
  • [系统架构设计师]面向服务架构设计理论与实践(十五)
  • [element-plus] el-tree 拖拽到其他地方,不拖拽到树上
  • Vue3 element ui 给表格的列设置背景颜色