Matrix Profile I-时间序列的全对相似性连接
Introduction And Background
全对相似性连接问题有很多种变体,其基本任务为:给定一组数据对象,检索每个对象的最近邻居。与K近邻相似,对于时间序列,如果需要检测子序列的前K个最近邻或每个对象的最近邻(如果在近邻子序列在阈值\tau内)。
这种对于阈值\tau的依赖在时间序列更加关键:
- 与相似度不同(在零到一之间有界),欧式距离实际上是一个无界的数值,而且通常来讲不直观。
- 对于非常相似的数据集,单个阈值也会产生截然不同的输出大小。
Definition
Definition 1:
时间序列T是实数值序列t_i :T=t_1,t_2,\dots,t_n,其中n是时间序列T的长度。
Definition 2:
时间序列T的子序列T_{i,m}是从位置i开始的长度为m的连续子集。
Definition 3:
距离分布D是一个用于查询所有子序列集中每两个子序列之间的欧式距离的向量。在Matrix Profile中子序列之间的距离由z-normalized子序列之间的欧几里得距离进行测量。
Definition 4:
时间序列T的全子序列集合A是通过在时间序列T上滑动长度为m的窗口获得的T的所有可能子序列的有序集合:
其中m是用户定义的子序列长度。通过A[i]来表示T_{i,m}。
Definition 5:
1NN-join函数:给定两个全子序列集A和B以及两个子序列A[i]和B[j],一个1NN-join函数\theta_{1nn}(A[i],B[j])是一个布尔函数,当且仅当B[j]是集合B中的子序列A[i]的最近邻子序列时会返回“true”。
使用定义的连接函数,可以通过在两个输入全子序列集上应用相似性连接运算符来生成相似性连接集。
Definition 6:
相似性连接集:给定所有子序列集A和B,A与B的相似性连接集J_{AB}是包含A中每个子序列与其在B中最近邻配对的集合,形式化地表示为J_{AB} = A_{\bowtie\theta_{1n}}B。
测量相似性连接集中每对之间的欧氏距离,并将结果存储到一个有序向量中,称该结果向量为矩阵轮廓。
Definition 7:
矩阵轮廓(简称轮廓)P_{AB}是一个向量,包含J_{AB}中每对之间的欧氏距离。
我们称这个向量为矩阵轮廓,因为计算它的一种方法是计算一个时间序列中所有子序列与另一个时间序列中所有子序列的完整矩阵距离,并提取每一行中的最小值(自连接情况下为最小的非对角线值)。如下图所示:
类似于距离轮廓,矩阵轮廓可以被视为一个元时间序列,用于注释时间序列T,如果矩阵轮廓是通过将T与自身连接生成的。该轮廓具有许多有趣且可利用的特性,例如,轮廓上的最高点对应时间序列异常点,最低点对应最佳时间序列模式对的位置,方差可以看作是T复杂度的度量,此外,矩阵轮廓中数值的直方图正是时间序列密度估计的结果。
将相似性连接集合(Definition 6)的这个特殊情况明明为自相似性连接集合,并将相应的概要称为自相似性连接概要。
Definition 8:
自相似性连接集合J_{AA}是集合A与其自身进行相似性连接的结果,我们正式表示为J_{AA} = A_{\bowtie_{\theta 1nn}}A。我们将相应的矩阵概要或自相似性连接概要表示为P_{AA}。
注意,当执行自相似性连接时,我们排除平凡匹配,即如果A[i]和A[j]是来自同一全子序列集合A,\theta_{1nn}(A[i],B[j])的子序列,当A[i]和A[j]是一堆普通匹配时,A,\theta_{1nn}(A[i],B[j])为"false"。
矩阵概要中的i^{th}元素告诉我们从T的子序列开始于i的最近邻的欧氏距离。然而,它并不告诉我们该邻居的位置,此信息记录在矩阵概要索引中。
Definition 9:
相似连接集合J_{AB}的矩阵轮廓索引I_{AB}是一个整数向量,如果\{A[i],B[j]\}\in J_{AB}其中I_{AB}[i]=j
通过以这种方式存储近邻信息,可以通过访问矩阵轮廓索引中的第i个元素,高效地检索A[i]的最近邻。
Algorithms
1. Mueen's ultra-fast Algorithm for Similarity Search(MASS)
首先介绍一种用于时间序列数据的新颖欧氏距离相似性搜索算法,该算法不仅找到查询的最近邻,并且还会返回其距离。