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?
clustering
k-means
Jeremy
la source
la source
Réponses:
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.
la source
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.
la source
contingency tables and conditional means
C'est encore plus mystique. Que dois-je faire avec eux pour arriver "subjectivement" à un bon k?En règle générale, vous pouvez envisager:
la source
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")
la source