跳到主要内容

时间序列学习论文笔记

清华2025年的这一篇工作对时间序列分析做了一个综述。

时序基础概念

时间序列(time series)的定义:按照时间排序的T条观测数据

形式化的定义: X={X1,X2,...,XT}RT×CX = \{ X_1, X_2, ..., X_T \} \in \mathbb{R}^{T \times C}

其中,XtRCX_t \in \mathbb{R}^C是在t时间步下的观测结果,CC表示观测的变量数量

时序分析经典任务:预测、填补、异常检测与时序分类

时序分析的几个基础任务

基础工具与方法

平稳性(Stationarity)

序列的统计属性不随时间而变化的特性,一般是指有稳定的均值和方差

统计分析方法中可以通过差分分析(differencing)、log转换(log-transformation)等方式将非平稳性序列转换成平稳序列

深度学习方法中,一般通过数据归一化实现平稳性的转换:deep adaptive input normalization(DAIN)、RevIN、Non-Stationary Transformer、SAN等工作均有一些研究

序列分解

将原始序列分解成多个子序列,这些子序列可以表达更规律的时序模式

傅立叶变换

模型架构

时序学习模型演变
基座示例
MLPMLP
RNNRNN
CNNCNN
GNNGNN

其中的GNN方法主要用于多变量时序学习,将多个变量之间建边构建成图

Transformer架构

根据建模方法又分成了三类

Point-wise

将每一个独立的序列值直接映射成高纬向量,再使用Tramsformer学习

Ht=Projection(Xt)+PE(Xt)+TE(Xtts)H_t = Projection(X_t) + PE(X_t) + TE(X_t^{ts})

其中,Projection(x)Projection(x)是值映射函数,PE(x)PE(x) 表示位置编码,TE(x)TE(x)是时间编码。

所以这一类的工作主要有两方面,一个是设计好的预处理模块,另一类是改造更适合的注意力机制。RevIN和Non-Stationary等都属于这一分支

这种方法无法很好地学习时间序列中的局部语义。

Patch-wise

将原始时间序列划分成若干个patch,每个patch映射成一个高纬向量,再进行学习的方法 PatchTST是一个经典的patch-wise方法,Pathformer更近一步尝试了动态patching的方法

Series-wise

直接讲一个完整时间序列映射到向量空间,目的是捕获多变量之间的依赖

未来的研究方向

一、时序预训练方法:当前集中在对比学习和掩码学习两方面的探索

SimCLR这类的对比学习方法对时间依赖建模欠缺,因此效果不佳

二、时序基础模型(Time Series Foundation Models):训练时序领域的基础大模型,TimeGPT、Lag-LlaMa、Timer、MOIRAI等都是这方面的尝试

三、语言大模型的直接应用:微调与prompting方式