论文精读 | 2024 [ICLR] TimeMixer: 可分解多尺度融合的时间序列预测

论文标题:TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting

作者:Shiyu Wang(王世宇), Haixu Wu(吴海旭), Xiaoming Shi, Tengge Hu, Huakun Luo, Lintao Ma, James Y. Zhang, and Jun Zhou

机构:蚂蚁集团,清华大学

论文发表:[ICLR 2024]The Twelfth International Conference on Learning Representations

论文链接:https://openreview.net/forum?id=7oLshfEIC2

代码:https://github.com/kwuking/TimeMixer

TL; DR:TimeMixer是一种基于多尺度融合架构的时序预测模型,它通过解耦多尺度时间序列的过去信息和未来预测,实现了在长期和短期预测任务上的卓越性能和效率。

关键词:时序预测,多尺度融合,长时预测,解耦,MLP

原文解读链接:论文精读 | 2024 [ICLR] TimeMixer: 可分解多尺度融合的时间序列预测

标题与作者

🌟【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘!🚀
欢迎大家关注时空探索之旅时空探索之旅QRCode

摘要

TimeMixer模型针对时间序列预测的复杂性提出了一个多尺度混合架构,旨在利用过去可分解混合(PDM)模块提取过去的关键信息,并通过未来多预测器混合(FMM)模块进行未来序列的预测。具体来说,TimeMixer首先通过平均下采样生成多尺度观测,然后PDM采用可分解设计更好地处理季节性和趋势变化的不同属性,通过在精细到粗略和粗略到精细方向上分别混合多尺度季节性和趋势组件。FMM在预测阶段集成多个预测器,利用多尺度观测中的互补预测能力。该模型在多个长期和短期预测任务中均实现了一致的最先进性能,并在所有实验中展现出卓越的效率。

主要工作和创新点

  1. 多尺度混合视角: 论文从一种新的多尺度混合视角来处理时间序列预测中的复杂时间变化,利用解耦变化和来自多尺度序列的互补预测能力。
  2. 简单但有效的预测模型: 论文提出了TimeMixer模型,它在历史信息提取和未来预测阶段都能结合多尺度信息,这得益于论文量身定制的可分解和多预测器混合技术。
  3. 在广泛基准上的一致最先进性能: TimeMixer在一系列广泛的基准测试中实现了长期和短期预测任务的一致最先进性能,并在所有实验中展现出卓越的效率 。

模型框架

  • TimeMixer模型采用了一个多尺度混合架构,旨在解决时间序列预测中的复杂时间变化问题。该模型主要采用全MLP(多层感知机)架构,由过去可分解混合 (PDM)未来多预测器混合 (FMM) 两大块构成,能够有效利用多尺度序列信息。

  • PDM负责提取过去的信息并将不同尺度上的季节性和趋势组分分别混合。

  • FMM通过集成多个预测器(主要是)的方式来提高未来序列的预测准确性,每个预测器都基于不同尺度上的信息进行预测。

整体架构
首先对过去的观察数据 x ∈ R P × C x \in \mathbb{R}^{P \times C} xRP×C进行下采样,通过平均池化最终得到多尺度时间序列的集合 X = { x 0 , … , x M } \mathcal{X} = \{x_0, \ldots, x_M\} X={x0,,xM},其中 x m ∈ R P 2 m × C x_m \in \mathbb{R}^{\frac{P}{2^m} \times C} xmR2mP×C m ∈ { 0 , … , M } m \in \{0, \ldots, M\} m{0,,M} C C C 表示变量的数量。最低级别的序列 x 0 = x x_0 = x x0=x 是输入序列,包含最精细的时间变化,而最高级别的序列 x M x_M xM 代表宏观变化。然后将这些多尺度序列投射到嵌入层得到深层特征 X ( 0 ) \mathcal{X}^{(0)} X(0),可以公式化为 X ( 0 ) = Embed ( X ) \mathcal{X}^{(0)} = \text{Embed}(\mathcal{X}) X(0)=Embed(X)。通过上述设计,得到了输入序列的多尺度表示。

