Logiciel de visualisation pour le clustering


14

Je veux regrouper ~ 22 000 points. De nombreux algorithmes de clustering fonctionnent mieux avec des suppositions initiales de meilleure qualité. Quels outils existent qui peuvent me donner une bonne idée de la forme approximative des données?

Je veux pouvoir choisir ma propre métrique de distance, donc un programme que je peux alimenter une liste de distances par paire serait très bien. J'aimerais pouvoir faire quelque chose comme mettre en évidence une région ou un cluster sur l'écran et obtenir une liste des points de données dans cette zone.

Logiciel libre préféré, mais j'ai déjà SAS et MATLAB.

Réponses:


11

GGobi (http://www.ggobi.org/), avec le package R rggobi, est parfaitement adapté à cette tâche.

Voir la présentation correspondante pour des exemples: http://www.ggobi.org/book/2007-infovis/05-clustering.pdf


Merci pour la suggestion, @Shane. ggobi semble prometteur, je l'installe en ce moment et je vais l'essayer :)

1
Fonctionne bien sur d'autres plates-formes, mais gtk ne fonctionne pas bien avec OSX.

3
gtk est très bien sur OSX.
hadley

5

L'exploration des résultats de clustering dans des dimensions élevées peut être effectuée dans R à l'aide des packages clusterfly et gcExplorer . Cherchez plus ici .


Merci, mais est-il avantageux d'utiliser clusterfly plutôt que d'appeler directement ggobi? Le site Web ne mentionne que les méthodes de clustering, qui sont intéressantes, mais pas encore mon objectif principal. gcexplorer a un site Web moins informatif, mais il semble que ce soit pour visualiser les données après qu'elles ont déjà été divisées en clusters. Je leur donnerai un essai une fois que j'arriverai à ce point, mais pas ce dont j'ai besoin en ce moment.

4

(Des mois plus tard), une bonne façon d'imaginer les k-clusters et de voir l'effet de divers k est de construire un arbre couvrant minimum et de regarder les bords les plus longs. Par exemple,

texte alternatif

Ici, il y a 10 groupes, avec 9 bords les plus longs 855 899 942 954 1003 1005 1069 1134 1267.
Pour 9 groupes, réduisez le bord cyan 855; pour 8, le violet 899; etc.

L'algorithme de clustering k à liaison unique ... est précisément l'algorithme de Kruskal ... équivalent à trouver un MST et à supprimer les k-1 bords les plus chers.

- Wayne, Algorithmes gourmands .

22000 points, 242M de distance par paire, prendre ~ 1 gigaoctet (float32): pourrait convenir.

Pour afficher un arbre ou un graphique de grande dimension dans 2d, voir Mise à l'échelle multidimensionnelle (également de Kruskal) et la vaste documentation sur la réduction de dimension. Cependant, en dim> 20, la plupart des distances seront proches de la médiane, donc je pense que la réduction de dimension ne peut pas fonctionner là-bas.


2

J'ai eu une bonne expérience avec KNIME lors d'un de mes projets. C'est une excellente solution pour une exploration et une exploration graphiques rapides. En plus de cela, il offre une intégration transparente des modules R et Weka.


Cela ressemble à un programme utile, mais leur page Web ne fait pas un bon travail pour me convaincre que cela résoudra ce problème exact. Il semble que ce soit trop large, trop de fonctionnalités dont je me fiche, ce qui rend difficile de faire les choses simples. Je lui donnerai un autre regard si les autres choix ne fonctionnent pas.


1

Jetez un oeil à Cluster 3.0 . Je ne sais pas si cela fera tout ce que vous voulez, mais il est assez bien documenté et vous permet de choisir parmi quelques métriques de distance. La pièce de visualisation se fait via un programme distinct appelé Java TreeView ( capture d'écran ).


Merci pour la suggestion, mais la possibilité de choisir ma propre mesure de distance est essentielle, donc cela ne fonctionnera pas pour moi. Quelqu'un d'autre peut cependant le trouver utile.

1

GGobi semble intéressant pour cela. Une autre approche pourrait être de traiter vos matrices de similitude / distance inverse comme des matrices d'adjacence de réseau et de les intégrer dans une routine d'analyse de réseau (par exemple, soit igraph dans R ou peut-être Pajek). Avec cette approche, j'expérimenterais la réduction de la distance des nœuds en une liaison binaire à différents points de coupure.


J'y ai pensé, mais il ne semble pas y avoir de seuil raisonnable, et les experts du domaine ne peuvent pas non plus en justifier un.

Je pense que cela pourrait être assez arbitraire pour votre objectif déclaré - honnêtement, vous n'aurez peut-être même pas besoin de couper en binaire, simplement de recoder une étiquette de valeur de cravate sur une échelle de 1 à un certain nombre gérable, puis de masquer / afficher progressivement les liens à différents niveaux (en cachant / éliminant éventuellement les pendentifs et les orphelins en cours de route). Ne répondant pas directement à votre demande telle qu'elle est écrite, mais pourquoi ne pas adopter une approche plus classique et utiliser une méthode de clustering hybride qui n'utilise pas les centroïdes initiaux pour identifier les clusters préliminaires, puis alimenter les centroïdes de ce résultat dans votre nouvelle analyse?
Shelby

Je suppose que vous voulez essayer de nombreuses coupures différentes jusqu'à ce que je vois de bons résultats? Je souhaite éviter cela pour des raisons de comparaisons multiples standard. re: votre deuxième suggestion, je suppose que je me fais juste mieux confiance que ces algorithmes. J'utilise l'ordinateur pour traiter de grandes quantités de données trop fastidieuses à faire à la main, pas pour remplacer ma pensée.

1
Vous utilisez un langage de test d'hypothèses mais vous parlez pourtant d'une approche très exploratoire, de savoir quand vous voyez @ en même temps - il n'est donc pas clair quel est vraiment votre objectif pour cette partie de votre analyse. Si vous avez des hypothèses que vous testez plus tard (par exemple, prédire l'appartenance à un cluster ou utiliser l'appartenance à un clust comme prédicteur), vous pouvez choisir de ne pas faire de choses qui pourraient y tenter un biais. Mais les problèmes de "comparaison multiple" ne font pas vraiment partie du problème exploratoire que vous décrivez. Les limites de visibilité sont juste pour vous aider à voir ce qui est là - mais votre confiance peut toujours être déplacée.
Shelby

1

Weka est un programme open source pour l'exploration de données (wirtten et extensible en Java), Orange est un programme open source et une bibliothèque pour l'exploration de données et l'apprentissage automatique (écrit en Python). Ils permettent tous deux une exploration visuelle pratique et efficace des données multidimensionnelles


La page des fonctionnalités d'Orange indique `` en construction '' et ne répertorie pas les captures d'écran comme ce que je fais. weka n'a aucune liste de fonctionnalités. Ils peuvent peut-être faire ce que je veux, mais s'ils ne font pas la promotion de la fonctionnalité, comment le savoir. Je suis plus convaincu par les autres choix.

0

Le logiciel numérique gratuit DataMelt comprend une bibliothèque Java appelée JMinHep. Veuillez consulter le manuel dans la section "Groupement de données". Il fournit une interface graphique pour visualiser les points de données multidimensionnels dans XY et exécuter un certain nombre d'algorithmes de regroupement de données.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.