Je suis actuellement en train d'examiner la hiérarchie dans les rubriques de documents. Dans un premier temps, je trouve une représentation vectorielle de mes documents, après quoi j'utilise la classification hiérarchique pour déterminer s'il y a des sujets dans les rubriques du document. Je veux seulement considérer les groupes (imbriqués) qui contiennent au moins 2% de données originales. Pour ce faire, j'utilise R.Obtention de hiérarchie de clusters et d'affectations de clusters imbriqués
Maintenant, je suis aux prises avec l'extraction efficace de la hiérarchie de cluster à partir des résultats de la mise en cluster. Le regroupement est effectué avec le package "fastcluster", qui fournit des résultats similaires à la fonction "hclust" d'origine.
Pour ma sortie finale devrait ressembler à quelque chose comme ceci; il y aura deux tables
Affectations de cluster:
docID , ClusterLabel
1, A
2, A
3, B
4, B
5, B
3, C
4, D
5, C
...
Cluster Hiérarchie:
Parent, Child
B, C
B, D
...
Comme vous pouvez le voir, les observations 3,4 et 5 se produisent plusieurs fois dans le tableau d'affectation de cluster, où l'un des clusters est un sous-cluster de son cluster parent. Cela peut être vu dans le tableau Hiérarchie. Mon approche actuelle consiste à utiliser la fonction cutree.dendogram du package "Dendextend" pour trouver l'affectation de cluster pour une grille de valeurs de k, puis déduire la hiérarchie de cluster et les affectations de la sortie. Cependant, cette approche est très naïve et devient terriblement lente pour un grand nombre d'observations et de groupes.
Des suggestions sur la façon d'aborder ce problème de manière efficace, de préférence en utilisant certains paquets facilement disponibles seraient grandement appréciées.
EDIT: Prenons l'exemple suivant, correspondant aux données de sortie de l'échantillon:
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)
Si nous couper l'arbre à la hauteur 6, on obtiendrait 2 groupes, nommés A et B dans la sortie. Cependant, si nous devions couper l'arbre à la hauteur 4, nous aurions 3 groupes, nommés A, C et D dans la sortie. Par exemple, l'observation avec docID 3 se trouve soit dans le cluster B, soit dans le cluster C (en fonction de la hauteur de coupe de l'arborescence), ce qui correspond aux deux entrées de l'affectation du cluster de sortie de l'exemple. Le cluster B est divisé dans les deux groupes C et D, visibles dans la sortie Hierachy du cluster.
Maintenant, mon objectif est d'obtenir la liste complète des assignations de grappes et des hiérarchies, en descendant le dendrogramme. (Arrêter de préférence lorsque la quantité d'observations dans un (sous-) groupe obtient moins qu'un certain nombre d'observations)
Jusqu'à présent, je n'ai pas réussi à trouver une méthode efficace raisonnable pour ce faire, j'espère que tout le monde pourrait me fournir un idée.
Salut @ Bartdp1, pourriez-vous s'il vous plaît mettre à jour votre question avec un exemple reproductible autonome? –
@TalGalili J'ai mis à jour la question, merci de jeter un oeil – BDP1