欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

【论文阅读】TimesNet:用于一般时间序列分析的时态二维变量建模

最编程 2024-04-06 07:07:04
...

TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis

引用: Wu H, Hu T, Liu Y, et al. Timesnet: Temporal 2d-variation modeling for general time series analysis[C]//The eleventh international conference on learning representations. 2022.

作者:Haixu Wu, Tengge Hu, Yong Liu, Hang Zhou, Jianmin Wang, Mingsheng Long

单位:清华大学软件学院

论文: [2210.02186] TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis (arxiv.org)

代码: https://github.com/thuml/timesnet

简介

文章的重点是时间变化建模,这是广泛分析任务的常见关键问题。单个时间点通常无法提供足够的语义信息进行分析,时间变化更能反映时间序列的内在属性,如连续性、周期性、趋势等。

许多经典方法假设时间变化遵循预定义的模式,例如ARIMA,Holt-Winter和Prophet。然而,现实世界时间序列的变化通常过于复杂,无法被预定义的模式所覆盖,从而限制了这些经典方法的实际适用性。

当前基于深度学习的方法,主要有三类:

  1. 采用递归神经网络(RNN)基于马尔可夫假设对连续时间点进行建模。然而,这些方法通常无法捕获长期相关性,并且它们的效率受到顺序计算范式的影响。

  2. 利用沿时间维度的卷积神经网络(TCN)来提取变化信息,由于一维卷积核的局部性,它们只能对相邻时间点之间的变化进行建模,因此在长期依赖性方面仍然存在不足。

  3. 基于Transformer的模型采用注意力机制或其变体来捕捉时间点之间的成对时间依赖性,但注意力机制很难直接从离散的时间点中找出可靠的依赖关系。

对于时间序列,可以观测到两种明显变化:

  1. 周期内变化:表示一个时期内的短期时间模式,真实世界的时间序列通常呈现多周期性,例如天气观测的每日和年度变化,电力消耗的每周和季度变化。这些多个周期相互重叠和相互作用,使得变化建模变得棘手

  2. 周期间变化:反映连续不同时期的长期趋势,每个时间点的变化不仅受其相邻区域的时间格局影响,而且与其相邻周期的变化高度相关

因此,作者从多周期性的新维度分析了时间序列。基于对时间序列多周期性的观察,论文提出了2D变化建模的TimesNet,将1D时间序列转换为2D张量(1D时间序列很难同时明确地呈现两种不同类型的变化),将周期内变化和周期间变化分别嵌入到2D张量的列和行中,最终将时间变化的分析扩展到2D空间。TimesNet在五个主流时间序列分析任务中实现了一致的最先进水平,包括短期和长期预测、插补、分类和异常检测。

注意,对于没有明确周期性的时间序列,变化将由周期内变化主导,并且等效于具有无限周期长度的时间序列

在这里插入图片描述

Method

Transform 1D-Variations Into 2D-Variations

如图1所示,每个时间点同时涉及两种类型的时间变化,其相邻区域和不同周期之间的相同阶段,即期内和期间变化。然而,这种原始的一维时间序列结构只能呈现相邻时间点之间的变化。为了解决这一局限性,探索了时间变化的二维结构,它可以明确地呈现周期内和周期之间的变化,从而在表示能力方面具有更大的优势,并有利于后续的表示学习。

具体来说,对于具有 C C C 个变量的长度为 T T T 时间序列,原始 1D 序列结构为 X 1 D ∈ R T × C X _ { 1 D } \in R ^ { T \times C } X1DRT×C为了表示周期间变化,需要首先提取周期。从技术上讲,通过快速傅里叶变换(FFT)分析频域中的时间序列如下:

A = A v g ( A m p ( F F T ( X 1 D ) ) ) A = A v g ( A m p ( F F T ( X _ { 1 D } ) ) ) A=Avg(Amp(FFT(X1D)))

{ f 1 , ⋯   , f k } = a r g T o p k ( A ) \left\{ f _ { 1 } , \cdots , f _ { k } \right\} = a r g T o p k ( A ) {f1,,fk}=argTopk(A)

p i = [ T f i ] , i ∈ { 1 , ⋯   , k } p _ { i } = \left[ \frac { T } { f _ { i } } \right] , i \in \left\{ 1 , \cdots , k \right\} pi=[fiT],i{1,,k}

这里,FFT(·) 和 Amp(·) 表示 FFT 和振幅的计算。 A ∈ R T A \in R ^ { T } ART 表示每个频率的计算幅度,该振幅通过 Avg(·)计算 C 个维度的平均 。考虑频域的稀疏性,避免无意义的高频带来的噪声,只选择top-k的振幅值,得到最有效频率 { f 1 , ⋯   , f k } \left\{ f _ { 1 } , \cdots , f _ { k } \right\} {f1,,fk},其中 k k k是超参数。这些选定的频率也对应于 k k k 周期长度 { p 1 , ⋯   , p k } \left\{ p _ { 1 } , \cdots , p _ { k } \right\} {p1,,pk}。由于频域的共轭性,只考虑 { 1 , ⋯   , [ T 2 ] } \left\{ 1 , \cdots , \left[ \frac { T } { 2 } \right] \right\} {1,,[2T]} 以内的频率。上述公式可以总结如下:

A , { f 1 , ⋯   , f k } , { p 1 , ⋯   , p k } = P e r i o d ( X 1 D ) A , \left\{ f _ { 1 } , \cdots , f _ { k } \right\} , \left\{ p _ { 1 } , \cdots , p _ { k } \right\} = P e r i o d ( X _ { 1 D } ) A,{f1,,fk},{p1,,pk}=Period(X1D)

根据选择的频率 { f 1 , ⋯   , f k } \left\{ f _ { 1 } , \cdots , f _ { k } \right\} {f1,,fk} 和相应的周期长度 { p 1 , ⋯   , p k } \left\{ p _ { 1 } , \cdots , p _ { k } \right\} {p1,,pk},可以通过以下方程将一维时间序列 X 1 D ∈ R T × C X _ { 1 D } \in R ^ { T \times C } X1DRT×C 转换为多个二维张量:

X 2 D i = R e s h a p e p i , f i ( P a d d i n g ( X 1 D ) )   , i ∈ { 1 , ⋯   , k } X _ { 2 D } ^ { i } = R e s h a p e _ { p _ { i } , f _ { i } } ( P a d d i n g ( X _ { 1 D } ) ) \ , i \in \left\{ 1 , \cdots , k \right\} X2Di=Reshapepi,fi(Padding(X1D)) ,i{1,,k}

其中 Padding(·) 是沿时间维度将时间序列补零,使其与 R e s h a p e p i , f i ( . ) R e s h a p e _ { p _ { i } , f _ { i } }(.) Reshapepi,fi(.) 匹配,其中 p i p_i pi f i f_i fi 分别表示转换后的 2D 张量的行数和列数。请注意,习二维 X 2 D i ∈ R P i × f i × C X _ { 2 D } ^ { i } \in R ^{P_i \times f _ { i } \times C} X2DiRPi×fi×C 表示基于频率 f i f_i fi 的第 i i i 个重塑时间序列,其列和行分别表示相应周期长度 p i p_i pi 下的周期内变化和周期间变化。最终,如图所示,根据选定的频率和估计周期,得到了一组 2D 张量 { X 2 D 1 , ⋯   , X 2 D k } \left\{ X _ { 2 D } ^ { 1 } , \cdots , X _ { 2 D } ^ { k } \right\} {X2D1,,X2Dk},它表示了 k