时间序列距离度量
Time series distance metric
为了对一组时间序列进行聚类,我正在寻找智能距离度量。
我尝试了一些众所周知的指标,但没有一个适合我的情况。
ex: 假设我的聚类算法提取了这三个质心 [s1, s2, s3]:
我想将这个新示例 [sx] 放在最相似的集群中:
最相似的质心是第二个,所以我需要找到一个距离函数 d 给我 d(sx, s2) < d(sx, s1)
和 d(sx, s2) < d(sx, s3)
编辑
这里是带有指标的结果 [余弦、欧几里德、明可夫斯基、动态类型扭曲]
]3
编辑 2
用户 Pietro P 建议将距离应用于 时间序列的累积版本
该解决方案有效,这里是图表和指标:
如果使用标准 Pearson correlation coefficient? 那么你可以将新点分配给系数最高的簇。
correlation = scipy.stats.pearsonr(<new time series>, <centroid>)
好问题!在这些时间序列上使用 R^n 的任何标准距离(欧几里德、曼哈顿或一般的明可夫斯基)无法获得您想要的结果,因为这些指标独立于 R^n 坐标的排列(虽然时间是严格排序的,并且它是你想要捕捉的现象)。
一个可以满足您要求的简单技巧是使用时间序列的累积版本(随着时间的增加对值求和),然后应用标准指标。 使用曼哈顿指标,你会得到两个时间序列之间的距离,即它们的累积版本.
之间的区域
另一种方法是利用 DTW which is an algorithm to compute the similarity between two temporal sequences. Full disclosure; I coded a Python package for this purpose called trendypy
, you can download via pip (pip install trendypy
). Here 是一个关于如何使用该包的演示。您只是基本上计算不同组合的总最小距离以设置聚类中心。
Pietro P 的回答只是对时间序列应用卷积的特例。
如果我给内核:
[1,1,...,1,1,1,0,0,0,0,...0,0]
我会得到一个累积系列。
添加卷积是有效的,因为您为每个数据点提供了关于它的邻居的信息 - 它现在依赖于顺序。
尝试使用高斯卷积或其他内核可能会很有趣。
为了对一组时间序列进行聚类,我正在寻找智能距离度量。 我尝试了一些众所周知的指标,但没有一个适合我的情况。
ex: 假设我的聚类算法提取了这三个质心 [s1, s2, s3]:
我想将这个新示例 [sx] 放在最相似的集群中:
最相似的质心是第二个,所以我需要找到一个距离函数 d 给我 d(sx, s2) < d(sx, s1)
和 d(sx, s2) < d(sx, s3)
编辑
这里是带有指标的结果 [余弦、欧几里德、明可夫斯基、动态类型扭曲]
编辑 2
用户 Pietro P 建议将距离应用于 时间序列的累积版本
该解决方案有效,这里是图表和指标:
如果使用标准 Pearson correlation coefficient? 那么你可以将新点分配给系数最高的簇。
correlation = scipy.stats.pearsonr(<new time series>, <centroid>)
好问题!在这些时间序列上使用 R^n 的任何标准距离(欧几里德、曼哈顿或一般的明可夫斯基)无法获得您想要的结果,因为这些指标独立于 R^n 坐标的排列(虽然时间是严格排序的,并且它是你想要捕捉的现象)。
一个可以满足您要求的简单技巧是使用时间序列的累积版本(随着时间的增加对值求和),然后应用标准指标。 使用曼哈顿指标,你会得到两个时间序列之间的距离,即它们的累积版本.
之间的区域另一种方法是利用 DTW which is an algorithm to compute the similarity between two temporal sequences. Full disclosure; I coded a Python package for this purpose called trendypy
, you can download via pip (pip install trendypy
). Here 是一个关于如何使用该包的演示。您只是基本上计算不同组合的总最小距离以设置聚类中心。
Pietro P 的回答只是对时间序列应用卷积的特例。
如果我给内核:
[1,1,...,1,1,1,0,0,0,0,...0,0]
我会得到一个累积系列。
添加卷积是有效的,因为您为每个数据点提供了关于它的邻居的信息 - 它现在依赖于顺序。
尝试使用高斯卷积或其他内核可能会很有趣。