algorithm - 时间序列大数据集的聚类方法

标签 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 个点,时间复杂度会非常高。我只是在谈论对齐距离(欧几里得),而不是这里的一些编辑距离。

由于我们有大约 50,000 个时间序列要聚类,因此对于那些 for 循环,O(n^2) 会非常高。我需要通过一些索引或预处理技术在最短的时间内计算距离函数。注意距离函数是要逐点比较的。

有人可以建议一些技术,以便我们可以通过一些预处理在小于 O(时间序列长度)的情况下找到两个时间序列之间的距离吗?或者建议一些无需创建时间复杂度为 O(n^2) 的距离矩阵的聚类方法?

最佳答案

由于欧氏距离的对称性,您可以计算复杂度为 O(n^2/2) 的三角矩阵

关于algorithm - 时间序列大数据集的聚类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437934/

相关文章:

algorithm - 如何计算表面由三角形组成的 3D 网格下方的体积

excel - 3 Excel 中的变量加权平均值

time-series - 如何计算股票的指数移动平均线

基于 Mysql json 的趋势​​标签实现

python - 如何在 Pyspark 中使用滑动窗口对时间序列数据进行数据转换

opencv - opencv kmeans 聚类的输入矩阵

algorithm - Heapsort交换使用插入排序?

python - 为什么 expmod 的这两个实现对于大值不同?

r - R 中的字符串聚类(可能吗?)

algorithm - 如何实现 K-Means++ 算法?