动态时间规整聚类


40

使用动态时间规整(DTW)进行时间序列聚类的方法是什么?

我已经读过有关DTW的方法,该方法可以找到两个时间序列之间的相似性,而它们可能会随时间变化。我可以将这种方法用作k-means等聚类算法的相似性度量吗?


2
是的,您可以将相似性度量用作k均值聚类的输入,然后确定数据中的组。
天气预报员

主席先生,谢谢您的回答。我猜想对于每次迭代,我都需要为每个(质心,聚类点)对形成距离矩阵,并以标准方式重新计算质心,作为属于聚类的所有序列的平均值?
Marko 2015年

1
亚历山大Blekh在下面的答案有一个博客帖子,提供有关如何做到这一点在R.一个详细的例子
预报员

2
@forecaster千万不能使用K-手段与DTW。k均值使方差(而不是距离)最小化。方差是平方的欧几里得,但这并不意味着k均值可以优化其他距离。均值不是,并且在DTW中构造反例应该相当容易,例如偏移的正弦波:两者在DTW中非常相似,但是它们的均值为零,与两者非常相似。π
Anony-Mousse 2015年

1
K均值不是用于时间序列聚类的合适算法。隐藏的马尔可夫模型适用于离散的纵向数据。现在有几本关于该主题的书,以及Oded Netzer(哥伦比亚)和Steve Scott(Google)的重要著作。另一种方法是Max Planck的Andreas Brandmaier开发的信息理论方法,称为置换分布聚类。他还编写了R模块。集群解决方案的比较是一个不同的问题。玛丽娜·梅拉(Marina Meil​​a)的论文《比较集群》,华盛顿统计技术报告418是最好的。
Mike Hunter

Answers:


33

千万不能使用k均值的时间序列。

DTW 不会通过均值最小化;k均值可能不会收敛,即使收敛,也不会产生很好的结果。平均值是坐标上的最小二乘估计量。它最小化了方差,而不是任意距离,并且k均值设计用于最小化方差,而不是任意距离

假设您有两个时间序列。两个正弦波,频率相同,采样周期较长;但它们被偏移。由于DTW会进行时间扭曲,因此可以对齐它们,使其完全匹配,除了开始和结束。DTW将为这两个系列分配一个很小的距离。但是,如果您计算两个系列的均值,则将是平坦的0-它们会抵消。平均也不会做动态时间规整,并失去所有DTW得到了价值。在这样的数据上,k均值可能无法收敛,结果将毫无意义。实际上,仅应在方差(=平方欧几里得)或某些等效情况下使用K均值(如余弦,在L2归一化数据上,其中余弦相似度2 -π等于平方欧几里德距离)2

取而代之的是,使用DTW计算距离矩阵,然后运行分层聚类,例如单链接。与k均值相比,该序列甚至可能具有不同的长度。


4
好吧,当然有PAM(K型)可以在任意距离下工作。支持任意距离的众多算法之一-k-means不支持。其他选择是DBSCAN,OPTICS,CLARANS,HAC,...
Anony-Mousse 2015年

1
大概。因为k-medoids使用DTW-medoid查找聚类中心,而不是L2均值。我不知道任何在现实世界中成功的时间序列聚类。我相信我看过论文,但没有一个真正使用结果。仅概念证明。
Anony-Mousse 2015年

1
@Aleksandr Blekh将此举作为他的例子之一nbviewer.ipython.org/github/alexminnaar / ...对此有何看法?
Marko 2015年

1
玩具问题。在现实世界中无用。实际数据会产生大量噪声,这将比平滑正弦曲线和此数据中呈现的模式造成的损害更大。
Anony-Mousse 2015年

1
我认为分层聚类是更好的选择。无论如何,您将无法处理大量的系列。
Anony-Mousse 2015年

49

是的,您可以使用DTW方法对时间序列进行分类和聚类。我已经编译了以下资源,这些资源都专注于这个主题(我最近回答了一个类似的问题,但不在此站点上,因此为了大家的方便我在这里复制内容):


2
+1了许多优秀的文章和博客。很好的参考。
预测者

@forecaster:谢谢您的赞赏和客气!很高兴您喜欢这个收藏。遗憾的是,我现在没有时间更认真地学习预测以及统计和数据科学的其他许多领域,但是我会利用一切机会学习新知识。
Aleksandr Blekh

1
@AleksandrBlekh非常感谢您的回答,我一直在与Anony-Mousse讨论这个方法,因为我对DTW作为K均值的相似性度量特别感兴趣,因此我可以得到质心作为​​输出。您对此有何看法和经验?如您所见,Anony-Mousse提出了一些论点,认为在这种情况下结果可能不是那么好……也许在实践上有一些个人经验?
Marko 2015年

1
好的,再次感谢。您从我这里获得+1,他得到了答案,因为我的问题更倾向于k均值和DTW。
Marko 2015年

1
@pera:我很高兴。感谢您的支持。完全了解并同意接受,完全没有问题。
Aleksandr Blekh

1

Petitjean等人提出了一种最新的DTW重心平均(DBA)方法平均时间序列。在另一篇论文中,他们从经验和理论上证明了如何将其用于用k均值聚类时间序列。作者在GitHub上提供了一个实现(代码的链接)。

1 F. Petitjean,G. Forestier,GI Webb,AE Nicholson,Y. Chen和E. Keogh,“时间序列的动态时间扭曲平均可以实现更快,更准确的分类”,2014 IEEE国际数据挖掘会议,深圳,2014年。

2 F. Petitjean,P.Gançarski,通过平均来总结一组时间序列:从Steiner序列到紧凑的多重比对,《理论计算机科学》,第414卷,2012年第1期


2
请提供完整的参考而非链接。链接可能会消失
Antoine

1

动态时间扭曲比较可能实现或可能无法实现的已实现数据点。一种更严格的方法是通过称为望远镜距离的度量来比较时间序列的分布

关于该指标的最酷的事情是,通过拟合一系列二进制分类器(例如SVM)来进行经验计算。

有关简要说明,请参见this

对于聚类时间序列,它的表现优于DTW;参见原始论文的表1 [1]。

[1] Ryabko,D.和Mary,J.(2013)。时间序列分布之间的基于二进制分类的度量及其在统计和学习问题中的使用。机器学习研究杂志,14(1),2837-2856。


2
已尝试使用编辑笔记:“热雷米玛丽(合着),有一个网页被R执行讨论的算法。
呱-恢复莫妮卡

@gung Wow,太好了!我和第一作者有往来书信,他没有提及。
horaceT

实际上,我只是从试图将其编辑为您答案的某人中复制@horaceT。我对此不太了解。
gung-恢复莫妮卡

0

是。天真的和可能缓慢的方法可能是

  1. 创建所有群集组合。k是簇数,n是系列数。返回的项目数应为n! / k! / (n-k)!。这些就像潜在的中心。
  2. 对于每个系列,通过DTW为每个群集组中的每个中心计算距离,并将其分配给最小距离。
  3. 对于每个群集组,计算单个群集内的总距离。
  4. 选择最小值。

我用它来做一个小项目。这是我有关时间序列聚类的存储库,以及与此有关的其他答案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.