时间序列聚类

时间序列聚类通常分为三类:

1、依时间点聚类:时间点上的相似度,欧氏距离

2、依形状聚类:空间上的相似度,DTW

3、依变化聚类:数据生成过程中的相似度,基于概率的距离,GMM,ARMA,mixture数据简化方面,PAA是一个常用语时间

序列的数据变换,其在保证时间序列形态的同时,还保证了计算效率。在实际应用的时候,我们通常会想个办法自动算出PAA要分割的片段个数,不然每次都是通过随机喊个数将是一件特别折磨人的事情。这里借用Nyquist rate/frequency的概念,也就是频率不高于B赫兹的时间序列能够以2*B的抽样比例保留完整信息。虽然严格来讲时间徐磊算不上是频率有戒心好,但是因为时间序列数据的高频部分通常对应的是噪声,所以我们也可以吧时间序列近似地看做是频率有界信号。这样的话,通过计算拼了上街来得到的PAA的片段的个数,这里会用到快速傅里叶变换的逆运算,具体不在这里展开了。为了提高体量很大的时间序列的存储和查询效率,在PAA的基础上有时候还会用到indexing,其中iSAX算法是比较著名的方法。它把实数值转化为离散的符号,但iSAX是个有损压缩,要是真的最后聚类出了偏差,它是要负责任的。


还有一些看起来细枝末节但实际操作的时候极为重要,就是如何优化assignment这一步骤。assignment就是要迭代每一对标记好的点和未标记的点的距离,如k-means,DBSCAN都包含这样的步骤。不过这样的算法运算代价为O(n的三次方)。眼解决这样的问题,可以找出一个能剔除不必要的pairs的pruning算法,比如给每一个标记好的点预设一个有效半径,如果一个未标记的点A和一个标记好的点的距离超过了这个有效半径,那么这个有效半径内的其他标记好的点不必与这个未标记的点有任何联系。给这个算法加速还可以使用local-sensitive hashing等算法。




参考文献:https://www.zhihu.com/question/50656303?sort=created

你可能感兴趣的:(数据分类,时间序列聚类)