J'ai une table de base de données de transferts de données entre différents nœuds. Il s'agit d'une énorme base de données (avec près de 40 millions de transferts). L'un des attributs est le nombre de transferts d'octets (nbytes) qui vont de 0 octet à 2 tera octets. Je voudrais regrouper les nbytes de telle sorte que, étant donné k clusters, certains transferts x1 appartiennent à k1 cluster, x2 transfters à k2 etc.
D'après la terminologie que j'ai utilisée, vous auriez pu deviner ce que j'allais faire: K-means. Il s'agit de données 1d car nbytes est la seule fonctionnalité qui m'importe. Lorsque je cherchais des méthodes différentes pour cela, j'ai vu que l'EM a été mentionné à quelques reprises avec une approche sans clustering. Je voudrais connaître votre point de vue sur la façon d'aborder ce problème (en particulier s'il faut regrouper ou non en cluster).
Merci!
la source
Réponses:
Dans les données unidimensionnelles, n'utilisez pas l'analyse de cluster.
L'analyse en grappes est généralement une technique multivariée. Ou permettez-moi de le dire autrement: pour les données unidimensionnelles - qui sont complètement ordonnées - il existe de bien meilleures techniques. L'utilisation de k-means et de techniques similaires ici est un gaspillage total, à moins que vous ne fassiez suffisamment d'efforts pour les optimiser réellement pour le cas 1-d.
Juste pour vous donner un exemple: pour k-signifie qu'il est courant d'utiliser k objets aléatoires comme graines initiales. Pour les données unidimensionnelles, il est assez facile de faire mieux en utilisant simplement les quantiles appropriés (1 / 2k, 3 / 2k, 5 / 2k, etc.), après avoir trié les données une fois , puis optimisé à partir de ce point de départ. Cependant, les données 2D ne peuvent pas être triées complètement. Et dans une grille, il y aura probablement des cellules vides.
Je ne l'appellerais pas non plus cluster. Je l'appellerais intervalle . Ce que vous voulez vraiment faire, c'est optimiser les bordures d'intervalle. Si vous faites k-means, il testera pour chaque objet s'il doit être déplacé vers un autre cluster. Cela n'a pas de sens dans 1D: seuls les objets aux limites d'intervalle doivent être vérifiés. C'est évidemment beaucoup plus rapide, car il n'y a que ~ 2k objets là-bas. S'ils ne préfèrent pas déjà d'autres intervalles, les objets plus centraux ne le seront pas non plus.
Vous voudrez peut-être examiner des techniques telles que l' optimisation Jenks Natural Breaks , par exemple.
Ou vous pouvez faire une estimation de la densité du noyau et rechercher des minima locaux de la densité à y répartir. La bonne chose est que vous n'avez pas besoin de spécifier k pour cela!
PS, veuillez utiliser la fonction de recherche. Voici quelques questions sur le clustering de données 1-D que vous avez manquées:
la source
Votre question est-elle de savoir si vous devez regrouper ou quelle méthode utiliser pour regrouper?
Pour savoir si vous devez mettre en cluster, cela dépend si vous voulez partitionner automatiquement vos données (par exemple si vous voulez répéter ce partitionnement plusieurs fois). Si vous ne faites cela qu'une seule fois, vous pouvez simplement regarder l'histogramme de la distribution de vos valeurs, et le partitionner à l'œil, comme proposé dans les commentaires. Je recommanderais quand même de regarder les données à l'œil nu, car cela pourrait vous aider à déterminer le nombre de clusters que vous souhaitez et également si le clustering "a fonctionné".
En ce qui concerne le type de clustering, k-means devrait convenir s'il y a de "vrais" clusters dans les données. Si vous ne voyez aucun cluster dans l'histogramme, cela n'a pas beaucoup de sens de le regrouper de toute façon, car tout partitionnement de votre plage de données donnera des clusters valides (ou dans le cas de l'initiation aléatoire de kmeans, vous obtiendrez différents clusters chaque course).
la source
Tu peux essayer:
KMeans, GMM ou d'autres méthodes en spécifiant n_clusters = no. des pics dans le graphique de densité du noyau.
KMeans, GMM ou d'autres méthodes en déterminant le n ° optimal. de clusters basés sur certaines métriques. Plus d'informations: [ici] https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set
la source