Que faites-vous quand il n'y a pas de point de coude pour le regroupement de kmeans

13

J'ai appris que lors du choix d'un certain nombre de clusters, vous devez rechercher un point de coude pour différentes valeurs de K. J'ai tracé les valeurs de withinss pour des valeurs de k de 1 à 10, mais je ne vois pas de claire coude. Que faites-vous dans un cas comme celui-ci?

KMeans gênants

Jeremy
la source
2
Il existe de nombreux critères de regroupement, la règle du "coude SS" étant une seule et non la meilleure. Essayez-en d'autres. Il est également probable que vous n'ayez pas de clusters dans vos données.
ttnphns du
@ttnphns Quel est cet autre mystique dont vous parlez? Comment ne pas avoir de clusters dans mes données? Comment puis-je savoir?
Glen

Réponses:

7

Mauvaise méthode?

Vous utilisez peut-être le mauvais algorithme pour votre problème.

Mauvais prétraitement?

K-means est très sensible au prétraitement. Si un attribut est à une échelle beaucoup plus grande que les autres, il dominera la sortie. Votre sortie sera alors effectivement unidimensionnelle

Visualisez les résultats

Quoi que vous fassiez, vous devez valider vos résultats par autre chose que de commencer à un nombre tel que SSQ. Envisagez plutôt la visualisation .

La visualisation peut également vous indiquer qu'il n'y a peut - être qu'un seul cluster dans vos données.

A QUIT - Anony-Mousse
la source
Quelles sont les bonnes options de visualisation pour les données multidimensionnelles?
Jeremy
1
Cela dépend de vos données. Certaines données peuvent être bien projetées, car leur dimensionnalité intrinsèque est beaucoup plus faible. Les séries chronologiques peuvent facilement être tracées, et si vos données sont une image sérialisée, les visualiser sous forme d'images? Quoi qu'il en soit, la visualisation dépend de vos données, il n'y aura jamais de solution unique.
A QUIT - Anony-Mousse
3

Une façon consiste à inspecter manuellement les membres de vos grappes pour un k spécifique pour voir si les regroupements ont du sens (sont-ils distinguables?). Cela peut être fait via des tables de contingence et des moyens conditionnels. Faites cela pour une variété de k et vous pouvez déterminer quelle valeur est appropriée.

Une manière moins subjective consiste à utiliser la valeur Silhouette:

/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function

Cela peut être calculé avec votre progiciel préféré. Depuis le lien:

Cette méthode compare simplement la similitude intra-groupe à la similitude du groupe le plus proche. Si la distance moyenne d'un membre de données aux autres membres du même cluster est supérieure à la distance moyenne à certains autres membres du cluster, cette valeur est négative et le clustering échoue. D'un autre côté, des valeurs de silhuette proches de 1 indiquent une opération de clustering réussie. 0,5 n'est pas une mesure exacte du clustering.

Glen
la source
Glen, je pense personnellement que votre réponse est incomplète. Le 1er paragraphe ne semble pas clair. Qu'est-ce que cette "inspection manuelle", pouvez-vous décrire la procédure s'il vous plaît? Alors, Silhouette est "moins subjective" que quoi ? Et pourquoi?
ttnphns
@ttnphns réponse mise à jour.
Glen
contingency tables and conditional meansC'est encore plus mystique. Que dois-je faire avec eux pour arriver "subjectivement" à un bon k?
ttnphns
@ttnphns Si l'affiche a une question à ce sujet, je ferai un suivi. Comme je l'ai dit, vous devriez vérifier si les regroupements se distinguent. Cela me semble clair.
Glen
Donc, si j'obtiens des valeurs de silhouette faibles (~ 0,35), cela pourrait indiquer que ces données n'ont pas vraiment de bons clusters?
Jeremy
0
  • Aucun coude pour K-means ne signifie pas qu'il n'y a pas de grappes dans les données;
  • Aucun coude signifie que l'algorithme utilisé ne peut pas séparer les clusters; (pensez à K-moyennes pour les cercles concentriques, vs DBSCAN)

En règle générale, vous pouvez envisager:

  • régler votre algorithme;
  • utiliser un autre algorithme;
  • faire le prétraitement des données.
Danylo Zherebetskyy
la source
-1

Nous pouvons utiliser le package NbClust pour trouver la valeur la plus optimale de k. Il fournit 30 indices pour déterminer le nombre de grappes et propose le meilleur résultat.

NbClust (data = df, distance = "euclidean", min.nc = 2, max.nc = 15, method = "kmeans", index = "all")

Sajal Rastogi
la source
Bienvenue sur le site! Pourriez-vous développer cette réponse? Bien qu'utile, un peu plus de détails le rendrait plus utile.
mkt