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



我有一个关于聚类技术应用的问题,更具体地说是K-means。 我有一个包含 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 矩阵。

你只有三个传感器。这意味着,您需要三个值,d(A B(,d(B,C(和d(A B(。这里的任何"集群"对我来说似乎都没有意义?当然不是k-means。K 均值表示点 (!在 R^d 中表示小 d。

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

Q1:否。原因:此处不需要相关性。

Q2: 没有。原因:我会以不同的方式计算距离

对于第一行,R' 内置 sdist()函数(默认使用欧氏距离(

dist(c(6, 10, 11))

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

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

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

但是没有单一的方法可以计算一个点和一组点之间的距离。在那里,您需要一个联动功能(最小值/最大值/平均值/...

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

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

最新更新