接下来,利用堆叠的过去可分解混合(PDM)块来混合不同尺度的过去信息。对于第 L L L 层,输入是 X l − 1 \mathcal{X}^{l-1} Xl1 并且 PDM 的过程可以公式化为:
X l = PDM ( X l − 1 ) , l ∈ { 0 , … , L } , \mathcal{X}^l = \text{PDM}(\mathcal{X}^{l-1}), \quad l \in \{0, \ldots, L\}, Xl=PDM(Xl1),l{0,,L},
其中 L L L是总层数,并且 X l = { x 0 l , … , x M l } , x m l ∈ R P 2 m × d model \mathcal{X}^l = \{x_0^l, \ldots, x_M^l\}, x_m^l \in \mathbb{R}^{\frac{P}{2^m} \times d_{\text{model}}} Xl={x0l,,xMl},xmlR2mP×dmodel 表示混合过去的表示,有 d model d_{\text{model}} dmodel 通道。
至于未来预测阶段,采用未来多预测器混合(FMM)块来整合提取的多尺度过去信息 X L \mathcal{X}^L XL 并生成未来预测,即:
x ^ = FMM ( X L ) , \hat{x} = \text{FMM}(\mathcal{X}^L), x^=FMM(XL),
其中 x ^ ∈ R F × C \hat{x} \in \mathbb{R}^{F \times C} x^RF×C 代表最终预测。通过上述设计,TimeMixer 能够成功捕捉到来自解开的多尺度观测的关键过去信息,并预测未来,从多尺度过去信息中获益。

PDM模块

通过过去分解混合(PDM)块,将分解的季节和趋势成分分别混合成多个尺度。

具体来说,对于第 l l l 个PDM块,首先将多尺度时间序列 X l \mathcal{X}^l Xl 分解为季节性部分 s l = s 0 l , … , s M l s^l = { s_0^l, \ldots, s_M^l } sl=s0l,,sMl 和趋势部分 t l = t 0 l , … , t M l t^l = { t_0^l, \ldots, t_M^l } tl=t0l,,tMl ,通过来自Autoformer(Wu et al., 2021)的序列分解块。考虑到季节趋势部分的独特属性,将混合操作应用于季节性和趋势术语,以分别与来自多个尺度的信息进行交互。总的来说,第 l l l 个PDM块可以被形式化为:
s m l , t m l = S e r i e s D e c o m p ( x m l ) , m ∈ { 0 , … , M } s_m^l, t_m^l = SeriesDecomp(x_m^l), m \in \{ 0, \ldots, M \} sml,tml=SeriesDecomp(xml),m{0,,M}

x ′ l = x l − 1 + F e e d F o r w a r d ( S − M i x ( ( s m = 0 l ) M ) + T − M i x ( ( t m = 0 l ) M ) ) x'^l = x^l - 1 + FeedForward(S-Mix((s_{m=0}^l)^M) + T-Mix((t_{m=0}^l)^M)) xl=xl1+FeedForward(SMix((sm=0l)M)+TMix((tm=0l)M))

其中 F e e d F o r w a r d ( ⋅ ) FeedForward(\cdot) FeedForward() 包含两个线性层,中间有GELU激活函数,用于通道之间的信息互动。 S − M i x ( ⋅ ) S-Mix(\cdot) SMix(), T − M i x ( ⋅ ) T-Mix(\cdot) TMix() 分别代表季节性和趋势混合。

  • 季节性混合:采用自下而上的方法,纳入低层次精细尺度时间序列的信息,可以为粗尺度的季节性建模补充详细信息。使用自底向上混合层在第 m 个尺度上以残差方式实现季节性信息的自底向上交互,可以被形式化为:

    对于 m : 1 → M m: 1 \rightarrow M m:1M 做: s m l = s m l + B o t t o m − U p − M i x i n g ( s m − 1 l ) s_m^l = s_m^l + Bottom-Up-Mixing(s_{m-1}^l) sml=sml+BottomUpMixing(sm1l)

    其中 B o t t o m − U p − M i x i n g ( ⋅ ) Bottom-Up-Mixing(\cdot) BottomUpMixing() 被实例化为带有中间GELU激活函数的两个线性层,沿着时间维度,其输入维度是 ⌈ P 2 m ⌉ \left \lceil \frac{P}{2^m} \right \rceil 2mP,输出维度是 ⌊ P 2 m ⌋ \left \lfloor \frac{P}{2^m} \right \rfloor 2mP

  • 趋势混合: 针对趋势部分与季节性部分相反,趋势项的详细变化可能会引入噪声,影响宏观趋势的捕获。请注意,较高层次的粗尺度时间序列能够更容易地提供清晰的宏观信息。因此,采用自上而下的混合方法,利用来自粗尺度的宏观知识来指导细尺度的趋势建模。

    技术上,对于多尺度趋势组件 T l = { t 0 l , … , t M l } T^l = \{ t_0^l, \ldots, t_M^l \} Tl={t0l,,tMl},我们采用自上而下的混合层在第 m m m 个尺度上以残差方式实现自上而下的趋势信息交互:

    对于 m : ( M − 1 ) → 0 m: (M - 1) \rightarrow 0 m:(M1)0 做: t m l = t m l + T o p − D o w n − M i x i n g ( t m + 1 l ) t_m^l = t_m^l + Top-Down-Mixing(t_{m+1}^l) tml=tml+TopDownMixing(tm+1l)。(5)

    其中 T o p − D o w n − M i x i n g ( ⋅ ) Top-Down-Mixing(\cdot) TopDownMixing() 是两个带有中间GELU激活函数的线性层,其输入维度是 ⌈ P 2 m + 1 ⌉ \left \lceil \frac{P}{2^m+1} \right \rceil 2m+1P,输出维度是 ⌊ P 2 m ⌋ \left \lfloor \frac{P}{2^m} \right \rfloor 2mP,受到季节性和趋势混合的赋能,PDM逐渐聚合详细的季节性信息从细到粗,并将宏观趋势信息与以往的先验知识融合,最终实现在过去信息提取中的多尺度混合。

    不同混合线性层

