3个时间序列之间的聚类矩阵距离

时间:2018-09-11 23:13:01

标签: cluster-analysis distance k-means

我对聚类技术的应用有一个更具体的问题,即K均值。 我有一个带有3个传感器(A,B,C)的数据框:

  time      A  |   B   |  C   |
 8:00:00    6     10      11
 8:30:00    11    17      20
 9:00:00    22    22      15
 9:30:00    20    22      21
10:00:00    17    26      26
10:30:00    16    45      29
11:00:00    19    43      22
11:30:00    20    32      22
   ...      ...  ...     ...   

我想对具有相同行为的传感器进行分组。

我的问题是:看上面的数据帧,我必须计算数据帧中每个对象的相关性,然后将欧几里德距离应用于此相关性矩阵,从而获得具有距离值的3 * 3矩阵?

还是我转置数据帧,然后仅使用欧几里德度量标准来计算dist()矩阵,然后我将得到一个3 * 3的矩阵,并且具有distances值。

2 个答案:

答案 0 :(得分:0)

您只有三个传感器。这意味着,您需要三个值,即d(A B),d(B,C)和d(A B)。对我来说,这里的任何“聚类”似乎都不有意义吗?当然不是k均值。 K均值表示点(!),R表示小d。

选择您喜欢的任何形式的时间序列相似性。可能只是相关,也可能是DTW等。

答案 1 :(得分:0)

Q1:否。为什么:这里不需要相关。

Q2:否。为什么:我会以不同的方式计算距离

第一行是R'内置的dist()函数(默认情况下使用欧几里得距离)

dist(c(6, 10, 11))

为您提供每个值之间的间隔

   1 2
------
2| 4  
3| 5 1

项目2和3彼此最接近。很简单。

但是,没有一种方法可以计算一个点与一组点之间的距离。那里您需要一个链接功能(最小/最大/平均/...)

使用R的内置kmeans()函数会做什么:

  • 忽略日期列,
  • (假设在任何A,B,C列中都没有NA值)
  • 如有必要,对数据进行缩放(此处它们似乎都具有相同的数量级)
  • 在A,B,C列上执行KMeans分析,其中k = 1 ... n;评估结果
  • 选择合适的k执行最终的KMeans
  • 获取每一行的集群分配
  • 将它们放在C右侧的新列中