高效精准的时序聚类算法K-Shape

中文标题:高效精准的时序聚类算法K-Shape

英文标题:k-Shape: Efficient and Accurate Clustering of Time Series

发布平台:ACM SIGMOD

Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data

发布日期:2015-05-27

引用量(非实时):703

DOI:10.1145/2723372.2737793

作者:John Paparrizos, Luis Gravano

关键字: #K-Shape #时间序列 #聚类

文章类型:conferencePaper

品读时间:2022-01-19 17:23

1 文章萃取

1.1 核心观点

本文提出了一种领域独立、高精度、高效的时间序列聚类算法h-Shape。k-Shape以k-means算法为基础,根据时间序列的特殊性,设计了互相关的距离度量算法,以及将质心的寻找转为最优化问题,实现了对时间序列形状的考量,并通过大量数据和算法对比,验证了算法的鲁棒性、准确性和低计算成本。

1.2 综合评价

  • 针对时序聚类做特定优化,包含对时间序列形状的解释性
  • 设计了互相关的距离度量算法,并通过快速傅里叶变换加速运算
  • 将质心的寻找转为(Rayleigh Quotient)瑞利商问题,实现最优化问题的快速计算
  • 最终效果优秀,相比其他算法计算复杂度低两个数量级

1.3 主观评分:⭐⭐⭐⭐⭐

2 精读笔记

2.1 背景知识

时序聚类算法依赖于传统聚类算法,但需要更多适应性的调整,其中最常见的是对距离测度的创新

本文提出的K-Shape算法就是采纳了K-means聚类的思想,不过对于距离度量和质心计算进行了革新,并通过广泛实验进行了验证。

聚类追求的是:簇内样本尽可能相似(同质性最大,homogeneity),簇间样本尽可能不相似(差异性最大,separation),常见的设定目标为距离平方和最小

时序数据寻找质心的过程是一个典型的Steiner’s sequence问题,最终的质心应当满足距离簇内所有样本的距离平方和最小。而对于两段时序,衡量距离的常见方法为欧氏距离(Euclidean Distance,即ED)和动态时间规整(Dynamic Time Warping,即DTW):

描述时间序列相似度的几种不变性:缩放平移不变性(Scaling and translation invariances)、平移不变性(Shift invariance,可用于局部相似或存在相位差的情况)、均匀缩放不变性(Uniform scaling invariance,常用于时序对齐,比如均匀拉伸短序列或均匀压缩长序列)、闭塞不变性(Occlusion invariance,忽略局部或缺失的子序列)、复杂不变性(Complexity invariance,常用于形状相似但是细节丰富度不同的两个序列)

文中提供的距离测度方法具备伸缩平移不变性

2.2 K-Shape算法介绍

2.2.1 距离测度方法SBD

由于DTW高昂的计算成本,本文主要采用了互相关(Cross Correlation)作为基本的距离测度方法,并通过一系列的优化在一定程度上解决了互相关的性能缺陷。

假设存在两个长度一致的时序,分别为x=(x1,...,xm)y=(y1,...,ym)

这里之所以设定长度一致,主要是为了简化后续的公式,理解公式后,就发现可以很容易地应用到长度不一致的情况

互相关主要通过在y上滑动x并依次进行点乘加和而得(类似于卷积操作)

为了方便处理边缘情况,定义滑动时的x如下(补零操作):

