这篇论文是关于时间序列相似性搜索的,所谓的时间序列也就是指,与时间相关的序列,比如说一个人的血压,他每时每刻都会有或多或少的变化,随着时间的延续,就形成了一组血压序列。
时间序列相似性搜索的应用有很多,如医学方面,人在某段时间的各种生理特征值都可以作为时间序列,根据一个人的序列值和已经诊断的病例的序列值比较,可以大致判断人的疾病;类似的可以用来做设备故障的检测;再有就是语音识别。
一般常用的序列相似性比较的有基于欧式距离的(Euclidean Distance),它的精确度较高,但是要求序列等长度,而且对于噪声比较敏感;第二类方法是基于动态时间规整的(DTW),优点是可以处理非等长序列,允许不同步的点对应计算,由于该方法是依靠动态规划来解决的,因此计算代价比较高。第三类是基于最长公共子序列的(LCSS),优点同样是可以处理非等长序列,允许不同步的点对应计算,缺点同样也是计算代价比较高。下面我们就介绍本篇论文的方法。
论文主要是把空间划分成等大小的方格,序列中的点会落在对应的方格内,我们就以方格的编号对落在该方格的点建立索引,两条序列的相似性以落在同一个方格内的点的个数作为计算依据。大致思路如下图,有S1、S2、S3三条序列,查询序列Q。首先用一个倒排表IL记录下各个方格有哪些序列的点落在里面,如17号方格有S2、S3经过;再用一个表Intersection记录S1、S2、S3与查询序列Q有多少落入同一格的点,最终用Jaccard值计算各序列与Q的相似性。其中Jaccard以落入同一个方格的点数和(S∩Q)与两序列长度和(SUQ)的比值计算的。