1

Je voudrais choisir un nombre optimal de clusters pour mon ensemble de données en utilisant le score silhouette. Mon ensemble de données contient des informations sur plus de 2 000 marques, y compris le nombre de clients ayant acheté cette marque, les ventes de la marque et le nombre de produits vendus par la marque dans chaque catégorie.Différents scores de silhouette pour les mêmes données et le même nombre de clusters

Étant donné que mon ensemble de données est assez clairsemée, j'ai utilisé MaxAbsScaler et TruncatedSVD avant le clustering.

La méthode de regroupement que j'utilise est k-means car je suis le plus familier avec celui-ci (j'apprécierais votre suggestion sur d'autres méthodes de classification).

Lorsque j'ai défini le numéro de cluster sur 80 et que j'ai exécuté k-means, j'ai obtenu un score silhouette différent à chaque fois. Est-ce parce que k-means donne des groupes différents à chaque fois? Parfois, le score silhouette pour un nombre de cluster de 80 est inférieur à 200 et parfois c'est le contraire. Donc, je suis confus sur la façon de choisir un nombre raisonnable de grappes. En outre, la portée de mon score de silhouette est assez petite et ne change pas beaucoup car j'augmente le nombre de clusters, qui va de 0,15 à 0,2.

Voici le résultat que je suis arrivé de courir score Silhouette:

For n_clusters=80, The Silhouette Coefficient is 0.17329035592930178 
For n_clusters=100, The Silhouette Coefficient is 0.16970208098407866 
For n_clusters=200, The Silhouette Coefficient is 0.1961679920561574 
For n_clusters=300, The Silhouette Coefficient is 0.19367019831221857 
For n_clusters=400, The Silhouette Coefficient is 0.19818865972762675 
For n_clusters=500, The Silhouette Coefficient is 0.19551544844885604 
For n_clusters=600, The Silhouette Coefficient is 0.19611760638136203 

je serais reconnaissant de bien vouloir vos suggestions! Merci d'avance!

Répondre

1

Oui, k-means est randomisé, donc il ne donne pas toujours le même résultat.

Habituellement, cela signifie que k n'est pas bon.

Mais ne comptez pas aveuglément sur la silhouette. Ce n'est pas assez fiable pour trouver le "meilleur" k. Largement, parce que il n'y a généralement pas de meilleur k du tout.

Regardez les données et utilisez votre compréhension pour choisir un bon cluster plutôt. Ne vous attendez pas à quelque chose de bon à sortir automatiquement.

0

Je pense que vous utilisez sklearn, donc en réglant le paramètre random_state sur un nombre, vous devriez avoir des résultats reproductibles pour différentes exécutions de k-means pour le même k. Vous pouvez définir ce nombre à 0, 42 ou tout ce que vous voulez juste garder le même nombre pour différentes exécutions de votre code et les résultats seront les mêmes.