TS2Vec: Towards Universal Representation of Time Series

系列文章目录

TS2Vec:时间序列的通用表示


AAAI 2022 Zhihan Yue,1,2 Yujing Wang,1,2 Juanyong Duan,2 Tianmeng Yang,1,2 Congrui Huang,2 Yunhai Tong,1 Bixiong Xu2


摘要

本文提出了TS2Vec,一个用于学习任意语义级别的时间序列表示的通用框架。与现有方法不同,TS2Vec在增强的上下文视图上以分层方式执行对比学习,从而为每个时间戳提供了健壮的上下文表示。此外,为了获得时间序列中任意子序列的表示,我们可以对相应时间戳的表示应用简单的聚合。我们对时间序列分类任务进行了大量的实验,以评估时间序列表示的质量。结果表明,TS2Vec在125个UCR数据集和29个UEA数据集上实现了比现有无监督时间序列表示sota的显著改进。学习到的时间戳级表示在时间序列预测和异常检测任务中也取得了较好的效果。在学习到的表示之上训练的线性回归优于以前的时间序列预测的sota。此外,我们提出了一种将学习到的表示应用于无监督异常检测的简单方法,该方法在文献中建立了SOTA结果。源代码可在https://github.com/yuezhihan/ts2vec上公开获得。


提示:以下是本篇文章正文内容,下面案例可供参考

一、介绍

