Affectation d'étiquettes de classe aux clusters k-means

10

J'ai une question très basique sur le clustering. Après avoir trouvé k clusters avec leurs centroïdes, comment dois-je procéder pour interpréter les classes des points de données que j'ai groupés (en attribuant des étiquettes de classe significatives à chaque cluster). Je ne parle pas de validation des clusters trouvés.

Peut-on le faire en fonction d'un petit ensemble de points de données étiquetés, calculer à quel cluster ces points étiquetés appartiennent et en fonction du type et du nombre de points que chaque cluster reçoit, décider de l'étiquette? Cela semble assez évident, mais je ne sais pas comment il est standard d'attribuer des étiquettes aux clusters de cette façon.

Pour être clair, je veux effectuer un clustering non supervisé qui n'utilise aucune étiquette pour trouver d'abord mes clusters. Après avoir trouvé les clusters, je veux attribuer des étiquettes de classe significatives aux clusters en fonction des propriétés de quelques exemples de points de données.

Riyaz
la source
Je ne suis pas sûr de comprendre votre question: généralement, tout algorithme k-means devrait renvoyer des informations sur l'appartenance à la classe pour chaque point de données. Parlez-vous de points de données réels ou de nouvelles observations?
chl
@chi Je soupçonne que Riyaz est préoccupé de trouver des noms avec lesquels étiqueter les clusters et parle a priori de nommer certains des points, puis d'utiliser un algorithme qui considère la prépondérance des points nommés dans les clusters pour ensuite nommer ces clusters.
Glen_b -Reinstate Monica
2
@Riyaz, pourrions-nous utiliser l'analogie suivante avec l'analyse factorielle pour comprendre votre question? Souvent, quelqu'un factorisera l'analyse d'un ensemble de variables pour les regrouper en groupes de variables qui semblent `` se tenir ensemble '', mais ensuite l'analyste doit réfléchir à la nature des variables qui composent chaque cluster pour arriver avec un nom pour / façon de penser à ce que chaque groupe (facteur) est . Est-ce essentiellement ce que vous voulez dire ici?
gung - Réintégrer Monica

Réponses:

4

Oui. Ce que vous proposez est entièrement standard et c'est la façon dont le logiciel k-means standard fonctionne automatiquement. Dans le cas de k-moyennes, vous calculez la distance euclidienne entre chaque observation (point de données) et la moyenne de chaque cluster (centroïde) et affectez les observations au cluster le plus similaire. Ensuite, l'étiquette de la grappe est déterminée en examinant les caractéristiques moyennes des observations classées dans la grappe par rapport aux moyennes de celles relatives aux autres grappes.

Tim
la source
3

Si vous regardez les noms dans votre objet kmeans, vous remarquerez qu'il existe un objet "cluster". Il contient les étiquettes de classe ordonnées de la même manière que vos données d'entrée. Voici un exemple simple qui lie les étiquettes de cluster à vos données.

x <- data.frame(X=rnorm(100, sd=0.3), Y=rnorm(100, mean=1, sd=0.3))

k <- kmeans(x, 2) 
names(k)
x <- data.frame(x, K=k$cluster)

# You can also directly return the clusters
x <- data.frame(x, K=kmeans(x, 2)$cluster)
Jeffrey Evans
la source
0

Les étiquettes du cluster peuvent être basées sur la classe d'échantillons majoritaires au sein d'un cluster. Mais cela n'est vrai que si le nombre de clusters est égal au nombre de classes.

user101780
la source