检查时间序列之间的相似性

数据挖掘 Python 分类 数据挖掘 时间序列 熊猫
2021-10-01 10:11:19

我有参数ABC的时间序列D它们都受到相同的主要条件的影响,但每个都有细微的差异。它们被放置在不同的位置,A, B, Care inlocal1Dis in local2

我想知道哪一个 ( A, B, C) 与D. 我应该如何处理这个问题?

4个回答

听起来像是Dynamic Time Warping的工作,在 Python 和 R 中有实现。

有很多方法可以计算时间序列之间的距离,使用的方法取决于您的数据。

正如其他答案所述,动态时间扭曲可能是要走的路。但是,此方法假定时间序列的不同部分之间可能存在非线性扭曲。

如果您不希望信号出现扭曲或延迟,那么像欧几里德距离这样简单的方法可能是更好的选择。当然,您应该仅在应用了一些预处理(例如,幅度缩放)之后应用欧几里得距离。

看看这个演示文稿,它介绍了这些方法的优缺点,并更详细地讨论了预处理:

首先,您应该定义相似性的含义以及衡量它的相应指标。第二步是将度量应用于(A,D),(B,D)等。然后,给出最小值的集合是具有最高相似性的集合。如果您发现您的指标不是您想要的,只需更改它,直到它满足您的要求。您需要清楚“相似性”的含义以及如何衡量它。

一种可能性是将参数集解释为 N 维空间中的一个点并计算平均欧几里德距离。

我不久前写了本教程,以准确地为这些问题提供指导。它涵盖了四种使用 Pearson 相关、时滞互相关、动态时间扭曲(如前所述)和瞬时相位同步来量化时间序列数据之间的相似性(同步)的方法。您选择使用什么取决于您如何定义相似性和数据的特征。