使用 dtwclust 进行动态时间规整距离 (DTW) 的时间序列聚类

Posted

技术标签:

【中文标题】使用 dtwclust 进行动态时间规整距离 (DTW) 的时间序列聚类【英文标题】:Time Series Clustering With Dynamic Time Warping Distance (DTW) with dtwclust 【发布时间】:2016-05-05 06:08:11 【问题描述】:

我正在尝试使用 dtwclust 包执行具有动态时间扭曲距离 (DTW) 的时间序列聚类。

我用这个功能,

dtwclust(data = NULL, type = "partitional", k = 2L, method = "average",
distance = "dtw", centroid = "pam", preproc = NULL, dc = NULL,
control = NULL, seed = NULL, distmat = NULL, ...)

我将数据保存为列表,它们的长度不同。 就像下面的例子,它是一个时间序列。

$a
[1]  0  0  0  0  2  3  6  7  8  9 11 13

$b
[1]  0  1  1  2  4  7  8 11 13 15 17 19 22 25 28 31 34 35

$c
[1]  1  2  4  4  4  4  4  4  4  4  5  5  5  5  5  5  5  6  6  6  6  7  7  8  8  9 10 10 12 14 15 17 19

$d
[1] 0 0 0 0 0 1 2 4 4 4

$e
[1]  0  1  1  3  5  6  9 12 14 17 19 20 22 24 28 31 32 34

现在,我的问题是

(1) 我的距离只能选择dtwdtw2sbd,质心只能选择dbashapepam(因为列表长度不同)。但是,我不知道哪个距离和质心是正确的。

(2) 我画了一些图表,但不知道如何选择合适且合理的图表。

k = 6, distance = dtw, centroid = dba:

k = 4, distance = dtw, centroid = dba(集群中心好像连线了?)

我已经做了所有的组合,k 从 4 到 13...但我不知道如何选择正确的组合...

【问题讨论】:

【参考方案1】:

您不想“选择”参数,而是评估结果。因此,您需要选择一个评估聚类的标准。您基本上可以改变距离和 k 等参数,然后使用损失函数评估聚类。聚类评价一般有两种可能:

外部评价:

您可以使用标签(未用于聚类,因此被视为外部标签)来计算误报、真阳性等形式的准确度,最终将您带到AUC measure。

您的数据似乎没有标记,因此您无法计算任何准确性,这将是最简单的方法。

内部评估:

或者,您可以尝试最大化集群内相似度(集群成员与特定集群的所有其他成员的平均距离)并最小化集群间相似度(集群成员与外部所有元素的平均距离)他自己的集群)。

更多信息请见:

http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

http://www.ims.uni-stuttgart.de/institut/mitarbeiter/schulte/theses/phd/algorithm.pdf

【讨论】:

请注意,dtwclust 现在在cvi 函数中包含评估工具。

以上是关于使用 dtwclust 进行动态时间规整距离 (DTW) 的时间序列聚类的主要内容,如果未能解决你的问题,请参考以下文章

视频时间序列分类方法:动态时间规整算法DTW和R语言实现|附代码数据

DTW (Dynamic Time Warping) 动态时间规整

在 Pandas 数据框中计算动态时间扭曲距离

语音识别基于matlab GUI动态时间规整算法(RTW)语音识别系统含Matlab源码 341期

语音识别基于matlab GUI动态时间规整算法(RTW)语音识别系统含Matlab源码 341期

离散序列的一致性度量方法:动态时间规整(DTW)