相関によるクラスタリングの樹状図の高さを解釈する方法


8

次のデータフレームがあるとします。

df <- data.frame(x1 = c(26, 28, 19, 27, 23, 31, 22, 1, 2, 1, 1, 1),
                 x2 = c(5, 5, 7, 5, 7, 4, 2, 0, 0, 0, 0, 1),
                 x3 = c(8, 6, 5, 7, 5, 9, 5, 1, 0, 1, 0, 1),
                 x4 = c(8, 5, 3, 8, 1, 3, 4, 0, 0, 1, 0, 0),
                 x5 = c(1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0),
                 x6 = c(2, 3, 1, 0, 1, 1, 3, 37, 49, 39, 28, 30))

そのような

> df
   x1 x2 x3 x4 x5 x6
1  26  5  8  8  1  2
2  28  5  6  5  1  3
3  19  7  5  3  1  1
4  27  5  7  8  1  0
5  23  7  5  1  1  1
6  31  4  9  3  0  1
7  22  2  5  4  1  3
8   1  0  1  0  0 37
9   2  0  0  0  0 49
10  1  0  1  1  0 39
11  1  0  0  0  0 28
12  1  1  1  0  0 30

階層的なクラスターを使用して、距離の尺度として相関関係を使用して、これらの12人をグループ化したいと思います。これが私がしたことです:

clus <- hcluster(df, method = 'corr')

そして、これはのプロットですclus

樹形図

これdfは、実際に私がクラスター分析を行っている69のケースの1つです。カットオフポイントを思いつくために、私はいくつかのデンドグラムを見て、ほとんどの場合に意味のある結果に満足するまでhパラメーターをいじっていましたcutree。その数はだったk = .5。したがって、これが後でグループ化したグループです。

> data.frame(df, cluster = cutree(clus, h = .5))
   x1 x2 x3 x4 x5 x6 cluster
1  26  5  8  8  1  2       1
2  28  5  6  5  1  3       1
3  19  7  5  3  1  1       1
4  27  5  7  8  1  0       1
5  23  7  5  1  1  1       1
6  31  4  9  3  0  1       1
7  22  2  5  4  1  3       1
8   1  0  1  0  0 37       2
9   2  0  0  0  0 49       2
10  1  0  1  1  0 39       2
11  1  0  0  0  0 28       2
12  1  1  1  0  0 30       2

ただし、この場合、.5カットオフの解釈に問題があります。私は、ヘルプページを含め、インターネット周りを見て撮影した?hcluster?hclust?cutree、ない成功を収めました。私がプロセスを理解するのに最も遠くなったのはこれを行うことです:

まず、マージがどのように行われたかを見てみましょう。

> clus$merge
      [,1] [,2]
 [1,]   -9  -11
 [2,]   -8  -10
 [3,]    1    2
 [4,]  -12    3
 [5,]   -1   -4
 [6,]   -3   -5
 [7,]   -2   -7
 [8,]   -6    7
 [9,]    5    8
[10,]    6    9
[11,]    4   10

つまり、観測9と11、次に観測8と10、次にステップ1と2(つまり、9、11、8、10の結合)などですべてが始まります。のmerge値について読むと、hcluster上記のマトリックスを理解するのに役立ちます。

次に、各ステップの高さを確認します。

> clus$height
[1] 1.284794e-05 3.423587e-04 7.856873e-04 1.107160e-03 3.186764e-03 6.463286e-03 
6.746793e-03 1.539053e-02 3.060367e-02 6.125852e-02 1.381041e+00
> clus$height > .5
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE

これは、クラスタリングが最後のステップでのみ停止したことを意味し、高さは最終的に.5を上回ります(デンドグラムがすでに指摘しているように、BTW)。

さて、私の質問です:高さをどのように解釈しますか?それは「相関係数の残り」ですか(心臓発作を起こさないでください)?最初のステップ(観測値9と11の結合)の高さを次のように再現できます。

> 1 - cor(as.numeric(df[9, ]), as.numeric(df[11, ]))
[1] 1.284794e-05

また、次のステップでは、観測8と10を結合します。

> 1 - cor(as.numeric(df[8, ]), as.numeric(df[10, ]))
[1] 0.0003423587

しかし、次のステップはこれらの4つの観測を結合することであり、私にはわかりません。

  1. このステップの高さを計算する正しい方法
  2. これらの高さのそれぞれが実際に意味するもの。

1
ここの私の答えからいくつかの情報を得ることができるかもしれません:階層的クラスタリングからの類似したユーザーの決定
ガン-モニカの回復

回答:


5

階層クラスタリングでは、クラスター間の距離メトリックを定義する必要があることを思い出してください。たとえば、階層的平均リンケージクラスタリング(おそらく最も一般的なオプション)では、クラスター間の距離は、すべてのクラスター間ペア間の平均距離として定義されます。ペア間の距離も定義する必要があり、たとえば、ユークリッド距離(または場合によっては相関距離)にすることができます。したがって、クラスター間の距離は、ペア間の距離を一般化する方法です。

xx


興味深い。次に、私の場合、クラスター{9、11}と{8、10}の間の相関距離をどのように計算しますか?
Waldir Leoncio 2014

2
0.25(d(9,8)+d(9,10)+d(11,8)+d(11,10))d(a,b)ab
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.