时间序列在金融市场、需求预测和气候建模等各个行业中发挥着重要作用。学习时间序列的通用表示是一个基本但具有挑战性的问题。许多研究(Tonekaboni, Eytan, and Goldenberg 2021;Franceschi, Dieuleveut和Jaggi 2019;Wu et al. 2018)专注于学习实例级表示,它描述了输入时间序列的整个部分,并在聚类和分类等任务中取得了巨大成功。此外,最近的作品(Eldele et al. 2021;Franceschi, Dieuleveut, and Jaggi(2019)利用对比损失来学习时间序列的固有结构。然而,现有的方法仍有明显的局限性。

首先,实例级表示可能不适合需要细粒度表示的任务,例如,时间序列预测和异常检测。在这类任务中,需要在特定的时间戳或子序列上推断目标,而整个时间序列的粗粒度表示不足以达到令人满意的性能。

其次,现有的方法很少能够区分不同粒度的多尺度上下文信息。例如,TNC (Tonekaboni, Eytan和Goldenberg 2021)区分长度不变的段。TLoss (Franceschi, Dieuleveut, and Jaggi 2019)使用原始时间序列中的随机子序列作为正样本。然而,它们都没有在不同尺度上对时间序列进行特征化来捕获尺度不变信息,而尺度不变信息对时间序列任务的成功至关重要。直观上,多尺度特征可以提供不同层次的语义,提高学习表征的泛化能力。

第三,大多数无监督时间序列表示方法的灵感来自于CV和NLP领域的经验,这些领域具有很强的变换不变性和裁剪不变性等归纳偏差。然而,这些假设并不总是适用于时间序列建模。例如,裁剪是一种常用的图像增强策略。然而,时间序列的分布和语义可能随着时间的推移而变化,裁剪后的子序列可能与原始时间序列有明显的分布。

为了解决这些问题,本文提出了一种称为TS2Vec的通用对比学习框架,该框架能够在所有语义级别上对时间序列进行表示学习。它在实例和时间维度上分层区分阳性和阴性样本;对于任意子序列,可以通过在相应时间戳上的最大池化来获得其总体表示。这使模型能够以多种分辨率捕获时态数据的上下文信息,并为任何粒度生成细粒度表示。此外,TS2Vec中的对比目标是基于增强的上下文视图,即同一子序列在两个增强的上下文中的表示应该是一致的。通过这种方式,我们获得了每个子序列的鲁棒上下文表示,而不会引入变换不变性和裁剪不变性等不受重视的归纳偏差。

我们在多个任务上进行了大量的实验来证明我们方法的有效性。时间序列分类、预测和异常检测任务的结果验证了TS2Vec学习表征的通用性和有效性。
在这里插入图片描述
图1:建议的TS2Vec架构。虽然该图显示了一个单变量时间序列作为输入示例,但框架支持多变量输入。每个平行四边形表示实例的时间戳上的表示向量。

本文的主要贡献总结如下:
1.我们提出了TS2Vec,这是一个统一的框架,可以在不同的语义层次上学习任意子系列的上下文表示。据我们所知,这是第一个为时间序列领域的各种任务提供灵活和通用的表示方法的工作,包括但不限于时间序列分类、预测和异常检测。

2.为了实现上述目标,我们在狭窄的学习框架中利用了两种新颖的设计。首先,我们在实例和时间维度上使用分层对比方法来捕获多尺度上下文信息。其次,我们提出了正配对选择的上下文一致性。与以往不同的是,它更适合于具有不同分布和尺度的时间序列数据。大量分析表明,TS2Vec对缺失值时间序列具有鲁棒性,并通过消融研究验证了层次对比和上下文一致性的有效性。
3.TS2Vec在分类、预测和异常检测三个基准时间序列任务上优于现有的sota。例如,与分类任务中无监督表示的最佳SOTA相比,我们的方法在125个UCR数据集上平均提高了2.4%的准确率,在29个UEA数据集上平均提高了3.0%。

二、方法

2.1 问题定义

给定一组时间序列 X = { x 1 , x 2 , ⋯   , x N } \mathcal{X}=\{x_{1},x_{2},\cdots,x_{N}\} X={x1,x2,,xN}的N个实例,目标是学习一个非线性嵌入函数 f θ f_{\theta} fθ,它将每个 x i x_{i} xi映射到最能描述其自身的表示 r i r_{i} ri。输入时间序列xi的维数为T×F,其中T为序列长度,F为特征维数。表示 r i = { r i , 1 , r i , 2 , ⋯   , r i , T } r_{i}=\{r_{i,1},r_{i,2},\cdots,r_{i,T}\} ri={ri,1,ri,2,,ri,T}包含每个时间戳T的表示向量 r i , t ∈ R K r_{i,t}\in\mathbb{R}^{K} ri,tRK,其中K是表示向量的维数。

2.2 模型体系结构

TS2Vec的整体架构如图1所示。我们从输入时间序列xi中随机抽取两个重叠的子序列,并鼓励公共段上上下文表示的一致性。将原始输入输入到编码器中,该编码器结合时间对比损失和实例对比损失进行优化。总损失在一个分层框架中按多个尺度求和。

编码器 f θ f_{\theta} fθ由三个部分组成,包括输入投影层、时间戳屏蔽模块和扩展CNN模块。对于每个输入xi,输入投影层是一个全连接层,它将时间戳t处的观测值 x i , t x_{i,t} xi,t映射到高维潜在向量 z i , t z_{i,t} zi,t。时间戳屏蔽模块在随机选择的时间戳上屏蔽潜在向量,以生成增强的上下文视图。请注意,我们屏蔽潜在向量而不是原始值,因为时间序列的值范围可能是无界的,并且不可能为原始数据找到一个特殊的标记。我们将在附录中进一步证明本设计的可行性。

然后应用具有十个残差块的扩展CNN模块来提取每个时间戳的上下文表示。每个块包含两个具有膨胀参数(2l for the l-th block)的1-D卷积层。扩张卷积为不同的域提供了一个大的接受场(Bai, Kolter, and Koltun 2018)。在实验部分,我们将展示其在各种任务和数据集上的有效性。

在这里插入图片描述
图2:正配对选择策略。
在这里插入图片描述
图3:时间序列分布变化的两个典型案例,分别使用子序列一致性和时间一致性对学习到的表示进行了随时间的热图可视化。

2.3 上下文一致性

正对的建构在对比学习中至关重要。以往的作品采用了不同的选择策略(图2),总结如下:

1.子序列一致性(Franceschi, Dieuleveut, and Jaggi 2019)鼓励时间序列的表示更接近其采样子序列。
2.时间一致性(Tonekaboni, Eytan和Goldenberg 2021)通过选择相邻的片段作为正样本来增强表征的局部平滑性。
3.变换一致性(Eldele et al. 2021)通过不同的变换(如缩放、置换等)增加输入序列,鼓励模型学习变换不变表示。

然而,上述策略基于对数据分布的强假设,可能不适用于时间序列数据。例如,当存在电平偏移时,子序列一致性是脆弱的(图3a),而当出现异常时,时间一致性可能引入假阳性对(图3b)。在这两张图中,绿色和黄色的部分有不同的模式,但之前的策略认为它们是相似的。为了克服这个问题,我们提出了一种新的策略,上下文一致性,它将两个增强上下文中相同时间戳的表示视为正对。通过对输入时间序列应用时间戳屏蔽和随机裁剪来生成上下文。好处是双重的。首先,掩蔽和裁剪不会改变时间序列的幅度,这对时间序列来说是很重要的。其次,它们还通过强迫每个时间戳在不同的上下文中重建自己来提高学习表征的鲁棒性。

Timestamp Masking时间戳屏蔽 我们随机屏蔽实例的时间戳来生成一个新的上下文视图。具体来说,它用二进制掩码 m ˉ ∈ { 0 , 1 } T \bar{m}\in\{0,1\}^{T} mˉ{0,1}T沿时间轴掩码输入投影层后的潜在向量 z i = { z i , t } z_i=\{z_{i,t}\} zi={zi,t},其中的元素独立地从p = 0.5的伯努利分布中采样。掩码在编码器的每个前向传递中独立采样。

Random Cropping随机裁剪 也采用随机裁剪来生成新的上下文。对于任意时间序列输入 x i . ∈ R T × F x_{i.}\in\mathbb{R}^{T\times F} xi.RT×F, TS2Vec随机采样两个重叠的时间段[a1, b1], [a2, b2],使0 < a1≤a2≤b1≤b2≤t。重叠时间段[a2, b1]上的上下文表示对于两个上下文审查应该是一致的。我们在附录中表明,随机裁剪有助于学习位置不可知表示并避免表示崩溃。时间戳掩蔽和随机裁剪只在训练阶段应用。

2.4 层次对比

在本节中,我们提出了分层对比损失,它迫使编码器学习各种尺度的表示。算法1总结了计算步骤。基于时间戳级表示,我们沿着时间轴对学习到的表示应用最大池化,并递归计算公式3。特别是,顶层语义层的对比使模型能够学习实例级表示。

在这里插入图片描述

层次化的对比方法使方法的表现比以往的方法更加全面。例如,T-Loss (Franceschi, Dieuleveut和Jaggi 2019)仅在实例级别执行实例对比;TS-TCC (Eldele et al. 2021)仅在时间戳级别应用实例对比;TNC (Tonekaboni, Eytan和Goldenberg 2021)鼓励在特定粒度级别上的时间局部平滑。这些工作不像TS2Vec那样将表示封装在不同的粒度级别上。

为了捕获时间序列的上下文表示,我们利用实例和时间对比损失TS值。共同编码时间序列分布。损失函数应用于分层对比模型中的所有粒度级别。
在这里插入图片描述
表1:时间序列分类结果与其他时间序列表示方法的比较。TS2Vec、T-Loss、TS-TCC、TST和TNC的表示维数均设置为320,并在SVM评价协议下进行比较。

时间对比损失
为了随着时间的推移学习判别表示,TS2Vec将来自输入时间序列的两个视图的相同时间戳的表示作为正表示,而来自同一时间序列的不同时间戳的表示作为负表示。设i为输入时间序列样本的索引,t为时间戳。然后 r i , t r_{i,t} ri,t r i , t ′ r_{i,t}^{\prime} ri,t表示同一时间戳t的表示,但来自xi的两个增广。时间戳t第i个时间序列的时间对比损失可表示为
ℓ t e m p ( i , t ) = − log ⁡ exp ⁡ ( r i , t ⋅ r i , t ′ ) ∑ t ′ ∈ Ω ( exp ⁡ ( r i , t ⋅ r i , t ′ ′ ) + 1 [ t ≠ t ′ ] exp ⁡ ( r i , t ⋅ r i , t ′ ) ) , ( 1 ) \ell_{temp}^{(i,t)}=-\log\frac{\exp(r_{i,t}\cdot r_{i,t}^{\prime})}{\sum_{t^{\prime}\in\Omega}\left(\exp(r_{i,t}\cdot r_{i,t^{\prime}}^{\prime})+1_{[t\neq t^{\prime}]}\exp(r_{i,t}\cdot r_{i,t^{\prime}})\right)},(1) temp(i,t)=logtΩ(exp(ri,tri,t)+1[t=t]exp(ri,tri,t))exp(ri,tri,t),(1)

其中Ω为两个子序列重叠部分的时间戳集合,1为指标函数。

实例对比损失以(i, t)为索引的实例对比损失可表示为

ℓ i n s t ( i , t ) = − log ⁡ exp ⁡ ( r i , t ⋅ r i , t ′ ) ∑ j = 1 B ( exp ⁡ ( r i , t ⋅ r j , t ′ ) + 1 [ i ≠ j ] exp ⁡ ( r i , t ⋅ r j , t ) ) , ( 2 ) \ell_{inst}^{(i,t)}=-\log\frac{\exp(r_{i,t}\cdot r_{i,t}^{\prime})}{\sum_{j=1}^B\left(\exp(r_{i,t}\cdot r_{j,t}^{\prime})+1_{[i\neq j]}\exp(r_{i,t}\cdot r_{j,t})\right)},\quad(2) inst(i,t)=logj=1B(exp(ri,trj,t)+1[i=j]exp(ri,trj,t))exp(ri,tri,t),(2)

其中B表示批量大小。我们在同一批次中使用时间戳t的其他时间序列表示作为负样本。

这两种损失是互补的。例如,给定一组来自多个用户的电力消耗数据,实例对比可以了解用户特定的特征,而时间对比旨在挖掘随时间变化的动态趋势。总损失定义为

L d u a l = 1 N T ∑ i ∑ t ( ℓ t e m p ( i , t ) + ℓ i n s t ( i , t ) ) . ( 3 ) \mathcal{L}_{dual}=\frac1{NT}\sum_i\sum_t\left(\ell_{temp}^{(i,t)}+\ell_{inst}^{(i,t)}\right).\quad\quad(3) Ldual=NT1it(temp(i,t)+inst(i,t)).(3)

三、实验

在本节中,我们评估TS2Vec在时间序列分类、预测和异常检测方面的学习表征。详细的实验设置在附录中给出。

3.1 时间序列分类

对于分类任务,在整个时间序列(实例)上标记类。因此,我们需要实例级表示,这可以通过对所有时间戳进行最大池化来获得。然后,我们遵循与T-Loss (Franceschi, Dieuleveut和Jaggi 2019)相同的协议,其中在实例级表示之上训练具有RBF内核的SVM分类器以进行预测。

我们对时间序列分类进行了广泛的实验,以评估实例级表示,并与其他无监督时间序列表示的sota进行了比较,包括T-Loss、TS-TCC (Eldele等人,2021)、TST (Zerveas等人,2021)和TNC (Tonekaboni、Eytan和Goldenberg 2021)。采用UCR档案(Dau et al. 2019)和UEA档案(Bagnall et al. 2018)进行评估。UCR有128个单变量数据集,UEA有30个多变量数据集。请注意,TS2Vec适用于所有UCR和UEA数据集,TS2Vec在所有数据集上的完整结果在附录中提供。

评价结果汇总如表1所示。与其他表示学习方法相比,TS2Vec在UCR和UEA数据集上都取得了实质性的改进。特别是,TS2Vec在125个UCR数据集上平均提高了2.4%的分类准确率,在29个UEA数据集上平均提高了3.0%。图4给出了所有数据集(包括125个UCR和29个UEA数据集)上的Nemenyi测试的临界差异图(Dem sar 2006),其中未用粗线连接的分类器在平均排名上存在显著差异。这验证了TS2Vec在平均排名上明显优于其他方法。如2.3节和2.4节所述,T-Loss、TS-TCC和TNC仅在一定水平上进行对比学习,并施加较强的变换不变性等归纳偏置来选择正对。TS2Vec在不同的语义层次上采用分层对比学习,从而获得更好的性能。

表1还显示了使用NVIDIA GeForce RTX 3090 GPU的表示学习方法的总训练时间。其中,TS2Vec的训练时间最短。由于TS2Vec在一个批次中应用了不同粒度的对比损失,因此大大提高了表示学习的效率。在这里插入图片描述
表2:MSE的单变量时间序列预测结果。在这里插入图片描述
图5:TS2Vec、Informer和TCN在ETTh2测试集上的预测切片(H=336)。

3.2 时间序列预测

根据最后的 T l T_{l} Tl观测结果 x t − T l + 1 , . . . , x t x_{t-T_{l}+1},...,x_{t} xtTl+1,...,xt,时间序列预测任务旨在预测未来H观测值 x t + 1 , . . . , x t + H . x_{t+1},...,x_{t+H}. xt+1,...,xt+H.。我们使用rt(最后一个时间戳的表示)来预测未来的观测结果。具体来说,我们训练了一个具有L2范数惩罚的线性回归模型,该模型将 r t r_{t} rt作为输入直接预测未来的值。当x是单变量时间序列时, x ^ \hat{x} x^的维数为h。当 x {x} x是具有F个特征的多变量时间序列时, x ^ \hat{x} x^的维数应为FH。

我们比较了TS2Vec和现有SOTAs在四个公共数据集上的性能,包括三个ETT数据集(Zhou et al. 2021)和Electricity数据集(Dua and Graff 2017)。我们分别将Informer (Zhou et al. 2021)、LogTrans (Li et al. 2019)、LSTnet (Lai et al. 2018)、TCN (Bai、Kolter和Koltun 2018)用于单变量和多变量设置,N-BEATS (Oreshkin et al. 2019)用于单变量设置,StemGNN (Cao et al. 2020)用于多变量设置。在之前的工作基础上,我们使用MSE和MAE来评估预测效果。
在这里插入图片描述
表3:ETTm1数据集上多变量预测任务运行时间(秒)比较。

单变量预测的MSE评价结果如表2所示,由于篇幅限制,完整的预测结果(MSE和MAE的单变量和多变量预测)在附录中报道。总的来说,TS2Vec在大多数情况下建立了一个新的SOTA,其中TS2Vec在单变量设置下的平均MSE下降了32.6%,在多变量设置下的平均MSE下降了28.2%。此外,表征只需要对每个数据集学习一次,并且可以通过线性回归直接应用于各种视界(Hs),这表明了学习表征的通用性。图5给出了一个具有长期趋势和周期模式的典型预测切片,比较了单变量预测中表现最好的前3种方法。在这种情况下,Informer显示了其捕获长期趋势的能力,但未能捕获周期性模式。TCN成功地捕捉到了周期性模式,但未能捕捉到长期趋势。TS2Vec抓住了这两个特征,比其他方法显示出更好的预测结果。

本文方法在ETTm1上与Informer (Zhou et al. 2021)相比,在NVIDIA GeForce RTX 3090 GPU上的执行时间如表3所示,以其对长时间序列预测的显著效率而闻名。TS2Vec的训练时间和推理时间分别分为两个阶段。训练阶段包括两个阶段:(1)通过TS2Vec框架学习时间序列表示;(2)在学习到的表示之上为每个H训练一个线性回归量。类似地,推理阶段也包括两个步骤:(1)对相应时间戳的表示进行推理,(2)通过训练好的线性回归器进行预测。注意,TS2Vec的表示模型只需要针对不同的视界设置训练一次。无论在训练还是推理方面,我们的方法都比Informer达到了更高的效率。

3.3时间序列异常检测

我们遵循流评估协议(Ren et al. 2019)。给定任意时间序列切片x1, x2,…, xt,时间序列异常检测的任务是确定最后一个点xt是否为异常。在学习到的表示中,异常点可能与正常点表现出明显的差异(图7c)。此外,TS2Vec鼓励在实例的同一时间戳上保持上下文一致性。考虑到这一点,我们建议将异常分数定义为从屏蔽和未屏蔽输入计算的表示的不相似性。具体来说,在推理阶段,训练后的TS2Vec对一个输入转发两次:第一次,我们只屏蔽掉最后一个观测值xt;第二次,不敷面膜。我们将这两个转发的最后时间戳分别表示为 r t u r_{t}^{u} rtu r t m r_{t}^{m} rtm。用L1距离测量异常评分:

α t = ∥ r t u − r t m ∥ 1 . ( 4 ) \alpha_t=\left\|r_t^u-r_t^m\right\|_1.\quad\quad\quad\quad\quad(4) αt=rturtm1.(4)

为了避免漂移,根据前人(Ren et al. 2019)的工作,我们取前面Z点 α ‾ t = 1 Z ∑ i = t − Z t − 1 α i \overline{\alpha}_{t}=\frac{1}{Z}\sum_{i=t-Z}^{t-1}\alpha_{i} αt=Z1i=tZt1αi的局部平均值,通过 α t a d j = α t − α ‾ t α ‾ t \alpha_t^{adj}=\frac{\alpha_t-\overline{\alpha}_t}{\overline{\alpha}_t} αtadj=αtαtαt来调整异常评分。在推理上,时间戳t被预测为$\alpha_{t}^{adj}>\mu+\beta\sigma $时的异常点,其中µ和σ分别为历史分数的平均值和标准差,β为超参数。

我们将TS2Vec与其他无监督的单变量时间序列异常检测方法进行了比较,包括FFT (Rasheed等人,2009)、SPOT、DSPOT (Siffer等人,2017)、Twitter-AD (Vallis, Hochenbaum, and Kejariwal 2014)、Luminol (Brennan and Ritesh 2018)、DONUT (Xu等人,2018)和SR (Ren等人,2019)。两个公共数据集被用来评估我们的模型。Yahoo (Nikolay Laptev 2015)是一个用于异常检测的基准数据集,包括367个每小时采样的时间序列,并标记了异常点。它汇集了各种各样的异常类型,如异常值和变化点。KPI (Ren et al. 2019)是AIOPS挑战赛发布的竞赛数据集。该数据集包含了许多互联网公司的真实KPI曲线。实验设置在附录中有详细说明。

在正常情况下,每个时间序列样本按照时间顺序分成两半,其中前半部分用于无监督训练,后半部分用于评估。然而,在基线中,鲁米诺、Twitter-AD和FFT不需要额外的训练数据就可以开始。因此,在所有时间序列都用于测试的冷启动设置下,对这些方法进行比较。在此设置中,TS2Vec编码器在UCR存档中的FordA数据集上进行训练,并在Yahoo和KPI数据集上进行测试。我们把这个模型的转换版本记为TS2Vec†。对于这两种设置,我们设置β = 4, Z = 21 (Ren et al. 2019)。在正常设置中,我们的协议的µ和σ是使用每个时间序列的训练分割来计算的,而在冷启动设置中,它们是使用最近点之前的所有历史数据点来计算的。

表4给出了不同方法在F1得分、准确率和召回率上的性能比较。在正常情况下,与基线方法的最佳结果相比,TS2Vec在Yahoo数据集上的F1分数提高了18.2%,在KPI数据集上提高了5.5%。在冷启动设置下,F1分数在Yahoo数据集上比最佳SOTA结果提高了19.7%,在KPI数据集上提高了1.0%。请注意,我们的方法在这两种设置上获得了相似的分数,证明了TS2Vec从一个数据集到另一个数据集的可移植性。
在这里插入图片描述

表5:128个UCR数据集的消融结果。

四、分析

4.1 消融研究

为了验证TS2Vec中提出的组件的有效性,表5显示了在128个UCR数据集上完整的TS2Vec及其六个变体之间的比较,其中(1)w/o Temporal Contrast消除了时间对比损失,(2)w/o Instance Contrast消除了实例对比损失,(3) w/o分层对比只在最低层次进行对比学习,(4)w/o随机裁剪对两个视图使用全序列而不是随机裁剪,(5)w/o时间戳掩蔽使用在训练中填充的掩码,(6)w/o输入投影层去除输入投影层。结果表明,TS2Vec的上述组成部分都是必不可少的。

表5还显示了不同正对选择策略之间的比较。我们将我们提出的上下文一致性(包括时间戳屏蔽和随机裁剪)替换为时间一致性(Tonekaboni, Eytan, and Goldenberg 2021)和子序列一致性(Franceschi, Dieuleveut, and Jaggi 2019)。时间一致性将一定距离内的时间戳作为正值,而子序列一致性则随机将同一时间序列的两个子序列作为正值。此外,我们尝试在我们的方法中添加数据增强技术,包括抖动、缩放和排列(Eldele et al. 2021),用于输入时间序列的不同视图。添加这些增强后,可以观察到性能下降。如前所述,他们假设时间序列数据遵循一些不变的假设,这些假设不适用于时间序列的多样化和不断变化的分布。
在这里插入图片描述
图6:UCR存档中最大的4个数据集的准确度分数与缺失点的比率。

为了证明我们选择骨干网的合理性,我们用参数大小相似的LSTM和Transformer代替了扩展的CNN。两种情况下准确率得分均显著下降,说明扩张型CNN是时间序列模型架构的有效选择。

4.2 对缺失数据的鲁棒性

对于从现实世界中收集的时间序列来说,丢失数据是一个常见的现象。TS2Vec作为一种通用框架,在提供缺失值占比较大的数据时提供了稳定的性能,其中提出的分层对比和时间戳屏蔽策略发挥了重要作用。直观地说,时间戳屏蔽使网络能够推断不完整上下文下的表示。分层对比带来了远程信息,如果其周围信息不完整,则有助于预测缺失的时间戳。

对于从现实世界中收集的时间序列来说,丢失数据是一个常见的现象。TS2Vec作为一种通用框架,在提供缺失值占比较大的数据时提供了稳定的性能,其中提出的分层对比和时间戳屏蔽策略发挥了重要作用。直观地说,时间戳屏蔽使网络能够推断不完整上下文下的表示。分层对比带来了远程信息,如果其周围信息不完整,则有助于预测缺失的时间戳。选择前4个最大的UCR数据集进行分析。我们随机屏蔽了训练集和测试集的观测值,并给出了特定的时间戳缺失率。图6显示,在没有分层对比或时间戳屏蔽的情况下,分类精度随着缺失率的增长而迅速下降。我们还注意到,随着缺失率的增加,w/o分层对比度的性能急剧下降,这表明远程信息对于处理大量缺失值的重要性。我们可以得出结论,TS2Vec对缺失点具有极强的鲁棒性。具体来说,即使有50%的缺失值,TS2Vec在UWaveGestureLibraryAll上实现了几乎相同的精度,而在StarLightCurves, HandOutlines和MixedShapesRegularTrain上分别仅降低2.1%,2.1%和1.2%的精度。

在这里插入图片描述
图7:TS2Vec学习表征随时间变化的热图可视化。

4.3 可视化解释

本节将UCR存档的三个数据集(包括ScreenType、Phoneme和RefrigerationDevices数据集)随时间的学习表征可视化(图7)。我们从测试集中选择第一个样本,并选择方差最大的前16个表征维度进行可视化。图7a对应的是一个类似二进制数字信号的时间序列,TS2Vec学习到的表示清晰地区分了高值和低值的时间戳。图7b显示了一个波动性不断缩小的音频信号。学习后的表示能够反映跨时间戳的变化趋势。在图7c中,时间序列具有带有突然尖峰的周期性模式。可以注意到,学习到的尖峰时间戳表示与正常时间戳有明显的不同,这证明了TS2Vec捕捉时间序列分布变化的能力。

五、结论

本文提出了一种通用的时间序列表示学习框架,即TS2Vec,该框架在增强上下文视图中应用层次对比来学习尺度不变表征。在时间序列分类、预测和异常检测三个时间序列相关任务上对学习到的表征进行了评价,证明了TS2Vec的通用性和有效性。我们还表明,TS2Vec在提供不完整数据时提供稳定的性能,其中分层对比损失和时间戳屏蔽起重要作用。此外,学习表征的可视化验证了TS2Vec捕捉时间序列动态的能力。烧蚀实验证明了所提出元件的有效性。TS2Vec框架是通用的,在我们未来的工作中有可能应用到其他领域。

A Related Work

无监督表示学习在计算机视觉中取得了很好的表现(Chen et al. 2020;Wang et al. 2021;Xu et al. 2020;O. Pinheiro et al. 2020),自然语言处理(Gao, Yao, and Chen 2021;Logeswaran and Lee 2018)和语音识别(Baevski et al. 2020;Xu et al. 2021)。在时间序列域,SPIRAL (Lei et al. 2019)提出了一种无监督方法,通过约束学习到的表示来保持时域的成对相似性。TimeNet (Malhotra et al. 2017)设计了一个循环神经网络,用于联合训练编码器和解码器,该解码器根据其学习到的表示重建输入信号。RWS (Wu et al. 2018)构建了精心设计的核,以有效的近似方式生成时间序列的向量表示。TST (Zerveas et al. 2021)学习了一个基于变压器的模型,该模型具有屏蔽的MSE损失。这些方法要么不能扩展到很长的时间序列,要么面临着对复杂时间序列建模的挑战。为了解决这个问题,T-Loss (Franceschi, Dieuleveut, and Jaggi 2019)采用基于时间的负采样和三重损失来学习多元时间序列的可扩展表示。TNC (Tonekaboni, Eytan, and Goldenberg 2021)利用信号的局部平滑度来定义时间上的邻域,并学习时间序列的可推广表示。TSTCC (Eldele et al. 2021)鼓励不同数据增强的一致性。然而,这些方法只在一定的语义层次上学习表征,并且对变换不变性有很强的假设,限制了它们的通用性。

时间序列预测包括rnn在内的深度学习方法(Salinas et al. 2020;Wen et al. 2017;Oreshkin et al. 2019), cnn (Bai, Kolter, and Koltun 2018;Wan et al. 2019), gnn (Cao et al. 2020)和Transformers (Li et al. 2019;Zhou et al. 2021)已被广泛应用于时间序列预测任务,其性能优于经典模型,如ARIMA (Ariyo, Adewumi和Ayo 2014)和VAR (Box et al. 2015)。N-BEATS (Oreshkin et al. 2019)提出了一种具有前向和后向残差连接的全连接层深度堆栈,用于单变量时间序列预测。TCN (Bai, Kolter, and Koltun 2018)为时间序列预测带来了扩展卷积,并证明了扩展卷积在效率和预测性能方面都优于rnn。此外,LSTnet (Lai et al. 2018)将cnn和rnn结合起来,同时捕获短期局部依赖关系和长期趋势。LogTrans (Li et al. 2019)和Informer (Zhou et al. 2021)解决了vanilla自关注的效率问题,并在长序列的预测任务上表现出显著的性能。此外,图神经网络在多变量时间序列预测领域也得到了广泛的研究。例如,StemGNN (Cao et al. 2020)完全在谱域对多变量时间序列进行建模,在各种数据集上显示出具有竞争力的性能。

时间序列的无监督异常检测在过去的几年里,统计方法(Lu and Ghorbani 2008;Mahimkar et al. 2011)在时间序列异常检测方面已经得到了很好的研究。FFT (Rasheed et al. 2009)利用快速傅立叶变换检测潜在异常区域。SPOT (Siffer et al. 2017)是在极值理论的基础上提出的,它可以自动选择异常分数的阈值。Twitter (Vallis, Hochenbaum, and Kejariwal 2014)采用统计方法检测应用程序和系统指标中的异常情况。然而,传统的方法在适应现实世界中复杂的时间序列数据方面面临着挑战,因此提出了更先进的方法。例如,DONUT (Xu et al. 2018)引入了一种基于VAE的基于重建的方法。此外,SR (Ren et al. 2019)借鉴了视觉显著性检测领域的光谱残差模型,在异常检测方面表现出优异的性能。

在这里插入图片描述
表6:128个UCR数据集上时间戳屏蔽的消融结果。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
向量类(综合型题目) (1)创建C# 控制台应用程序L4_2。 (2)在程序中创建一个向量类CzVector,在其中定义一个double []类型的私有字段_values,用于维护向量的各个元素值。 (3)为CzVector定义三个公有属性Length、Sum和Prod,分别用于返回向量的长度、向量所有元素的和以及向量所有元素的积。 (4)在CzVector中定义一个索引函数,用于获取或设置各个元素的值。 (5)为CzVector定义两个构造函数,一个根据指定长度对向量进行初始化(向量各元素取默认值0),另一个由指定的数组来构造向量并设置各元素的值。 (6)利用操作符重载来实现向量加法、减法和乘法。这三种运算均要求两个向量的长度相等。设向量α=(a1,a2,…an) ,β=(b1,b2,…bn),那么α+β=(a1+b1,a2+b2,….,an+bn),减法与之类似,而α*β=a1*b1+a2*b2+….+an*bn)。另外,一个向量还可以单独乘以一个系数(向量加法的重载形式),此时,λ*α=(λ*a1, λ*a2,…λ*an) 。以加法操作符重载为例,参考源代码如下: public static CzVector operator +(CzVector v1,CzVector v2) { if(v1.Length!=v2.Length) return null; CzVector result=new CzVector(v1.Length); for(int i=0;i<v1.Length;i++) result [i]=v1[i]+v2[i]; return result; } (7)类似的,利用操作符重载来判断两个向量是否相等。向量相等的条件是:两个向量的长度相等,且各个位置上的对应元素值也相等。 (8)为CzVector定义一个ConsoleOutput方法,用于在控制台一行输出向量的所有元素,其之间以空格分割。 (9)在程序主方法中随机定义几个向量对象,并测试其运算结果。参考源代码如下: static void Main() { CzVector v1=new CzVector(1,-5,9,6); CzVector v2=new CzVector(0,1,2,3); Console.Write(“v1= “); v1.ConsoleOutput(); Console.Write(“v2= “); v2.ConsoleOutput(); CzVector v3=v1+v2; Console.Write(“v1+v2= “); v3.ConsoleOutput(); CzVector v4=v1-v2; Console.Write(“v1-v2= “); v4.ConsoleOutput(); Console.Write(“3*(v1+v2)= “); (v3*3).ConsoleOutput(); Console.Write(“v1*v2= “{0}”,v1*v2); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值