文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

用时间序列语言模型彻底改变预测分析现状

2024-11-29 19:30

关注

译者 | 布加迪

审校 | 重楼

ChatGPT和Bard等大语言模型(LLM)的兴起已极大地改变了许多人的工作、交流和学习方式,这已不是什么秘密。但除了取代搜索引擎外,LLM还有其他应用。最近,数据科学家已重新改造LLM用于时间序列预测。

时间序列数据在从金融市场到气候科学的各个领域无处不在。在人工智能进步的推动下,LLM 正在彻底改变我们处理和生成人类语言的方式。本文深入研究时间序列语言模型如何提供创新的预测和异常检测模型。

什么是时间序列模型?

大体上说,时间序列语言模型被重新改造后用于处理时间序列数据,而不是处理文本、视频或图像数据。它们将传统时间序列分析方法的优点与语言模型的高级预测功能相结合。当数据与预测或预期结果有明显偏差时,可以使用强大的预测来检测异常。时间序列语言模型和传统LLM之间的一些显著差异如下:

与分析和预测时间序列数据的传统方法相比,时间序列语言模型具有多个显著优势。不像ARIMA 等传统方法通常需要广泛的领域专业知识和手动调整,时间序列语言模型则利用先进的机器学习技术自动从数据中学习。这使得它们在传统模型可能不尽如人意的众多应用领域成为强大且多功能的工具。

时间序列语言模型的实际运用

一些用于预测和预测分析的最流行的时间序列语言模型包括:谷歌的TimesFM、IBM的TinyTimeMixer和AutoLab的MOMENT。

谷歌的TimesFM可能最容易使用。使用pip安装它,初始化模型,并加载检查点。然后,你可以对输入数组或Pandas DataFrames执行预测。比如:

```python
import pandas as pd
# e.g. input_df is
#       unique_id  ds          y
# 0     T1         1975-12-31  697458.0
# 1     T1         1976-01-31  1187650.0
# 2     T1         1976-02-29  1069690.0
# 3     T1         1976-03-31  1078430.0
# 4     T1         1976-04-30  1059910.0
# ...   ...        ...         ...
# 8175  T99        1986-01-31  602.0
# 8176  T99        1986-02-28  684.0
# 8177  T99        1986-03-31  818.0
# 8178  T99        1986-04-30  836.0
# 8179  T99        1986-05-31  878.0

forecast_df = tfm.forecast_on_df(
    inputs=input_df,
    freq="M",  # monthly
    value_name="y",
    num_jobs=-1,
)

谷歌的TimesFM还支持微调和协变量支持,这是指模型能够结合和利用额外的解释变量(协变量)以及主要时间序列数据,以提高预测的准确性和稳健性。你可以在此论文(https://arxiv.org/pdf/2310.10688)中详细了解谷歌的TimesFM工作原理。

IBM的TinyTimeMixer包含用于对多变量时间序列数据执行各种预测的模型和示例。此笔记本(https://github.com/ibm-granite/granite-tsfm/blob/main/notebooks/hfdemo/ttm_getting_started.ipynb)重点介绍了如何使用TTM(TinyTimMixer)对数据执行零样本预测和少样本预测。下面的屏幕截图显示了TTM生成的一些估计值:

最后,AutoLab的MOMENT拥有预测和异常检测方法,并附有一目了然的示例。它擅长长范围预测。举例来说,该笔记本表明了如何通过先导入模型来预测单变量时间序列数据:

```python
from momentum import MOMENTPipeline

model = MOMENTPipeline.from_pretrained(
    "AutonLab/MOMENT-1-large", 
    model_kwargs={
        'task_name': 'forecasting',
        'forecast_horizon': 192,
        'head_dropout': 0.1,
        'weight_decay': 0,
        'freeze_encoder': True, # Freeze the patch embedding layer
        'freeze_embedder': True, # Freeze the transformer encoder
        'freeze_head': False, # The linear forecasting head must be trained
    },
)
```

下一步是使用你的数据训练模型进行正确的初始化。在每个训练轮次之后,都会针对测试数据集评估模型。在评估循环中,模型使用output = model(timeseries, input_mask) 这一行进行预测。

```python 
while cur_epoch < max_epoch:
    losses = []
    for timeseries, forecast, input_mask in tqdm(train_loader, total=len(train_loader)):
        # Move the data to the GPU
        timeseries = timeseries.float().to(device)
        input_mask = input_mask.to(device)
        forecast = forecast.float().to(device)
 
        with torch.cuda.amp.autocast():
            output = model(timeseries, input_mask)
```

结语

时间序列语言模型是预测分析领域的重大进步,它们将深度学习的强大功能与时间序列预测的复杂需求结合在一起。它们能够执行零样本学习、整合协变量支持,并高效处理大量数据,这使它们成为各行各业的革命性工具。随着我们见证这一领域的快速发展,时间序列 语言模型的潜在应用和优势只会不断扩大。

若要存储时间序列数据,请查看领先的时间序列数据库InfluxDB Cloud 3.0。你可以利用InfluxDB v3 Python客户端库和InfluxDB来存储和查询时间序列数据,并运用时间序列LLM进行预测和异常检测。你可以查看下列资源开始上手:

原文Transform Predictive Analytics With Time Series Language Models,作者:Anais Dotis-Georgiou

来源:51CTO内容精选内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