Interpretation der Dendrogrammhöhe für die Clusterbildung durch Korrelation

8

Angesichts des folgenden Datenrahmens:

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))

So dass

> 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

Ich möchte diese 12 Personen anhand hierarchischer Cluster und anhand der Korrelation als Abstandsmaß gruppieren. Das habe ich also getan:

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

Und das ist die Handlung von clus:

Dendogramm

Dies dfist tatsächlich einer von 69 Fällen, für die ich eine Clusteranalyse durchführe. Um einen Grenzwert zu erhalten, habe ich mir mehrere Dendogramme angesehen und mit dem hParameter herumgespielt, cutreebis ich mit einem Ergebnis zufrieden war, das in den meisten Fällen sinnvoll war. Diese Nummer war k = .5. Das ist also die Gruppierung, mit der wir später gelandet sind:

> 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

In diesem Fall habe ich jedoch Probleme, den Grenzwert .5 zu interpretieren. Ich habe mich im Internet umgesehen, einschließlich der Hilfeseiten ?hcluster, ?hclustund ?cutree, aber ohne Erfolg. Am weitesten bin ich gekommen, um den Prozess zu verstehen:

Zuerst schaue ich mir an, wie die Zusammenführung durchgeführt wurde:

> 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

Das heißt, alles begann mit dem Verbinden der Beobachtungen 9 und 11, dann mit den Beobachtungen 8 und 10, dann mit den Schritten 1 und 2 (dh dem Verbinden von 9, 11, 8 und 10) usw. Das Lesen des mergeWerts von hclusterhilft, die obige Matrix zu verstehen.

Jetzt schaue ich mir die Höhe jedes Schritts an:

> 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

Dies bedeutet, dass das Clustering erst im letzten Schritt gestoppt wurde, als die Höhe schließlich über 0,5 stieg (wie das Dendogramm bereits gezeigt hatte, übrigens).

Hier ist meine Frage: Wie interpretiere ich die Höhen? Ist es der "Rest des Korrelationskoeffizienten" (bitte keinen Herzinfarkt haben)? Ich kann die Höhe des ersten Schritts (Zusammenfügen der Beobachtungen 9 und 11) folgendermaßen reproduzieren:

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

Und auch für den folgenden Schritt, der die Beobachtungen 8 und 10 verbindet:

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

Aber der nächste Schritt besteht darin, diese 4 Beobachtungen zu verbinden, und ich weiß nicht:

  1. Die korrekte Berechnung der Höhe dieses Schritts
  2. Was jede dieser Höhen tatsächlich bedeutet.
Waldir Leoncio
quelle
1
Möglicherweise können Sie einige Informationen aus meiner Antwort hier abrufen : Ermitteln ähnlicher Benutzer aus hierarchischem Clustering .
Gung - Reinstate Monica

Antworten:

5

Denken Sie daran, dass Sie beim hierarchischen Clustering eine Abstandsmetrik zwischen Clustern definieren müssen. Beispielsweise wird beim hierarchischen durchschnittlichen Verknüpfungsclustering (wahrscheinlich die beliebteste Option) der Abstand zwischen Clustern als der durchschnittliche Abstand zwischen allen Interclusterpaaren definiert. Der Abstand zwischen Paaren muss ebenfalls definiert werden und kann beispielsweise der euklidische Abstand (oder in Ihrem Fall der Korrelationsabstand) sein. Der Abstand zwischen Clustern ist also eine Möglichkeit, den Abstand zwischen Paaren zu verallgemeinern.

Im Dendrogramm ist die y-Achse einfach der Wert dieser Abstandsmetrik zwischen Clustern. Wenn Sie beispielsweise zwei Cluster sehen, die auf einer Höhe , bedeutet dies, dass der Abstand zwischen diesen Clustern betrug .xx

Bitweise
quelle
Faszinierend. Wie würde ich dann in meinem Fall den Korrelationsabstand zwischen den Clustern {9, 11} und {8, 10} berechnen?
Waldir Leoncio
2
Wenn Sie eine durchschnittliche Verknüpfung verwenden, wäre dies , wobei ist der Abstand (Korrelationsabstand) zwischen den Instanzen und . 0.25(d(9,8)+d(9,10)+d(11,8)+d(11,10))d(a,b)ab
Bitwise