Ich bin derzeit in Hierarchie in den Themen der Dokumente. Als ersten Schritt finde ich eine Vektordarstellung meiner Dokumente, nach denen ich hierarchisches Clustering verwende, um zu bestimmen, ob es Themen in den Themen des Dokuments gibt. Ich möchte nur (verschachtelte) Cluster betrachten, die mindestens 2% Originaldaten enthalten. Um dies zu erreichen, verwende ich R.Erhalten von Cluster-Hierarchie und geschachtelten Cluster-Zuweisungen
Jetzt habe ich Probleme mit der effizienten Extraktion der Cluster-Hierarchie aus den Clustering-Ergebnissen. Das Clustering erfolgt mit dem Paket "fastcluster", das ähnliche Ergebnisse liefert wie die ursprüngliche Funktion "hclust".
Für meine endgültige Ausgabe sollte etwa so aussehen; es wird
Cluster Zuordnungen zwei Tabellen sein:
docID , ClusterLabel
1, A
2, A
3, B
4, B
5, B
3, C
4, D
5, C
...
Cluster Hierarchie:
Parent, Child
B, C
B, D
...
Wie Sie sehen können, die Beobachtungen 3,4 und 5 mehrfach in der Cluster-Zuordnungstabelle auftreten, wobei einer der Cluster ein Subcluster seines übergeordneten Clusters ist. Dies kann in der Hierarchie-Tabelle gesehen werden.
Mein aktueller Ansatz ist, dass ich die ctree.endogram-Funktion aus dem "Dendedend" -Paket zu verwenden, um die Cluster-Zuweisung für ein Raster von Werten von k zu finden, und dann die Cluster-Hierarchie und Zuordnungen aus der Ausgabe abzuleiten. Dieser Ansatz ist jedoch sehr naiv und wird für eine große Anzahl von Beobachtungen und Clustern sehr langsam.
Vorschläge, wie man dieses Problem effizient angehen kann, vorzugsweise mit einigen leicht verfügbaren Paketen, würde sehr geschätzt werden.
EDIT: Betrachten wir das folgende Beispiel, auf die Probenausgabedaten entsprechen:
data <- matrix(data = c(1,2,3,4,5,1,3,5,9,10), nrow = 5, ncol = 2)
plot(data)
hc<- hclust(dist(data))
plot(hc)
Wenn wir den Baum in der Höhe 6 schneiden würde, wir 2 Clustern erhalten würde, genannt A und B in der Ausgabe. Sollten wir jedoch den Baum in der Höhe 4 schneiden, hätten wir 3 Cluster mit den Namen A, C und D in der Ausgabe. Zum Beispiel befindet sich die Beobachtung mit docID 3 entweder in Cluster B oder in Cluster C (abhängig von der Höhe, in der wir den Baum schneiden), was den zwei Einträgen in der Beispielausgabe-Clusterzuweisung entspricht. Der Cluster B ist in die beiden Cluster C und D aufgeteilt, die in der Cluster-Hierachy-Ausgabe zu sehen sind.
Jetzt ist mein Ziel, die vollständige Liste der Cluster-Zuweisung und Hierarchien zu erhalten, das Dendrogramm herunter zu bewegen. (vorzugsweise zu stoppen, wenn die Anzahl der Beobachtungen in einem (Sub) Cluster weniger als eine bestimmte Anzahl von Beobachtungen erreicht)
Bis jetzt habe ich es versäumt, eine vernünftige und effiziente Methode zu entwickeln, hoffentlich könnte mir jemand eine Idee.
Hallo @ Bartdp1, könnten Sie bitte Ihre Frage mit einem eigenständigen reproduzierbaren Beispiel aktualisieren? –
@TalGalili Ich aktualisierte die Frage, danke für einen Blick – BDP1