x(s)={(01,...,0|s|,x1,x2,...,xms)if s0,(x1s,...,xm1,xm,01,...,0|s|)if s<0,

  • 其中s[m,m]s0对应滑动刚开始时,x左侧溢出的情况;
  • s<0对应滑动快结束时,x右侧溢出的情况。
  • 最终计算的互相关序列长度为(2m1),其中第ω个互相关值为CCω

CCω(x,y)=Rωm(x,y) 其中ω1,2,...,2m1,而Rωm(x,y)计算方式如下: Rk(x,y)={Σl=1mkxl+kylif k0,Rk(x,y)if k<0, 其中k<0对应ω<m的时候,即x左溢出的情况,此时的计算转化为Rk=Σl=1m+kxlk×yl,也就是向量(x1+|k|,x2+|k|,...,xm)与向量(y1,y2,...,ym|k|)的点积和

这里的逻辑看起来复杂,其实就是滑动点乘,只不过将边缘情况考虑进去,而针对边缘情况的补零操作其实也就意味着不计算溢出部分

对互相关结果进行标准化的三种方法 NCCq(x,y)={CCw(x,y)mq=b (NCCb),CCw(x,y)m|w|q=u (NCCu)CCw(x,y)R0(x,x)R0(y,y)q=c (NCCc), 前两种标准化方法主要为了消除长度的影响,而第三种方法主要为了消除自相关的应该

以真实数据验证,数据长度均为1024ω1,2,...,20481,则三种方式的结果如下:

图中红圈对应了匹配度(标准化互相关)最高的时候,也是描述序列间距离的最佳位置

其中子图(d)即表示的本文所采用的标准化方法,对于两侧由于时序长度较短时的异常波动起到了很好的抑制作用,最高点对应的ω=m=1024,也符合直觉判断

而本文的距离(Shape-based distance,简称SBD)计算公式则是根据标准化互相关的简单变形: SBD(x,y)=1maxω(CCw(x,y)R0(x,x)R0(y,y)) 值得一提的是,借助快速傅里叶变换(FFT)可以将距离计算的复杂度从O(n2)降到O(nlgn)

具体算法流程如下:

2.2.2 质心计算

传统聚类算法,如K-means都是采用簇内均值作为质心的计算方式,但是这种方式对于时序数据来说,不能够把握住时序的特征,均值方法(实线)与本文方法(虚线)对比如下:

本文方法是建立最优化问题,寻找与第k个簇内与所有时序互相关值和最小的时序uk

uk=argmaxukΣxiPk(maxwCCw(xi,uk)R0(xi,xi)R0(uk,uk))

由于均值方法得到的质心与本文方法得到的质心较为相似,所以考虑采用均值法质心用于时序对齐,计算得到合理的ω,然后省略上公式的部分,可将uk的公式更新如下: uk=argmaxukΣxiPk(Σl[1,m]xilμkl)2 公式的向量化表示结果如下: uk=argmaxukΣxiPk(xiTuk)2=argmaxukukTΣxiPk(xixiT)ukuk=ukQ使其中心化,其中Q=I1mOI是单位矩阵,O是全1矩阵

S=ΣxiPk(xixiT)简化公式,最后除以$\vec{u}k^T\cdot \vec{u}_k\vec{u}_k$\vec{u}_k^{\ast}=argmax\{\vec{u}_k}\frac{\vec{u}_k^T\cdot Q^T\cdot S \cdot Q \cdot \vec{u}_k}{\vec{u}_k^T\cdot \vec{u}_k}=argmax_{\vec{u}_k}\frac{\vec{u}_k^T\cdot M \cdot \vec{u}_k}{\vec{u}_k^T\cdot \vec{u}_k}$$

最终公式转换为了一个(Rayleigh Quotient)瑞利熵问题,其最大特征值即对应了最优化问题的最大值,最大特征值对应的特征向量对应了本文所需的质心uk

具体算法流程如下:

2.2.3 K-shape时序聚类

K-shape聚类方法与K-means方法很像,只不过距离计算方法改为了SBD,质心计算方法也进行了相应调整,具体算法流程如下:

简单来说,就是在迭代中根据SBD将每个时序分配给最相似的簇,然后更新簇的质心,进入下一次迭代,直到最终簇的分布不再变化或者达到最大迭代次数(100)

算法复杂度分析:n表示序列个数,m表示序列长度,k表示簇/类别的个数

  1. 计算SBD距离并分配每个时序给相应簇,其中计算SBD距离的复杂度为O(mlogm),距离计算会重复nk次,所以此过程最终计算复杂度为O(nkmlog(m))
  2. 计算矩阵M的复杂度为O(nm2),求解矩阵M的特征矩阵的复杂度为O(km3)
  3. 最终K-shape算法的计算复杂度为O(maxnkmlog(m),nm2,km3)

2.3 实验评估

最终评估使用48个带标签数据集,不同数据集的序列个数从56到9000+不等,不同数据集的序列长度从24到1882不等,不过同一个数据集的序列长度相同

最终不同距离度量方法的对比如下:

初步结论:

  • cDTW比DTW更快,精度更高
  • SBD比DTW更快,略低于ED
  • SBD fft+复杂度 权衡准确性和效率来说结果最好

不同聚类方法对比:

其中H表示层次聚类(H-S、H-A、H-C分别表示层次聚类的三种簇间距计算方式,Single Linkage 最近值,Complete Linkage最远值,Average Linkage平均值),S表示谱聚类,PAM表示Partitioning Around Medoi

相关资源

往年同期文章