时间序列大模型:TimeGPT

论文:https://arxiv.org/pdf/2310.03589.pdf
TimeGPT,这是第一个用于时间序列的基础模型,能够为训练期间未见过的多样化数据集生成准确的预测。
大规模时间序列模型通过利用当代深度学习进步的能力,使精确预测和减少不确定性成为可能!通过对预训练模型进行了评估,并与既定的统计、机器学习和深度学习方法进行了比较,证明了TimeGPT在性能、效率和简单性方面表现出色。
1 介绍
时间序列数据在金融、医疗保健、气象学、社会科学等领域是不可或缺的,识别时间模式、趋势和周期性变化对于预测未来价值和为决策过程提供信息至关重要。然而,目前对时间序列的理论和实践理解尚未在从业者中达成共识,预测科学领域的努力未能实现真正通用的预训练模型的承诺。
2 背景
深度学习方法在时间序列分析中具有显著优势,如全局性、可扩展性、灵活性和潜在准确性,能有效学习复杂数据依赖关系,避免复杂特征工程。然而,其有用性、准确性和复杂性受到质疑。学术研究人员和从业者对深度学习模型的优越性能看法不一,有人质疑其基本假设,而一些行业领导者报告其增强了成果,简化了分析流程。时间序列分析领域对神经预测方法的性能持怀疑态度,源于评估设置未对齐或定义不清晰、次优模型、缺乏符合要求的大规模标准化数据集。更大和更多样化的数据集能使更复杂的模型在各种任务中表现得更好。

图1 单系列预测和多系列预测示意图
3 相关综述
深度学习预测模型在研究和产业中广泛应用,其成功源于对已建立的架构(RNN和CNN)的改进。这些模型最初是为自然语言处理和计算机视觉设计的,但现已广泛应用于时间序列预测。RNNs如DeepAR用于概率预测,而CNN在多项任务中表现优于RNN。前馈网络由于计算成本低、效率高,也经常被使用,N-BEATS和NHITS是著名的例子。近年来,基于Transformer的模型越来越受欢迎,因为它们在大规模设置和复杂任务中表现出卓越的性能。TFT和MQTransformer是早期的例子,通过Prob-sparse自注意力机制,Informer为长序列预测引入了Transformers。此后,该概念在Autoformer、FEDformer和PatchTST等模型中得到了进一步改进。基础模型在时间序列预测任务中的潜力仍然未被充分探索,但有迹象表明可以在不降低性能的情况下将预训练模型转移到不同任务上,且在时间序列预测任务中存在数据和模型规模的扩展律。
4 时间序列的基础模型
迁移学习是指将一项任务中学到的知识应用于解决新任务的能力。在时间序列预测中,预测模型提供一个函数fθ,将特征空间X映射到因变量空间Y。设定中,X包括目标时间序列y和外生协变量x,Y为目标时间序列的未来部分。预测任务的目标是估计条件分布:

迁移学习是在大型源数据集上预训练模型,以提高其在新预测任务上的性能。本文探讨了两种情况:零样本学习和微调。在零样本学习中,直接转移预训练的模型解决新任务,无需在新数据集上重新训练参数。在微调中,进一步在新数据集上训练模型(从预先训练的参数开始)。基础模型的核心思想是利用这些原则,通过最大的公开可用时间序列数据集进行训练,利用数据集和模型规模的比例关系。多种多样的数据集允许TimeGPT从未有过的大量时间模式中获得洞见,这些模式跨越多个领域。
5 TimeGPT实践
5.1 介绍及使用
TimeGPT 是一种由 Nixtla 开发的专门用于预测任务的生成式预训练 Transformer 模型,具有自我关注机制,采用历史值窗口生成预测,添加局部位置编码,由多层编码器-解码器结构组成,每个结构都具有残差连接和层归一化。最后,线性层将解码器的输出映射到预测窗口维度。TimeGPT旨在处理不同频率和特征的时间序列,同时适应不同的输入大小和预测范围。这种适应性在很大程度上归因于TimeGPT所基于的基于transformer的底层架构。
TimeGPT可以仅使用历史值作为输入,无需训练即可对新时间序列进行准确预测。TimeGPT在历史上最大的数据集上进行了训练,该数据集包含超过1000亿行的金融、天气、能源和网络数据,并使时间序列分析的力量大众化。该工具能够在几秒钟内辨别模式并预测未来的数据点。
TimeGPT模型“读取”时间序列数据的方式与人类读取句子的方式非常相似——从左到右。它查看过去数据的窗口,我们可以将其视为“标记”,并预测接下来会发生什么。该预测基于模型在过去数据中识别并推断未来的模式。
API为TimeGPT提供了一个接口,允许用户利用其预测功能来预测未来的事件。TimeGPT还可以用于其他与时间序列相关的任务,如假设场景、异常检测、财务预测等。
安装
pip install nixtlats 
如何使用
只需导入库,然后用两行代码就可以开始预测!
df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv') 
 