FMM模块

在L个PDM块之后获得了多尺度过去的信息,表示为 X L = x 0 L , … , x M L ∈ R P × J × d m o d e l \mathcal{X}^L = {x_0^L, \ldots, x_M^L} \in \mathbb{R}^{P \times J \times d_{model}} XL=x0L,,xMLRP×J×dmodel。由于不同尺度的序列呈现出不同的主导变化,它们的预测也表现出不同的能力。为了充分利用这些多尺度信息,论文提出了一个聚合多尺度序列预测并呈现未来多预测器混合块的方法:

x ^ m = P r e d i c t o r m ( X m L ) , m ∈ { 0 , … , M } , x ^ = ∑ m = 0 M x ^ m , \hat{x}^m = Predictor_m(\mathcal{X}_m^L), m \in \{0, \ldots, M\}, \hat{x} = \sum_{m=0}^M \hat{x}_m, x^m=Predictorm(XmL),m{0,,M},x^=m=0Mx^m,

其中 x ^ m ∈ R F × C \hat{x}_m \in \mathbb{R}^{F \times C} x^mRF×C 代表从第m尺度序列中的未来预测,最终输出是 x ^ ∈ R F × C \hat{x} \in \mathbb{R}^{F \times C} x^RF×C P r e d i c t o r m ( ⋅ ) Predictor_m(\cdot) Predictorm() 指的是第m尺度序列的预测器,首先采用单层线性层直接对长度为F的未来进行回归,从长度为 ⌈ P 2 m ⌉ \lceil \frac{P}{2^m} \rceil 2mP 的过去信息中提取,然后将深层表示投影到C个变量上。注意FMM是一个集合体,不同的预测器基于来自不同尺度的过去信息,使得FMM能够整合混合多尺度序列的补充预测能力。

实验

长期预测数据集

  • ETT(Electricity Transformer Temperature)数据集:包含4个子集(ETTh1, ETTh2, ETTm1, ETTm2),主要信息为温度,以15分钟为频率记录,预测长度为96至720。
  • Weather:气象数据集,记录了21个变量,包括10分钟频率的气象信息,预测长度为96至720。
  • Solar-Energy:太阳能发电数据集,包含137个变量,记录了10分钟频率的电力信息,预测长度为96至720。
  • Electricity:电力消耗数据集,包含321个变量,记录了小时频率的电力信息,预测长度为96至720。
  • Traffic:交通流量数据集,包含862个变量,记录了小时频率的交通信息,预测长度为96至720。

短期预测数据集

  • PEMS(公共环境监测站)数据集:包含PEMS03、PEMS04、PEMS07和PEMS08四个公共交通网络数据集,分别记录了358、307、883和170个变量,预测长度为12,记录频率为5分钟。
  • M4数据集:包含不同频率的100000个时间序列,涵盖小时、日、周、月、季度和年度频率,主要用于短期预测。

