Algorithm 时间序列海量数据集的聚类方法

Algorithm 时间序列海量数据集的聚类方法,algorithm,time-series,cluster-analysis,Algorithm,Time Series,Cluster Analysis,大多数聚类算法都需要距离矩阵。如果数据的维数较低,则创建距离矩阵很容易。但是,考虑8000点左右的时间序列呢? for i in range(total_series): for j in range(total_series): dis[i][j] = distance(series[i],series[j]) 很明显,创建此矩阵所需的最短时间为O(n^2)。现在,如果我们比较两个时间序列的所有8000点,时间复杂度将会非常高。我只是在谈论对齐距离(欧几里德距离),而

大多数聚类算法都需要距离矩阵。如果数据的维数较低,则创建距离矩阵很容易。但是,考虑8000点左右的时间序列呢?

for i in range(total_series):
    for j in range(total_series):
        dis[i][j] = distance(series[i],series[j])
很明显,创建此矩阵所需的最短时间为O(n^2)。现在,如果我们比较两个时间序列的所有8000点,时间复杂度将会非常高。我只是在谈论对齐距离(欧几里德距离),而不是一些编辑距离

因为我们有大约50000个要聚类的时间序列,所以O(n^2)对于循环的时间序列来说会非常高。我需要通过一些索引或预处理技术在最短的时间内计算距离函数。请注意,距离函数将进行逐点比较


有人能提出一些技术,让我们通过一些预处理,在不到O(时间序列长度)的时间序列中找到两个时间序列之间的距离吗?或者建议一些不创建时间复杂度为O(n^2)的距离矩阵的聚类方法?

由于欧几里德距离的对称性,您可以计算具有O(n^2/2)复杂度的三角形矩阵