【问题标题】:Time series distance metric时间序列距离度量
【发布时间】:2018-07-07 22:36:03
【问题描述】:

为了对一组时间序列进行聚类,我正在寻找一个智能距离指标。 我尝试了一些众所周知的指标,但没有一个适合我的情况。

例如:假设我的聚类算法提取了这三个质心 [s1, s2, s3]:

我想把这个新的例子 [sx] 放在最相似的集群中:

最相似的质心是第二个,所以我需要找到一个距离函数 d 给我d(sx, s2) < d(sx, s1)d(sx, s2) < d(sx, s3)

编辑

这里是带有度量的结果 [余弦、欧几里得、闵可夫斯基、动态类型扭曲] ]3

编辑 2

用户 Pietro P 建议将距离应用于时间序列的累积版本 该解决方案有效,这里是图表和指标:

【问题讨论】:

  • 查看 Richard Moeckel 和 Brad Murray 撰写的“测量时间序列之间的距离”论文,Physica D I02 (1997) 187-194。不是最近的一篇,但很好读。

标签: time-series distance hierarchical-clustering dtw


【解决方案1】:

好问题!在这些时间序列上使用 R^n 的任何标准距离(欧几里得、曼哈顿或一般 minkowski)都无法达到您想要的结果,因为这些指标与 R^n 坐标的排列无关(而时间是严格排序的,并且它是你想要捕捉的现象)。

一个简单的技巧,可以满足您的要求,即使用时间序列的累积版本(随着时间的增加对时间求和),然后应用标准度量。 使用曼哈顿指标,您将获得两个时间序列之间的距离,即它们累积版本之间的区域

【讨论】:

  • 谢谢,我喜欢你的方法,我会用你的解决方案的可视化来编辑问题。
【解决方案2】:

另一种方法是利用DTW,这是一种计算两个时间序列之间相似度的算法。全面披露;为此,我编写了一个名为trendypy 的Python 包,您可以通过pip (pip install trendypy) 下载。 Here 是关于如何使用该软件包的演示。您只是基本上计算不同组合的总最小距离来设置集群中心。

【讨论】:

    【解决方案3】:

    如果使用标准Pearson correlation coefficient?,那么您可以将新点分配给系数最高的集群。

    correlation = scipy.stats.pearsonr(<new time series>, <centroid>)

    【讨论】:

    • 皮尔逊相关系数为:[nan, -0.11, -0.11],同样,s2 和 s3 具有相同的距离。
    【解决方案4】:

    Pietro P 的答案只是将卷积应用于您的时间序列的一个特例。

    如果我给了内核:

    [1,1,...,1,1,1,0,0,0,0,...0,0]
    

    我会得到一个累积系列。

    添加卷积是有效的,因为您要为每个数据点提供有关其邻居的信息 - 它现在取决于顺序。

    尝试使用高斯卷积或其他内核可能会很有趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2013-05-05
      • 2016-09-27
      • 2018-07-03
      • 2016-12-13
      • 1970-01-01
      • 2015-10-07
      • 2023-03-22
      相关资源
      最近更新 更多