J'ai effectué un regroupement de points de coordonnées (longitude, latitude) et trouvé des résultats surprenants et négatifs à partir de critères de regroupement pour le nombre optimal de clusters. Les critères sont tirés du clusterCrit()
package. Les points que j'essaie de regrouper sur un graphique (les caractéristiques géographiques de l'ensemble de données sont clairement visibles):
La procédure complète était la suivante:
- Effectué un regroupement hiérarchique sur 10 000 points et économisé des médoïdes pour des clusters de 2: 150.
- A pris les médoïdes de (1) comme graines pour le regroupement des kmeans de 163k observations.
- Vérification de 6 critères de clustering différents pour le nombre optimal de clusters.
Seuls 2 critères de regroupement ont donné des résultats qui ont du sens pour moi - les critères Silhouette et Davies-Bouldin. Pour les deux, il faut rechercher le maximum sur l'intrigue. Il semble que les deux donnent la réponse «22 clusters est un bon nombre». Pour les graphiques ci-dessous: sur l'axe x est le nombre de clusters et sur l'axe y la valeur du critère, désolé pour les descriptions erronées sur l'image. Silhouette et Davies-Bouldin respectivement:
Examinons maintenant les valeurs de Calinski-Harabasz et Log_SS. Le maximum se trouve sur la parcelle. Le graphique indique que plus la valeur est élevée, meilleur est le regroupement. Une telle croissance régulière est assez surprenante, je pense que 150 clusters est déjà un nombre assez élevé. Ci-dessous les graphiques pour les valeurs de Calinski-Harabasz et Log_SS respectivement.
Maintenant, pour la partie la plus surprenante, les deux derniers critères. Pour le Ball-Hall, la plus grande différence entre deux regroupements est souhaitée et pour Ratkowsky-Lance le maximum. Parcelles de Ball-Hall et Ratkowsky-Lance respectivement:
Les deux derniers critères donnent des réponses complètement négatives (plus le nombre de grappes est petit, mieux c'est) que les 3e et 4e critères. Comment est-ce possible? Pour moi, il semble que seuls les deux premiers critères ont pu donner un sens au regroupement. Une largeur de silhouette d'environ 0,6 n'est pas si mauvaise. Dois-je simplement sauter les indicateurs qui donnent des réponses étranges et croire en ceux qui donnent des réponses raisonnables?
Edit: Tracer pour 22 clusters
Éditer
Vous pouvez voir que les données sont assez bien regroupées en 22 groupes, donc les critères indiquant que vous devez choisir 2 clusters semblent avoir des faiblesses, l'heuristique ne fonctionne pas correctement. C'est ok quand je peux tracer les données ou quand les données peuvent être emballées dans moins de 4 composants principaux puis tracées. Mais sinon? Comment choisir le nombre de clusters autrement qu'en utilisant un critère? J'ai vu des tests qui ont indiqué Calinski et Ratkowsky comme de très bons critères et ils donnent toujours des résultats défavorables pour un ensemble de données apparemment facile. Alors peut-être que la question ne devrait pas être "pourquoi les résultats diffèrent" mais "à quel point pouvons-nous faire confiance à ces critères?".
Pourquoi une métrique euclidienne n'est-elle pas bonne? Je ne suis pas vraiment intéressé par la distance réelle et exacte entre eux. Je comprends que la vraie distance est sphérique mais pour tous les points A, B, C, D si sphérique (A, B)> sphérique (C, D) que également euclidienne (A, B)> euclidienne (C, D) qui devrait être suffisant pour une métrique de clustering.
Pourquoi je veux regrouper ces points? Je veux construire un modèle prédictif et il y a beaucoup d'informations contenues dans l'emplacement de chaque observation. Pour chaque observation, j'ai également des villes et des régions. Mais il y a trop de villes différentes et je ne veux pas faire par exemple 5000 variables factorielles; j'ai donc pensé à les regrouper par coordonnées. Cela a plutôt bien fonctionné car les densités dans les différentes régions sont différentes et l'algorithme l'a trouvé, 22 variables de facteur seraient correctes. Je pourrais également juger de la qualité du regroupement par les résultats du modèle prédictif, mais je ne suis pas sûr que ce soit un calcul judicieux. Merci pour les nouveaux algorithmes, je vais certainement les essayer s'ils fonctionnent rapidement sur d'énormes ensembles de données.
la source
Réponses:
La question que vous devez vous poser est la suivante: que voulez-vous réaliser .
Tous ces critères ne sont que des heuristiques . Vous jugez le résultat d'une technique d'optimisation mathématique par une autre fonction mathématique. Cela ne mesure pas réellement si le résultat est bon , mais seulement si les données correspondent à certaines hypothèses.
Maintenant que vous avez un ensemble de données globales en distance euclidienne en latitude et longitude, ce n'est déjà pas un bon choix. Cependant, certains de ces critères et algorithmes (k-means…) nécessitent cette fonction de distance inappropriée.
Certaines choses que vous devriez essayer:
Jetez un œil, par exemple, à cette question / réponse connexe sur stackoverflow .
la source
La longitude et la latitude sont des angles qui définissent des points sur une sphère, vous devriez donc probablement regarder la distance du grand cercle ou d'autres distances géodésiques entre les points plutôt que la distance euclidienne.
De même, comme cela a été mentionné, certains algorithmes de clustering explicitement basés sur des modèles comme les modèles de mélange et implicitement basés sur des modèles comme K-means, font des hypothèses sur la forme et la taille des clusters. Dans cette situation, attendez-vous que vos données correspondent à un modèle sous-jacent? Sinon, des méthodes basées sur la densité qui ne font pas d'hypothèses sur la forme / taille des grappes pourraient être plus appropriées.
la source