Regroupement de données 1D

16

J'ai un ensemble de données, je veux créer des clusters sur ces données en fonction d'une seule variable (il n'y a pas de valeurs manquantes). Je veux créer 3 clusters basés sur cette variable.

Quel algorithme de clustering utiliser, k-means, EM, DBSCAN etc.?

Ma question principale est, dans quelles circonstances dois-je utiliser k-means sur EM ou EM over k-means?

Ali
la source
1
L'algorithme EM est un outil général pour faire une estimation du maximum de vraisemblance avec des données manquantes - pouvez-vous être plus précis sur la façon dont il s'agit d'un «algorithme de clustering»?
Macro du
J'utilise weka comme outil, et sous algorithme de clustering, EM est répertorié comme un algorithme. Je suis désolé pour une question boiteuse, je suis nouveau dans l'exploration de données.
Ali
Je sais que l'algorithme EM est utilisé pour faire une estimation du maximum de vraisemblance pour les modèles de variables latentes (qui peuvent être considérés comme des «données manquantes») et les variables latentes sont souvent utilisées pour modéliser le clustering. C'est peut-être ce que l'on veut dire.
Macro du
@macro: vous voudrez peut-être jeter un œil ici: stat.washington.edu/mclust pour commencer.
user603
3
Quel est le but du clustering? Comme pour la plupart des questions statistiques, les réponses sont multiples et la connaissance de l'objectif est un guide essentiel pour sélectionner les bonnes ou les bonnes.
whuber

Réponses:

11

L'algorithme K-means et l'algorithme EM vont être assez similaires pour le clustering 1D.

Dans K-means, vous commencez par deviner où se trouvent les moyennes et affectez chaque point au cluster avec la moyenne la plus proche, puis vous recalculez les moyennes (et les variances) en fonction des attributions actuelles de points, puis mettez à jour l'assignation des points, puis mettez à jour les moyens ...

Dans EM, vous commencez également par deviner où se trouvent les moyennes, puis vous calculez la valeur attendue des affectations (essentiellement la probabilité que chaque point se trouve dans chaque cluster), puis vous mettez à jour les moyennes estimées (et les variances) en utilisant les valeurs attendues comme poids, puis calculez les nouvelles valeurs attendues, puis calculez les nouveaux moyens, ...

La principale différence est que l'attribution des points aux grappes dans les moyennes K est un tout ou rien, où EM donne des proportions / probabilité d'appartenance à un groupe (un point peut être considéré comme ayant une probabilité de 80% d'être dans le groupe A, une probabilité de 18% d'être dans le groupe B, et 2% de probabilité d'être dans le groupe C). S'il y a beaucoup de séparation entre les groupes, les 2 méthodes vont donner des résultats assez similaires. Mais s'il y a un bon chevauchement, l'EM donnera probablement des résultats plus significatifs (encore plus si la variance / l'écart-type présente un intérêt). Mais si tout ce qui vous intéresse est d'attribuer l'appartenance à un groupe sans se soucier des paramètres, alors K-means est probablement plus simple.

Pourquoi ne pas faire les deux et voir à quel point les réponses sont différentes? s'ils sont similaires, optez pour le plus simple, s'ils sont différents, décidez de comparer le regroupement aux données et aux connaissances externes.

Greg Snow
la source
Merci greg votre contribution a aidé, j'ai appliqué les deux et il semble que EM a généré de meilleurs clusters que k-mean. (Je pense que c'est principalement parce que les données dont je dispose sont continues et qu'il n'y a pas de lacunes). Je suis un peu confus, car je n'ai que des données 1D, alors je devrais probablement faire un binning pour classer les données. Qu'est-ce que tu penses? Qu'entendez-vous exactement par paramètres? Fait-il référence aux attributs d'une instance? Merci Ali
Ali
Hm EM seul semble insuffisant. Vous avez besoin d'une hypothèse sur la distribution des distributions sous-jacentes du mélange.
tomka
2

EM est meilleur que k-means en termes de résultats.

K-means, cependant, a un temps d'exécution plus rapide.

Ils produiront des résultats similaires si les matrices d'écart type / covariance sont approximativement égales. Si vous pensez que c'est vrai, utilisez k-means.

DBSCAN est utilisé lorsque les données ne sont pas gaussiennes. Si vous utilisez des données à 1 dimension, cela n'est généralement pas applicable, car une approximation gaussienne est généralement valide en 1 dimension.

user52516
la source
0

Une autre façon simple consiste à utiliser essentiellement le tri du tableau 1D: c'est-à-dire itérer sur chaque point et obtenir les valeurs qui sont à une distance minimale de celui-ci dans les directions positive et négative. Par exemple:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

donnera:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

Quels points, que les éléments proches d'un point particulier sont essentiellement sous son groupe. La seule chose à méditer dans cette technique est la variable k, qui est la taille fixe du cluster :-).

khan
la source
-2

S'il n'y a qu'une seule variable, pas besoin de clustering. Vous pouvez facilement regrouper vos observations en fonction de la distribution de la variable.

Ou est-ce que je manque quelques points ici?

FMZ
la source
5
Pouvez-vous donner un exemple précis de groupement des observations en fonction de la distribution de la variable?
Ali
@ composer314: avec un histogramme?
nico
1
Je suis désolé, mais je ne suis toujours pas en train de suivre. Comment puis-je utiliser un histogramme pour regrouper des observations liées? (Je suppose que la question que je peux poser est vraiment comment trouver des amas dans un histogramme? Serait-ce similaire à la cueillette de pics spectraux?)
Ali
5
@composer L'utilisation de l'histogramme ou même d'un lissage du noyau des données n'est généralement pas un moyen "facile" de regrouper. Si vous voulez suivre cette voie, vous devez adapter un modèle de mélange fini . Si vous voulez juste ce qu'une vue occasionnelle d'un histogramme pourrait suggérer, utilisez K-means (également connu sous le nom de méthode de Jenks , populaire parmi les cartographes).
whuber