我正在尝试对时间序列数据进行聚类:我有大约16000个时间序列向量,每个向量长约1500个样本。
我尝试使用 dtw 包:
d = dist(x = time_series, method = "DTW")
hclust(d)
然而,距离矩阵计算并未在整个周末完成。
我正在寻找一种更快的方法,因为我的数据集会更大。
答案 0 :(得分:3)
您的数据长度为1500.假设它被过采样..
如果您将其1合1下采样,DTW将快4倍。 如果你将其1合1下采样,DTW将快16倍。 如果你将它下调为1比10,那么DTW将快100倍。
这可能是一个很好的起点。
您使用的是cDTW还是DTW?前者速度更快,而且往往更准确。
SIGKDD本周的一篇论文通过使用上限和下限[a]来更快地聚类DTW。
但是,您的矩阵大小(16000 * 15999)/ 2。
所以如果你有两天:两天/(16000 * 15999)/ 2 = 337微秒
所以你需要在337微秒内进行每次比较,这不是很多时间。这将很难......但是它可以通过努力来实现。如果你遇到困难,请给我发电子邮件(我是[a]的最后一位作者)
[a] Nurjahan Begum,Liudmila Ulanova,Jun Wang,Eamonn Keogh(2015)。使用新的可接受的修剪策略加速动态时间扭曲聚类SIGKDD 2015