2017-07-25 6 views
0

Ich habe eine große Matrix von 500K Beobachtungen zu Cluster mit hierarchischen Clustering. Aufgrund der großen Größe habe ich nicht die Rechenleistung, um die Entfernungsmatrix zu berechnen.Gewichtete Beobachtung Frequenz Clustering mit hclust in R

Um dieses Problem zu lösen, habe ich mich entschieden, meine Matrix zu aggregieren, um jene Beobachtungen zusammenzuführen, die identisch waren, um meine Matrix auf ungefähr 10K Beobachtungen zu reduzieren. Ich habe die Häufigkeit für jede der Zeilen in dieser aggregierten Matrix. Ich muss diese Frequenz nun als Gewicht in mein hierarchisches Clustering integrieren.

Die Daten sind eine Mischung aus numerischen und kategorialen Variablen für die 500K Beobachtungen, also habe ich das Daisy-Paket verwendet, um die Unähnlichkeit der Blätter für meinen aggregierten Datensatz zu berechnen. Ich möchte hclust im stats-Paket für den aggregierten Datensatz verwenden, aber ich möchte die Häufigkeit jeder Beobachtung berücksichtigen. Von den Hilfeinformationen für hclust sind die Argumente wie folgt:

hclust(d, method = "complete", members = NULL) 

Die Informationen für das Argument Mitglieder :, NULL oder ein Vektor mit Länge Größe d. Siehe den Abschnitt "Details". Wenn Sie sich den Detailbereich ansehen, erhalten Sie: Wenn members != NULL, dann d als eine Unähnlichkeitsmatrix zwischen Clustern anstatt als Unähnlichkeiten zwischen Singletons und Mitgliedern betrachtet wird, ergibt sich die Anzahl der Beobachtungen pro Cluster. Auf diese Weise kann der hierarchische Clusteralgorithmus "in der Mitte des Dendrogramms" gestartet werden, z. B. um den Teil des Baums oberhalb eines Schnitts zu rekonstruieren (siehe Beispiele). Ungleichheiten zwischen Clustern können effizient berechnet werden (d. H. Ohne hclust selbst) nur für eine begrenzte Anzahl von Abstand/Verbindungs-Kombinationen, wobei die einfachste quadrierte euklidische Distanz und Schwerpunkt-Verknüpfung ist. In diesem Fall sind die Unähnlichkeiten zwischen den Clustern die quadrierten euklidischen Abstände zwischen Clustermitteln.

Von der obigen Beschreibung bin ich unsicher, ob ich meine Häufigkeitsgewichte den Mitgliedern Argumenten zuweisen kann, wie es nicht klar ist, ob dies der Zweck dieses Arguments ist. Ich mag es wie folgt verwenden:

hclust(d, method = "complete", members = df$freq) 

df$freq Wo die Frequenz jeder Zeile in der aggregierten Matrix ist. Also, wenn eine Zeile 10-mal dupliziert würde dieser Wert 10.

Wenn jemand kann mir helfen, das wäre toll,

Dank

Antwort

0

Ja, dies sollte für die meisten Verbindungen funktionieren, insbesondere Einzel , Gruppendurchschnitt und vollständige Verknüpfung. Für Station usw. müssen Sie die Gewichte selbst korrekt berücksichtigen.

Aber auch dieser Teil ist nicht schwer. Stellen Sie nur sicher, dass Sie die Clustergrößen verwenden, da Sie die Entfernung von zwei Clustern und nicht von zwei Punkten überschreiten müssen. Daher sollte die Matrix den Abstand von n1 Punkten an der Stelle x und n2 Punkten an der Stelle y enthalten. Für min/max/mean verschwindet oder verschwindet n. Für die Station sollten Sie eine SSQ-ähnliche Formel bekommen.

+0

Hallo, Vielen Dank für Ihren Kommentar. Ich bin nicht ganz sicher, was Sie mit Ihrem letzten Absatz meinen. Könntest du das ein wenig erweitern? Die Entfernungsmatrix, die ich habe, wird nur eindeutige Beobachtungen enthalten, da ich den ursprünglichen Datensatz aggregiert habe, aber das Elementargument enthält für jede Beobachtung, wie oft es im ursprünglichen Datensatz aufgetreten ist. Da ich Datentypen für meine Variablen gemischt habe, kann ich nur die Unähnlichkeit des Gower berechnen, so dass ich die Station-Verknüpfung nicht verwenden kann, aber es ist gut zu wissen, also danke! –

+0

Ich habe die Mündungsgleichungen nicht zur Hand, also musst du diese triviale Kalkulation selbst machen. Wahrscheinlich "n * m * d * d". –