GRAIL Efficient Time Series Representation Learning
有效的时间序列表示学习
作者
芝加哥大学的John Paparrizos和Michael J. Franklin
PVLDB Reference Format:John Paparrizos and Michael J. Franklin. GRAIL: Efficient TimeSeries Representation Learning. PVLDB, 12 (11): 1762-1777, 2019.
DOI: https://doi.org/10.14778/3342263.3342648
原文链接:https://pan.baidu.com/s/1Ma0SsR8_iO-GbqMZEwHNQg 提取码:2der
3. GRAIL框架
通过让时间序列挖掘方法直接在表示形式上进行操作,达到简化和统一时间序列挖掘方法设计的目标。为了实现这一目标,我们提出了GRAIL,这是一个基于用户指定的比较方法来促进有效表示学习的框架。我们首先概述GRAIL及其核心组件。
3.1概述
提出了一种有前景的方向,利用核方法[26、53、108、109、7]构建具有本地保留不变性的表示形式,其中不变性是由所选比较方法提供的。不幸的是,诸如KPCA[107]之类的用于学习在内核表示的精确方法在实践中非常昂贵,因为它们需要在完整的Gram矩阵上进行操作,该矩阵由选定的内核函数的成对的相似度组成。已经提出了许多方法来近似内核矩阵并减少高内存和运行时成本(请参见第2.1节)。对于GRAIL,我们依靠Nystrom,它与内核功能的选择无关。Nystrom近似 为d个向量的线性组合
arg min 就是使后面这个式子达到最小值时的x的取值
对于每一个Xi,这是一个关于a的单列的凸问题,最优解是当
不幸的是,Nystrom有两个主要的缺点。首先,学习表征的质量(Zd)和临界度(critically)取决于对必要参数的准确估计,这一步在文献中经常被忽略,或者假设参数以一种超视域的方式进行调整。第二,学习表示的维度可能会超过原始时间序列的维度(即这违背了产生紧凑表示的初衷。
为了克服这些限制,我们提出了一种学习时间序列表示的端到端解决方案,它引入了两个新特性。具体地说,我们(i)提出了一种估计参数的方法,目的是使低维空间中数据的方差和所学习表示的紧致性达到最大;(ii)利用Zd对K的特征组成进行额外的近似,从而学习最终的表示,从而满足2.4节中P1到P5的原则。图2提供了GRAIL组件的概述,接下来我们将详细讨论这些组件。我们首先展示如何使用原始时间序列的前几个傅里叶系数,以一种有原则的方式来近似一个移位不变的核函数SINK(3.2节)。给定一个核函数,GRAIL需要三步完成。首先,GRAIL使用聚类提取地标时间序列(第3.3节)。其次,GRAIL估计必要的参数(第3.4节)。第三,考虑里程碑时间序列和估计的参数,GRAIL对内核方法执行了两个近似来学习表示(第3.5节)。
3.2时间序列的平移不变核(SINK)
比较平移不变性下的时间序列对有效时间序列分析具有重要的意义。GRAIL使用满足半定性性质的核函数与时间序列协同工作[28,109],我们接下来将讨论这个问题。不幸的是,在这些不变性下进行时间序列比较的成功方法,如SBD和dtw(参见2.3节),不能根据它们当前的公式构建合适的核函数[118,30]。最先进的时间序列的核函数,如全局对齐(GA)内核[31,30],按时间序列长度进行二次伸缩,因此在实践中使用起来非常昂贵。我们的SINK函数旨在规避这种效率限制。
核函数(通常称为Mercer条件[81])的正半定性(p.s.d)性质构成了RKHS存在的一个临界条件(参见2.1节),并导致了许多涉及到核函数的学习问题的凸解[26,7]。简单地说,如果一个对称函数k(-,-)的Gram矩阵k具有非负的特征值,那么它就是一个psd核。不幸的是,对于许多函数来说,证明它们满足Mercer的条件(Mercer条件:任何半正定的函数都可以作为核函数)是很有挑战性的。例如,它需要多次尝试来定义一个合适的类似于dwt的内核函数,比如GA[113, 11, 50, 31, 30]。Haussler的卷积核[52]是一种新型p.s.d.核工程的框架[114]。【得到Gram矩阵K】
百度百科词条:卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。
卷积核的核心思想是根据两个数据对象的部分相似性来推断它们之间的相似性。具体来说,卷积核结合了计算复合数据对象的所有对的分量的p.s.d.核 (即返回内核值的和)【对Gram矩阵K核进行再次卷积】。
更正式地说,我们假设一个时间序列组成的。让我们也假设一个p.s.d.核
存在,相关的
表示我们可以将
转换成
的可能方式。然后,我们可以定义一个核
R如下[52,53,114]:
因此,我们需要定义一个关系式来将时间序列分解成移位不变量。我们改编了[118]的内核,并引入了关键的规范化。
SINK平移不变核是通过118改变而来的
平移不变核SINK: 需要将时间序列
分解成
的所有移位版本,通过使用
上的一个循环移位运算符作为我们的关系,我们可以将
的坐标重新排列如下:
。
这个过程与SBD(参见第2.3节)如何找到最大化内积的移位密切相关。
【判断y和x的相似程度,移动s后,x,y无相位差,此时内积最大,x与y最相似】
[118]并没有找到最佳的移位,而是在公式7中,通过设置,带宽
对较大(小)值移位位置的内积进行加权(降低)。为了消除由于长时间序列的取幂而产生的数值问题,我们使用与SBD相同的标准化方法:
其中为归一化互相关序列。
这个公式可能导致非对角值大于对角值的Gram矩阵(即,一个时间序列可能比它本身更类似另一个时间序列!),这与方法通常对相似矩阵的操作方式相矛盾。因此,为了解决这个问题,我们将SINK定义为:
对于每一对比较,SINK使用快速傅里叶变换(FFT)将时间序列传输到它们的傅里叶域中,从而有效地计算互相关运算,然后使用反FFT返回到原始空间。对于GRAIL,我们需要使用SINK来计算SD和DD矩阵。在这两个矩阵中,字典中的时间序列集都是静态的,因此,我们将探讨另外两个导致显著加速的优化。具体来说,我们只将字典中的时间序列在其傅里叶域中传输一次,并在每对计算中重复使用它们,以避免不必要的FFT调用。此外,考虑到大多数自然时间序列显示一个倾斜的能谱[39],这意味着大多数能量都集中在前几个低频率上,它只保留时间序列的前几个傅里叶系数,保留一些用户指定的能量水平(例如,90%)就足够了。算法1展示了SINK如何使用现代数学软件在几行代码中比较两个时间序列。具体来说,从第10行到第14行,SINK计算保持用户指定能量水平e所需的傅里叶系数的数量。SINK需要O(m log m)时间,因为它依赖于FFT。对于固定大小的输入(这是本文的重点),SINK满足p.s.d属性,因为它结合了为两个时间序列之间的每个可能的对齐计算的p.s.d内核。然而,对于可变长度的时间序列,它需要更深入的分析,这是我们留给未来的工作。在图3中,我们给出了一个例子,展示了SINK如何在两个时间序列中使用和不使用能量保存来构建NCC序列(图3b)(图3a)。我们观察到,在保留了90%能量的情况下,时间序列从1024减小到2l, SINK精确地近似于NCC。
【a T1和T2的时间序列,及需要比较的两个序列.b. NCC归一化互相关序列,蓝线代表保留能量为100%,黄线代表保留能量90%,NCC相关序列的走势代表T1和T2的相关程度,走势越高,互相关度越高,走势越低,互相关度越低】
平移不变核函数有了,接下来就是使用Nystrom对核进行估计提取界标向量
3.3时间序列字典学习
给定SINK, GRAIL需要计算界标时间序列字典来总结底层数据。对于Nystrom法来说,时间序列的选择是一个复杂的组合问题。大量的工作集中在Nystrom抽样和投影方法的经验和理论分析[123,37,65,47]。遗憾的是,现有的方法没有考虑到时间序列。因此,我们研究了利用时间序列聚类方法的中心点来构建地标性时间序列。
Nystrom的近似误差由将每个向量映射到距离最近的d地标向量
的量化误差限定[133]:
基于k-means原则的聚类方法[76]最小化了完全相同的量化误差。不幸的是,k-means不适合时间序列聚类。相反,k-Shape有效地聚类时间序列聚类中心有效地总结了具有平移不变性的距离度量的时间序列[91,92]。因此,对于GRAIL,我们使用k-Shape聚类中心作为时间序列的界标。k- Shape需要O(max[n•d•m•log(m), n•m2, d•m3])时间,其中d是请求的质心数。我们的评估(参见第5节和第6节)表明,k-Shape的性能显著优于所有的最新技术。
3.4参数估计
图4:使用SINK对StarLightCurve数据集以不同y值学习到的表示进行紧密度与分类进度的比较
地标时间序列构建完成后,GRAIL对 影响(i)紧密度的核函数参数和所获表示的质量,进行估计。为了说明这一点,图4探究了对于StarLightCurve数据集[32],SINK的值如何影响这两个因素。具体地说,图4 a描述了不同y值在不同表示大小下的累积方差。图4b展示了1-NN对不同y值的表示在时间序列中获取90%的方差的分类精度。我们观察到,小的y值只需要几个特征向量就可以解释90%的时间序列相似性的变化,而大的y值则需要更多的特征向量。(小Y值导致更紧凑的表示)。另一方面,当所有的表征物都能解释数据中相同的目标方差量时,不同的y值会导致不同任务表征物的质量存在显著差异,如图4b中的分类。因此,由于存储和计算的好处而选择较小的y值可能会导致精度显著降低。由于这种核函数参数整定的困难,文献往往依赖于监督整定,这是不现实的。
对于GRAIL,我们提出了一个简单而有效的方法来估计SINK的带宽y,该方法依赖于两个关键的观测值。首先,考虑到在低维空间中信息的丢失是不可避免的,因此在低维空间中保留大方差的时间序列相似性要比保留低方差的时间序列相似性更有可能。因此,我们要选择γ值,使方差最大化。其次,为了确定如何有效地捕获低维空间中的方差,我们需要考虑每个特征值产生了多少方差。因此,我们要选择γ值,使得对于少数r个特征值,如r = 20,所解释的方差最大。我们的方法将这两个观测值结合在一个评分函数中,从而允许对y进行有效的选择,具体考虑矩阵的特征分解,其中W(即DD矩阵)由地标时间序列的成对核值组成(见3.3节),我们计算每个y值的得分函数如下:
其中var(W, y)表示用y计算SINK得到的W中核值的方差,算法2展示了如何根据我们的打分函数(方程11)对SINK进行y调优。算法2的代价主要是需要计算W的特征分解,这需要O(d*)的时间。在我们的评估(第5节和第6节)中,我们展示了我们的参数调优方法可以获得与以监督方式调优的表示类似的紧凑性和准确性。接下来,我们将展示GRAIL如何学习时间序列表示。
【 [Q,L]=eig(W):求矩阵W的全部特征值,构成对角阵L,并求W的特征向量构成Q的列向量。Var(W):计算矩阵的方差Cumsum():一个数组各行的累加值】
3.5时间序列表示学习
GRAIL分为两个步骤:(i)构造暂时的表示Zd,其中d是地标时间序列的数量,使用Nystrom方法(第3.1节)来近似Gram矩阵;(ii)利用Zd逼近
的特征分解,学习最终表示Zk,其中k < d满足2.4节p1到P5的原理。
K的近似:Nystrom要求输入两个矩阵:(i)矩阵,它包含了d地标时间序列之间的所有成对相似性;(ii)矩阵
,它包含了n时间序列和d地标时间序列的两两相似性。一旦我们构造了这两个矩阵,Nystrom计算W的逆,
,构造Zd如下:
Zd的维数d对应于从整个数据集中提取的地标时间序列的个数,因此d明显小于整个数据集的大小n。不幸的是,对于非常大的数据集,Nystrom可能需要成千上万的界标时间序列精确近似k .在这种情况下, 学习表征的维数可能会超过原始时间序列的维数,这就违背了产生低维表征的初衷。
表示学习:为了消除这个问题,我们使用Zd来近似K的特征分解,1.将维数从d降为k, 只保留K的最上面的特征值和特征向量(,最后得到Zk)。2.另一种方法是直接利用Nystrom计算出的矩阵W的特征分解来构造Zd来近似K的特征分解。不幸的是,这种方法对k的特征分解提供了一个很差的近似值。重要的是,它可能会导致R[42]的非正交特征向量,正如定义所要求的那样(见2.1节),这将影响学习表示的有效性。因此,假设的特征分解,我们可以近似
,其中
和
是
的特征向量和特征值。不幸的是,对于大量的时间序列来说,这样的计算是非常昂贵的。我们在Zd采用矩阵草图算法,即the Frequent Directions (FD),通过在
上保留尺寸为b(b < d < n)的草图,有效地近似矩阵C。我们构建
这个过程会导致一些好处:
(i)保证Q保持正交,允许较低的内核函数的边界(P2);(ii)允许对Zk的每个坐标中产生的方差进行估计,因此,我们可以使用Zk坐标的前缀(P3);和(ii)使得k的特征值和特征向量的有效逼近成为可能,因此,与依赖于这种关键操作的现有算法无缝集成(P5)。总的来说,Nystrom和k- Shape的开销控制了GRAIL的运行时行为。
重要的是,它与数据集的大小n是线性的。Nystrom方法(或其变体)的近似保证依赖于完全依赖于数据的内核矩阵的频谱。我们建议读者参考[82]以获得最近的结果。至于SINK,为可变长度输入的设置提供保证需要更深入的分析,这是我们在以后的工作中要做的。接下来,我们将回顾在Apache Spark之上的GRAIL实现。
图5:GRAIL是Apache Spark.4之上的一个薄薄的层。
4.GRAIL over APACHE SPARK
我们构建了GRAIL,作为Apache Spark131(一种广泛使用的分布式数据流系统)之上的一个薄层,以促进大规模物联网数据集的处理。我们利用Spark’s MLlib library [80]访问现有的分布式实现流行的数据挖掘和机器学习的方法。图5描绘了the GRAIL layer层,the GRAIL 首先使用k-shape计算界标时间序列字典。我们通过将X'中的所有时间序列赋值给随机集群来初始化k-Shape,从中提取质心,k-Shape的每次迭代都包含两个操作:(i)使用SBD更新X中每个时间序列的簇成员;(ii)根据更新的成员资格细化聚类中心体。为了并行化第一步,我们将平均分配给所有Spark执行器。然后每个执行器对它的一小块时间序列对质心使用SBD,并为每个时间序列找到最接近的质心。其最接近的质心,已在(i)中计算。然后,我们获得一个分布式数据集(存储在Spark的RDD中)的对齐序列,并利用分布式矩阵乘法来计算形心计算所需的协方差矩阵 就是DD和SD。最后,利用FD进行特征分解,计算每个簇的细化质心(每个执行器对其块执行FD)。
然后,GRAIL在计算的中心体上对于不同的γ值执行参数调优过程(即字典),对于大字典,我们通过将矩阵W的特征分解分配给spark执行器来并行化每个1的计算。对于较小的字典大小,由于每个γ的计算速度很快,我们让每个执行器计算不同的γ并报告其得分。下一步,GRAIL将基于获得的中心体和调优的参数构造Zd表示。我们通过将X分配给执行者来并行化E矩阵的计算,并让每个执行者计算其小块X'和d地标时间序列之间的两两相似点。接下来,我们利用分布式矩阵乘法来计算Zd= EQwA。注意:Qw和Aw已经在参数调优期间计算过了。
最后,GRAIL使用FD逼近Gram矩阵K的特征分解,降低数据的维数(即学习Zk)。我们将FD并行化,将Zd分配给执行器,让每个执行器批量计算SVD,并将结果聚合为Zd的b型草图。我们使用草图局部计算C,然后将C分布并并行计算SVD,得到Qc和Ac。最后一步,我们再次使用分布式矩阵乘法来构造表示Zk。
现在我们来谈谈GRAIL的实验评价。
5. 实验设置