一文汇总:时序预测中的多频率建模方法
频率是时间序列的一个重要信息。给定一个时间序列,可以通过按照不同频率的聚合,获得不同粒度的时间序列。比如,给定的原始时间序列是以小时为粒度的,那么通过将24个点加和成1个点,就可以形成以天为粒度的时间序列数据。不同的粒度,包含的信息也不同。粒度越细,越能体现时间序列的局部特征,同时噪声也更大;粒度越粗,序列更加平滑,反应了时间序列的全局特性,噪声较少,但是也损失了很多信息。
由于粒度的粗粒,所有含的信息不同,因此业内针对这个现象,提出了一系列的多频率建模方法,将不同频率的聚合序列同时引入到模型中,实现信息的互补。这篇文章就给大家汇总一下单变量时间序列预测中,实现多频率建模的核心思路。
1.多频率建模核心方法
对于原始的时间序列,需要将其转换为模型输入。这其中目前常见的有2种方法:第一种是每个时间步的数值直接输入模型中,也就是每个时间步的值使用一个MLP映射成embedding,输入到模型中;第二种方法是将时间序列划分成patch,每个patch包含多个时间步,patch内通过MLP映射成一个embedding,再输入到模型中。
多频率建模的核心优化也就在这个过程中体现。对于第一种输入形式,可以通过不同尺度的average pooling操作,对时间序列先进行一步聚合,再将不同尺度average pooling的汇聚结果输入到模型中。对于第二种输入形式,通过控制不同的patch尺寸,实现不同粒度的数据组织形式,再输入到模型中。
在此技术上,还有更进一步的优化。例如,模型由多层组成,在不同的层中,输入不同的粒度;又比如,让模型自动的去学习一个最优的粒度划分方法,提升多粒度建模的效果。
下面汇总一些多粒度建模的代表性工作和方法。
2.Patch Transformer引入多频率
很多工作将PatchTST中的输入改为多尺度的patch划分方式,实现多粒度的patch建模,每种粒度的patch提取不同频率的信息。
Multi-resolution Time-Series Transformer for Long-term Forecasting提出了一种多尺寸patch transformer建模方法。对于每一层网络,会有多个分支,每个分支输入不同尺度patch处理的时间序列。每种patch处理方式由窗口长度和步长组成。每个分支独立的使用Transformer对该patch进行编码,将各个branch的结果拼接到一起,经过线性层映射后输入到下一层。
3.Average Pooling引入多频率
TIMEMIXER: DECOMPOSABLE MULTISCALE MIXING FOR TIME SERIES FORECASTING通过不同尺寸的average pooling,在模型中引入多粒度的信息。首先,构造原始时间序列的多粒度形式,最细粒度就是原始的时间序列,上一层使用窗口average pooling进行下采样,逐层构建更粗粒度的序列,形成多粒度时间序列。接下来,由于趋势项和季节项在不同的scale下规律性不同,因此文中在每个细分scale上进一步进行趋势项季节项分解,进行分别建模。
对于季节项,文中指出,粗粒度的季节项信息是由细粒度季节项信息汇聚而成,因此细粒度的季节项信息对于粗粒度的季节项建模非常重要。基于这个考虑,本文的季节项多粒度建模采用了一种从下到上的方式,第N层粒度的表征,会用到下面更细粒度表征的信息。
对于趋势项,和季节项刚好相反,粗粒度反而更能反应趋势项的信息。因此在多粒度趋势项建模中,文中使用了从上到下的建模方法,下层的表征由当前层的趋势项加上上一层趋势项输入编码器的结果得到。
在得到历史多粒度表征后,另一个模块是根据表征进行预测。文中采用了一种类似ensemble的方案,每种粒度的编码,分别过MLP映射到预测结果的维度,不同粒度的预测结果相加,得到最终的预测结果。
4.不同网络层引入不同频率
在一些工作中,对于模型的不同层引入不同粒度,让每层网络专注于一个粒度的信息提取。
A Multi-Scale Decomposition MLP-Mixer for Time Series Analysis提出一种多粒度的patch划分时间序列模型,能够在网络的不同层,根据不同的patch尺寸自适应的进行patch划分,实现不同维度的建模。整体的建模思路和Nbeats比较像,每一层拟合上一层的残差。在一层的MSD-Mixer网络中,首先将时间序列进行patch处理,使用一个Patch Encoder编码,生成当前层时间序列的表示向量。这个表示向量会再经过一个Decoder + Unpatching的反向处理,生成当前层的约结果,然后使用当前层的输入减去这个预测结果得到残差,作为下一层的输入和预测目标。最终使用各个层的预测结果加到一起,得到最终的预测结果。
Multi-resolution Time-Series Transformer for Long-term Forecasting则是在建模过程中,每层Transformer都进行不同频率的merge操作,实现不同层的不同分辨率数据输入。模型的输入序列采用patch的方式,将时间序列分成多个patch。在每层Transformer之后,会将patch进行Merge操作,也就是从细粒度patch转换成粗粒度patch,从底层到上层patch的粒度逐渐变粗。
5.动态多频率Patch
MultiResFormer: Transformer with Adaptive Multi-Resolution Modeling for General Time Series Forecasting提出了一种自适应的多尺度建模方法。这篇文章实现了一种自适应分辨率的设定,即根据时间序列本身的特性,自动选择用什么样的分辨率对时间序列进行patch分割。
实现自适应多粒度建模的核心是Salient Periodicity Detection模块,这个模块用来识别时间序列中最关键的周期信息,主要是通过快速傅里叶变换将时间序列映射到频域,选择频域中幅度最大的topK个主成为作为时间序列的主要周期。接下来,根据这些周期长度,对时间序列进行分patch,每个patch使用一个独立的Transformer分支进行建模,这些Transformer共享参数。每种分辨率的patch会加上一个相应分辨率的可学习embedding进行信息增强。
在各个尺寸patch的建模中,不同patch尺寸的序列长度不同,文中通过差值的方式,将各个尺寸patch的长度对齐,然后在对应时刻进行各个patch表征的融合,得到每层的输出。各个层的输出都保持和输入序列长度一致的形式。
本文转载自 圆圆的算法笔记,作者:Fareise