Où couper un dendrogramme?

61

La classification hiérarchique peut être représentée par un dendrogramme. Couper un dendrogramme à un certain niveau donne un ensemble de grappes. La coupe à un autre niveau donne un autre ensemble de grappes. Comment choisiriez-vous où couper le dendrogramme? Y at-il quelque chose que nous pourrions considérer comme un point optimal? Si je regarde un dendrogramme au fil du temps à mesure qu'il change, dois-je couper au même point?

Eduardas
la source
Je me suis également interrogé sur ce problème, mais (malheureusement) je n'ai pas encore trouvé de réponse convaincante. Je pense qu'il n'y a pas de solution. Il existe des packages R / BioC comme hopack(et d'autres) qui peuvent estimer le nombre de clusters, mais cela ne répond pas à votre question.
suncoolsu
Le pvclustpaquet pour Rcontient des fonctions qui donnent des valeurs p amorcées pour les clusters de dendrogrammes, ce qui vous permet d'identifier des groupes: is.titech.ac.jp/~shimo/prog/pvclust
Ben
Un site utile avec quelques exemples sur la façon de le faire dans la pratique: versdatascience.com/…
Mikko

Réponses:

46

Il n'y a pas de réponse définitive, l'analyse par grappes étant essentiellement une approche exploratoire. l'interprétation de la structure hiérarchique résultante dépend du contexte et souvent, plusieurs solutions sont tout aussi valables d'un point de vue théorique.

Plusieurs indices ont été donnés dans une question connexe, Quels critères d'arrêt pour la classification hiérarchique par agglomération sont utilisés dans la pratique? J'utilise généralement des critères visuels, par exemple des tracés de silhouette, et certains types de critères numériques, tels que l'indice de validité de Dunn, le gamma d'Hubert, le coefficient G2 / G3 ou l'indice de Rand corrigé. Fondamentalement, nous souhaitons savoir dans quelle mesure la matrice de distance originale est approchée dans l’espace des grappes. Une mesure de la corrélation cophénétique est également utile. J'utilise également k-moyennes, avec plusieurs valeurs de départ, et la statistique d'écart ( miroir ) pour déterminer le nombre de grappes qui réduisent au minimum l'intérieur-SS. La concordance avec la classification hiérarchique de Ward donne une idée de la stabilité de la solution de classification (vous pouvez utilisermatchClasses()dans le package e1071 pour cela).

Vous trouverez des ressources utiles dans le CRAN Tâche Voir Cluster , y compris pvclust , fpc , CLV , entre autres. Le package clValid ( décrit dans le Journal of Statistical Software ) vaut également la peine d’être essayé .

Maintenant, si vos grappes changent avec le temps, cela devient un peu plus compliqué. pourquoi choisir la première solution de cluster plutôt qu'une autre? Vous attendez-vous à ce que certaines personnes passent d'une grappe à une autre à la suite d'un processus sous-jacent évoluant avec le temps?

Certaines mesures tentent de faire correspondre les grappes ayant un chevauchement absolu ou relatif maximal, comme cela vous a été suggéré dans la question précédente. Regardez Comparaison des regroupements - Un aperçu de Wagner et Wagner.

chl
la source
12

Il n'y a pas vraiment de réponse. C'est quelque part entre 1 et N.

Cependant, vous pouvez y penser dans une perspective de profit.

Par exemple, dans le marketing, on utilise la segmentation, ce qui ressemble beaucoup à la mise en cluster.

Un message (une publicité ou une lettre, par exemple) adapté à chaque individu aura le taux de réponse le plus élevé. Un message générique adapté à la moyenne aura le taux de réponse le plus bas. Avoir trois messages adaptés à trois segments se situent quelque part entre les deux. C'est le côté des revenus.

Un message adapté à chaque individu aura le coût le plus élevé. Un message générique adapté à la moyenne aura le coût le plus bas. Trois messages adaptés à trois segments seront quelque part entre les deux.

Dire que payer un rédacteur pour écrire un message personnalisé coûte 1 000 $, deux autres 2 000 $, etc.

Supposons qu’en utilisant un seul message, votre chiffre d’affaires sera de 5 000. Si vous segmentez vos clients en deux segments et rédigez des messages personnalisés pour chaque segment, votre taux de réponse sera plus élevé. Disons que les revenus sont maintenant de 7500. Avec trois segments, un taux de réponse légèrement supérieur et vos revenus sont de 9000. Un segment de plus, et vous êtes à 9500.

Pour maximiser les profits, continuez de segmenter jusqu'à ce que le revenu marginal de la segmentation soit égal au coût marginal de la segmentation. Dans cet exemple, vous utiliseriez trois segments pour maximiser vos profits.

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500
Neil McGuigan
la source
C'est une perspective intéressante!
AndyF
5

L’une des méthodes les plus simples serait peut-être une représentation graphique dans laquelle l’axe des abscisses est le nombre de groupes et l’axe des ordonnées une métrique d’évaluation telle que la distance ou la similarité. Dans ce graphique, vous pouvez généralement observer deux régions différenciées: la valeur de l'axe des abscisses au niveau du "coude" de la ligne, le nombre "optimal" de grappes.

Certaines statistiques pourraient également servir à cette tâche: les critères gamma, pseudo-t², pseudo-F ou de classification cubique (CCC) de Hubert, entre autres.

Manuel Ramón
la source
Je suis d'accord avec chl. Les analyses en grappes sont des approches exploratoires et l'interprétation des résultats, dans ce cas particulier, le nombre optimal de grappes, dépend de votre contexte. Par exemple, dans mon travail, il est courant d’utiliser des analyses de grappes pour classifier les individus en fonction de plusieurs caractéristiques et parfois le nombre de grappes est prédéfini. Dans ce cas, notre objectif est de trouver l'ensemble des variables classificatoires qui distinguent le mieux les individus appartenant à différentes grappes.
Manuel Ramón
3

Dans la classification hiérarchique, le nombre de partitions de sortie ne correspond pas uniquement aux coupes horizontales, mais également aux coupes non horizontales qui déterminent la classification finale. Cela peut donc être considéré comme un troisième critère, mis à part la métrique 1. distance et le critère 2. Lien . http://en.wikipedia.org/wiki/Hierarchical_clustering

Le critère que vous avez mentionné est un troisième type, qui est une sorte de contrainte d’optimisation de l’ensemble des partitions de la hiérarchie. Ceci est officiellement présenté dans cet article et des exemples de segmentation sont donnés!

http://www.esiee.fr/~kiranr/ClimbingECCV2012_Preprint.pdf

Ravi Kiran
la source
1

Comme l’ont dit les autres réponses, le sujet est définitivement subjectif et dépend du type de granularité que vous souhaitez étudier. Pour une approche générale, j'ai coupé celui-ci pour me donner 2 groupes et 1 valeur aberrante. Je me concentrerais ensuite sur les deux groupes pour voir s’il y avait quelque chose d’important entre eux.

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too

%matplotlib inline

# Dataset
A_data = load_diabetes().data
DF_diabetes = pd.DataFrame(A_data, columns = ["attr_%d" % j for j in range(A_data.shape[1])])

# Absolute value of correlation matrix, then subtract from 1 for disimilarity
DF_dism = 1 - np.abs(DF_diabetes.corr())

# Compute average linkage
A_dist = distance.squareform(DF_dism.as_matrix())
Z = linkage(A_dist,method="average")

# Dendrogram
D = dendrogram(Z=Z, labels=DF_dism.index, color_threshold=0.7, leaf_font_size=12, leaf_rotation=45)

entrez la description de l'image ici

O.rka
la source