实验结果

长期结果

长期结果

短期结果

短期结果(M4)

短期结果(PEMS)

权重和效率分析

效率分析

权重

不同尺度趋势可视化

不同尺度趋势可视化

在本文的附录部分,提供了更为详尽的实验内容供读者参考。对于这些实验的深入分析和讨论,感兴趣的读者可以进一步查阅原文以获取完整的信息和细节。

结论

TimeMixer模型的主要贡献和特点可以总结如下:

  1. 多尺度混合架构:TimeMixer采用了创新的多尺度混合架构,有效处理时间序列数据在不同时间尺度上的变化。
  2. 解耦过去信息:通过Past-Decomposable-Mixing(PDM)模块,模型能够解耦时间序列的过去信息,提取季节性和趋势性特征。
  3. 互补预测能力:利用FutureMultipredictor-Mixing(FMM)模块,TimeMixer集成了多个预测器,以利用多尺度观测数据的互补性,提高预测精度。
  4. 高效的运行时间:得益于全MLP(多层感知机)基础架构,TimeMixer在运行时表现出了良好的效率,适合实时或近实时预测场景。

dictor-Mixing(FMM)模块,TimeMixer集成了多个预测器,以利用多尺度观测数据的互补性,提高预测精度。
4. 高效的运行时间:得益于全MLP(多层感知机)基础架构,TimeMixer在运行时表现出了良好的效率,适合实时或近实时预测场景。

在一系列长期和短期的预测任务中,TimeMixer均取得了一致的先进性能,证明了其在时间序列预测领域的有效性。

🌟【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘!🚀
欢迎大家关注时空探索之旅时空探索之旅QRCode

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/285761.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——禁忌搜索+模拟退火算法(TS+SA)

基于python语言,采用经典禁忌搜索(TS)模拟退火(SA)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果3.1 TS3.2 SA 4. 代码片段参考 往期优质…

MySQL索引(图文并茂)

目录 一、索引的概念 二、索引的作用 三、创建索引的原则依据 四、索引的分类和创建 1、索引的分类 2、索引的创建 2.1 普通索引 2.1.1 直接创建索引 2.1.2 修改表方式创建 2.1.3 创建表的时候指定索引 2.2 唯一索引 2.2.1 直接创建唯一索引 2.2.2 修改表方式创建 …

C 多维数组

C 语言支持多维数组。多维数组声明的一般形式如下: type name[size1][size2]...[sizeN];例如,下面的声明创建了一个三维 5 . 10 . 4 整型数组: int threedim[5][10][4];二维数组 多维数组最简单的形式是二维数组。一个二维数组&#xff0c…

每秒批量插入10000条数据到MySQL中,资源消耗(带宽、IOPS)有多少?

文章目录 🔊博主介绍🥤本文内容起因代码资源情况改造 📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、…

Redis入门到实战-第十二弹

Redis实战热身Bitfields篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的(采用BSD许可证),用作数据库、缓存、消息代理…

Elasticsearch:使用在本地计算机上运行的 LLM 以及 Ollama 和 Langchain 构建 RAG 应用程序

无需 GPU 的隐私保护 LLM。在本博客中,我将演示使用不同的工具 Ollama 构建的 RAG 应用程序。 与本文相关的所有源代码均已发布在 github上。 请克隆存储库以跟随文章操作。我们可以通过如下的方式来克隆: git clone https://github.com/liu-xiao-guo/o…

Unity 学习笔记 5.控制飞机飞行

目录 1.摄像机跟随的方法 2.鼠标按键响应 3.键盘按键响应 4.导入素材 5.让飞机向前飞 6.摄像机跟随飞机移动 7.鼠标控制飞机倾斜 8.键盘控制飞机飞行 下载源码 UnityPackage 1.摄像机跟随的方法 2.鼠标按键响应 3.键盘按键响应 4.导入素材 下载素材 步骤: 将…

itextPdf生成pdf简单示例

文章环境 jdk1.8&#xff0c;springboot2.6.13 POM依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.ite…

3/21 work

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面。&#xff08;不要使用课堂上的图片和代码&#xff0c;自己发挥&#xff0c;有利于后面项目的完成&#xff09; 要求&#xff1a; 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置&#xff0c;通…

网络——套接字编程UDP