from nixtlats import TimeGPT 
timegpt = TimeGPT(# defaults to os.environ.get("TIMEGPT_TOKEN")token ='my_token_provided_by_nixtla')
fcst_df = timegpt.forecast(df, h=24, level=[80,90]) 
INFO:nixtlats.timegpt:Validating inputs...INFO:nixtlats.timegpt:Preprocessing dataframes...INFO:nixtlats.timegpt:Inferred freq: HINFO:nixtlats.timegpt:Restricting input...INFO:nixtlats.timegpt:Calling Forecast Endpoint...
timegpt.plot(df, fcst_df, level=[80,90], max_insample_length=24*5) 
 
5.2 训练数据集
TimeGPT接受了最大的公开时间序列集合的训练,包含1000亿个数据点,涵盖金融、经济等广泛领域。数据集具有多种时间模式、季节性、周期和趋势,以及噪声和异常值。大多数序列以原始形式包含,处理仅限于格式标准化和填补缺失值。这种多样性使TimeGPT能够处理各种场景,增强其鲁棒性和泛化能力,从而准确地预测未知的时间序列。
5.3 训练TimeGPT
TimeGPT在NVIDIA A10G GPU集群上训练,进行了超参数探索,旨在优化学习率和批大小等关键参数。实验结果表明,较大的批大小和较小的学习率对模型性能具有积极的影响。该模型在PyTorch框架中实现,并采用Adam优化器进行训练。我们还实施了学习率衰减策略,将其降低到初始值的12%。
5.4 不确定度量化
概率预测评估模型在风险评估和决策中具有重要作用,其预测的不确定性能够为决策提供重要的参考依据。保形预测作为一种非参数方法,能够生成具有指定覆盖率精度的预测区间,且无需严格的分布假设。这一特性使其在模型和时间序列的未知领域中具有广泛应用。在处理新时间序列推理问题时,我们采用滚动预测的方法来估计模型预测特定目标时间序列的误差,以确保预测的准确性。
6 实验结果
传统的预测性能评估方法,如划分训练集和测试集,已经无法满足基础模型的评估需求。这是因为这些模型的主要功能是预测全新序列。因此,我们特别关注TimeGPT的预测基础模型能力。为了对其进行测试,我们选择了大量未见过的时间序列,包括30万个以上的不同领域数据。测试中,我们关注每个时间序列最后一个预测窗口的评估,其长度会根据采样频率的变化而变化。TimeGPT在预测时,仅使用历史数据作为输入,如图3,并未对模型权重进行再训练(零样本学习)。并且,根据实际需求的不同频率,我们设定了不同的预测范围:12表示每月,1表示每周,7表示每天,24表示每小时的数据。这样的设置更能体现出TimeGPT在实际应用中的价值。

图3 新时间序列的推断。TimeGPT以目标值的历史值和额外的外生变量作为输入,生成预测。我们依靠基于历史误差的保形预测来估计预测区间。

图4 TimeGPT和各组模型在月频率上的相对平均绝对误差(rMAE)。图中每个豆子代表一组模型的rMAE分布,中心线显示平均值。TimeGPT的性能领先,其次是深度学习方法、统计方法、机器学习和基线模型。其他频率的结果类似。
TimeGPT在基准测试中对比了广泛的基线、统计、机器学习和神经预测模型,提供了全面的性能分析。基线和统计模型基于最后一个预测窗口之前的历史值进行训练。我们选择全局模型方法用于机器学习,并利用所有时间序列为每个频率选择深度学习方法。由于计算要求高和训练时间长,排除了Prophet和ARIMA等模型。评价指标包括相对平均绝对误差(rMAE)和相对均方根误差(rRMSE),均以季节性朴素模型为基准进行归一化处理。这些相对误差指标能提供额外洞见,展示相对于已知基准的性能提升,提高结果可解释性。它们还具有尺度独立性,有助于比较每种频率的结果。为确保数值稳定性和评估一致性,对指标进行全局归一化处理。具体计算方式见方程2。
表1 使用零样本推断和使用rMAE和rRMSE测量的基准模型的TimeGPT的主要性能结果,得分越低越好。每个频率和度量的最佳模型以粗体突出显示,第二个最佳模型以下划线突出显示,而第三个最佳模型则以虚线突出显示。
6.1 零样本推理
我们在零样本推理上测试了TimeGPT的功能,即未在测试集上执行额外微调。表1显示了其零样本结果。TimeGPT的性能优于经过战斗测试的综合统计模型和SoTA深度学习方法,在各个频率中排名前三。
评估预测模型的有效性需比较其与竞争替代方案的表现。虽然准确性是关键指标,但计算成本和实现复杂性在实际应用中也至关重要。TimeGPT通过简单、快速地调用预训练模型进行预测,相比其他模型所需的完整训练和预测管道更为优越。
6.2 微调
微调是利用基础模型和基于transformer架构的关键步骤,通过在特定任务数据集上调整模型参数,使模型根据新任务要求调整其广泛知识。此过程保持模型广泛理解,并擅长特定任务。基于transformer的架构受益于微调,提高在特定领域应用的性能。微调是连接基础模型广泛能力和目标任务特性的重要桥梁。如图5所示,TimeGPT在测试集上针对时间序列子集的微调步骤数提高准确度。

图5 对测试集的时间序列子集进行微调后的 TimeGPT 性能
6.3 时间比较
在零样本推断方面,TimeGPT的GPU推断速度为每系列0.6毫秒,与简单季节性朴素推断相当,远快于并行计算优化的统计方法(每系列600毫秒)和全局模型(如LGBM、LSTM和NHITS,每系列57毫秒)。由于其零样本推断能力,TimeGPT的总速度比传统统计方法和全局模型快几个数量级。
7 讨论和未来的研究
TimeGPT通过简化预测过程,显著减少了复杂性和时间投入,同时实现了最先进的性能。在时间序列中引入基础模型是一个重要里程碑,但还有许多未解决的问题。未来的研究方向包括有见地的预测和时间序列嵌入,以及多模态和多时态基础模型的整合。
相关文章:
时间序列大模型:TimeGPT
论文:https://arxiv.org/pdf/2310.03589.pdf TimeGPT,这是第一个用于时间序列的基础模型,能够为训练期间未见过的多样化数据集生成准确的预测。 大规模时间序列模型通过利用当代深度学习进步的能力,使精确预测和减少不确定性成为…...
CloudPanel RCE漏洞复现(CVE-2023-35885)
0x01 产品简介 CloudPanel 是一个基于 Web 的控制面板或管理界面,旨在简化云托管环境的管理。它提供了一个集中式平台,用于管理云基础架构的各个方面,包括虚拟机 (VM)、存储、网络和应用程序。 0x02 漏洞概述 由于2.3.1 之前的 CloudPanel 具有不安全的文件管理器 cook…...
WPF多值转换器
背景:实现Slider拖动可以调整rgb 单转换器:WPF中数据绑定转换器Converter-CSDN博客 在View中: <StackPanel Orientation"Vertical"><Slider x:Name"slider_R" Minimum"0" Maximum"255" Wi…...
x-cmd pkg | perl - 具有强大的文本处理能力的通用脚本语言
目录 介绍首次用户技术特点竞品进一步阅读 介绍 Perl 是一种动态弱类型编程语言。Perl 内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN;在处理文本领域,是最有竞争力的一门编程语言之一 生态系统:综合 Perl 档案网络 (CPAN) 提供了超过 25,0…...
Jedis(一)与Redis的关系
一、Jedis介绍: 1、背景: Jedis是基于Java语言的Redis的客户端,Jedis Java Redis。Redis不仅可以使用命令来操作,现在基本上主流的语言都有API支持,比如Java、C#、C、PHP、Node.js、Go等。在官方网站里有一些Java的…...
K8S--安装Nginx
原文网址:K8S--安装Nginx-CSDN博客 简介 本文介绍K8S安装Nginx的方法。 1.创建Nginx目录及配置文件 mkdir -p /work/devops/k8s/app/nginx/{config,html} 在config目录下创建nginx.conf配置文件,内容如下: # events必须要有 events {wo…...
[BUUCTF]-PWN:babyfengshui_33c3_2016解析
又是一道堆题,先看保护 关键信息是32位,没开pie 直接看ida 大致是alloc创建堆块,free释放堆块,show查看堆块内容,fill填充堆块内容 其他的都没啥关键的要讲,但alloc那里非常需要解析一下 解释如上图 再具…...
小程序系列--9.生命周期
1. 什么是生命周期? 2. 生命周期的分类 3. 什么是生命周期函数 4. 生命周期函数的分类 5. 应用的生命周期函数 6. 页面的生命周期函数...
SQL注入实战操作
一:SQl注入分类 按照注入的网页功能类型分类: 1、登入注入:表单,如登入表单,注册表单 2、cms注入:CMS逻辑:index.php首页展示内容,具有文章列表(链接具有文章id)、articles.php文 章详细页&a…...
Microsoft Remote Desktop for Mac(远程桌面连接)激活版
Microsoft Remote Desktop是一款由微软开发的远程桌面连接工具,它允许用户从另一台计算机或移动设备远程连接到Windows桌面或服务器。 以下是该软件的一些主要特点和功能: 跨平台支持:Microsoft Remote Desktop支持Windows、macOS、iOS和Andr…...
分布式日志
1 日志管理 1.1 日志管理方案 服务器数量较少时 直接登录到目标服务器捞日志查看 → 通过 rsyslog 或shell/python 等脚本实现日志搜集并集中保存到统一的日志服务器 服务器数量较多时 ELK 大型的日志系统,实现日志收集、日志存储、日志检索和分析 容器环境 …...
21.云原生之ArgoCD CICD实战(部分待补充)
云原生专栏大纲 文章目录 部署项目介绍项目结构介绍GitLab CI/CDGitLab CI/CD主要特点和功能 部署测试argocd的cd过程CICD工作流准备工作github中工作流文件创建gitlab中工作流文件创建【实操待补充】GitLab CI示例 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami …...
一文读懂JavaScript DOM节点操作(JavaScript DOM节点操作详解)
一、什么是节点 DOM模型是树状结构模型,二组成这棵树的就是一个个点,在网络术语中称之为节点。 节点是一个模型中最基本的组成单位。DOM模型是由一个个节点组成的,DOM节点也有其不同的类型。 二、节点类型 DOM节点分为5种类型:…...
【Linux】常见指令(一)
前言: Linux有许多的指令,通过学习这些指令,可以对目录及文件进行操作。 文章目录 一、基础指令1. ls—列出目录内容2. pwd—显示当前目录3. cd—切换目录重新认识指令4. touch—创建文件等5. mkdir—创建目录6. rmdir指令 && rm 指令7. man—显…...
C语言大师(8)异常处理
引言 异常处理是C编程中处理运行时错误的关键机制。它通过 try、catch 和 throw 关键字提供了一种强大的方法来处理程序执行中可能出现的异常情况。了解如何有效地使用这些机制对于编写健壮且可维护的程序至关重要。 1. 基本异常处理 在C中,try 块用于包围可能发生…...
网络防御保护——1.网络安全概述
一.网络安全概念 通信保密阶段 --- 计算机安全阶段 --- 信息系统安全 --- 网络空间安全 APT攻击 --- 高级持续性威胁 网络安全(网络空间安全--Cyberspace)从其本质上讲就是网络上的信息安全,指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露…...
SpringBoot整合ElasticSearch实现分页查询
本文使用SpringBoot整合ElasticSearch实现分页查询 文章目录 环境准备 环境准备 还是继续使用spring-boot-starter-data-elasticsearch来实现分页查询操作...
[C++]使用yolov8的onnx模型仅用opencv和bytetrack实现目标追踪
【官方框架地址】 yolov8: https://github.com/ultralytics/ultralytics bytetrack: https://github.com/ifzhang/ByteTrack 【算法介绍】 随着人工智能技术的不断发展,目标追踪已成为计算机视觉领域的重要研究方向。Yolov8和ByTetrack作为当前先进的算法&…...
打造专业级ChatGPT风格聊天界面:SpringBoot与Vue实现动态打字机效果,附完整前后端源码
大家好,今天用SpringBoot、vue写了一个仿ChatGPT官网聊天的打字机效果。 所有代码地址:gitee代码地址 ,包含前端和后端,可以直接运行 使用本技术实现的项目:aicnn.cn,欢迎大家体验 如果文章知识点有错误的地方…...
KMP-重复子字符串
Problem: 459. 重复的子字符串 文章目录 题目思路复杂度Code 题目 给定一个字符串str1, 判断其是否由重复的子串构成。 例子1:输入 str1‘ababab’ ;输出 true 例子2:输入 str1‘ababac’ ;输出 false 思路 重复子字符串组成的字…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