目录 端口号 源端口号和目的端口号 认识TCP协议和UDP协议 网络字节序 socket编程接口 socket常见接口 sockaddr结构 UDP socket bind recvfrom sendto 编写客户端 绑定INADDR_ANY 实现聊天功能 端口号 在这之前我们已经说过源IP地址和目的IP地址&#xff0c;还有…

【vue核心技术实战精讲】1.6 - 1.8 VUE 指令 (中)

文章目录 前言 本节内容1、v-on使用v-on好处效果 2、事件修饰符2.1、按键码 (<font color red>已废弃&#xff0c;不用研究)示例效果 3、v-for 列表渲染示例效果 前言 上节,我们学习了 Vue指令之v-text 、 v-html、v-if 、v-show、v-bind 点击进入上一节 本节内容 Vue…

敏捷开发——第二次作业JS/服务器的部署

部署 Web 服务器 1. 安装 Apache HTTP 服务器并部署静态网页应用 ⭐⭐ 默认情况下&#xff0c;Apache 在 /var/www/html 目录下寻找要提供服务的文件。可以将静态网页文件放置在这个目录下 2.安装 Nginx 并部署静态页面应用 3. 实践部分 1. 2. 3. 在 /var/www/html 目录下…

matlab 条件数的倒数

目录 一、概述1、算法概述2、主要函数3、参考文献二、条件设置错误的矩阵的敏感度三、求解单位矩阵的条件四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 1、算法概述

快速上手 Elasticsearch:Docker Compose 部署详解

最近面试竞争日益激烈&#xff0c;Elasticsearch作为一款广泛应用的中间件&#xff0c;几乎成为面试中必考的知识点。最近&#xff0c;AIGC也备受关注&#xff0c;而好多的AI项目中也采用了Elasticsearch作为向量数据库&#xff0c;因此我们迫切希望学习Elasticsearch。对于学习…

鸿蒙NXET实战:高德地图定位SDK【获取Key+获取定位数据】(二)

如何申请key 1、创建新应用 进入[控制台]&#xff0c;创建一个新应用。如果您之前已经创建过应用&#xff0c;可直接跳过这个步骤。 2、添加新Key 在创建的应用上点击"添加新Key"按钮&#xff0c;在弹出的对话框中&#xff0c;依次&#xff1a;输入应用名名称&…

如何修复WordPress网站媒体库上传文件失败的问题

公司最近推出了一系列新产品&#xff0c;为了更新网站的视频和图片&#xff0c;我们需要将它们上传至网站媒体库。然而&#xff0c;在上传视频时&#xff0c;我们却遇到了一些问题。系统提示说&#xff0c;我们尝试上传的视频文件大小超出了站点的最大上传限制。尽管我们的视频…

apisix创建https

总结了下apisix 使用https 的问题和方法 1、apisix 默认https 端口是9443 2、apisix 需要上传证书后才可以使用https 否二curl测试会报错 SSL routines:CONNECT_CR_SRVR_HELLO 3、apisix 上传证书方法 我是使用的自签名证书&#xff0c;注意自签名证书的Common Name 要写你…

Open CASCADE学习|显示文本

目录 1、修改代码 Viewer.h&#xff1a; Viewer.cpp&#xff1a; 2、显示文本 OpenCasCade 你好啊 霜吹花落 1、修改代码 在文章《Open CASCADE学习|显示模型》基础上&#xff0c;增加部分代码&#xff0c;实现对文本显示的支持&#xff0c;具体如下&#xff1a; Viewer…

思腾合力携AI服务器亮相第二十一届中国电博会

博会已发展成为海峡两岸IT产业界规模最大、参展企业最多、产业配套最全的知名展会之一&#xff0c;今年以“数字赋能、创新制造”为主题&#xff0c;线下参展企业达400家。展会期间&#xff0c;举办了论坛与产业洽谈会等系列活动&#xff0c;进一步推动了两岸电子信息产业融合发…

进程和线程,线程实现的几种基本方法

什么是进程&#xff1f; 我们这里学习进程是为了后面的线程做铺垫的。 一个程序运行起来&#xff0c;在操作系统中&#xff0c;就会出现对应的进程。简单的来说&#xff0c;一个进程就是跑起来的应用程序。 在电脑上我们可以通过任务管理器可以看到&#xff0c;跑起来的应用程…