Software di visualizzazione per clustering


14

Voglio raggruppare ~ 22000 punti. Molti algoritmi di clustering funzionano meglio con ipotesi iniziali di qualità superiore. Quali strumenti esistono che possono darmi una buona idea della forma approssimativa dei dati?

Voglio essere in grado di scegliere la mia metrica di distanza, quindi un programma a cui posso fornire un elenco di distanze a coppie andrebbe bene. Vorrei poter fare qualcosa come evidenziare una regione o un cluster sul display e ottenere un elenco di quali punti di dati si trovano in quell'area.

Software libero preferito, ma ho già SAS e MATLAB.

Risposte:


11

GGobi (http://www.ggobi.org/), insieme al pacchetto R rggobi, è perfettamente adatto a questo compito.

Vedere la presentazione correlata per esempi: http://www.ggobi.org/book/2007-infovis/05-clustering.pdf


Grazie per il suggerimento, @Shane. ggobi sembra promettente, lo sto installando proprio ora e lo proverò :)

1
Funziona bene su altre piattaforme, ma GTK non funziona bene con OSX.

3
GTK va bene su OSX.
Hadley,

5

L'esplorazione dei risultati del clustering in dimensioni elevate può essere eseguita in R utilizzando i pacchetti clusterfly e gcExplorer . Cerca di più qui .


Grazie, ma c'è qualche vantaggio nell'usare clusterfly piuttosto che chiamare direttamente ggobi? Il sito web menziona solo metodi di clustering, che sono interessanti, ma non ancora il mio obiettivo principale. gcexplorer ha un sito Web meno informativo, ma sembra che sia per visualizzare i dati dopo che sono già stati suddivisi in cluster. Proverò loro una volta arrivato a quel punto, ma non quello di cui ho bisogno in questo momento.

4

(Mesi dopo), un bel modo per rappresentare i cluster di k e vedere l'effetto di vari k è costruire un albero di spanning minimo e osservare i bordi più lunghi. Per esempio,

testo alternativo

Qui ci sono 10 cluster, con 9 bordi più lunghi 855 899 942 954 1003 1005 1069 1134 1267.
Per 9 cluster, comprimere il bordo ciano 855; per 8, il viola 899; e così via.

L'algoritmo k-clustering single-link ... è precisamente l'algoritmo di Kruskal ... equivalente a trovare un MST e cancellare i bordi più costosi di k-1.

- Wayne, Greedy Algorithms .

22000 punti, 242 M di distanza a coppie, prendere ~ 1 gigabyte (float32): potrebbe adattarsi.

Per visualizzare un albero o un grafico ad alta dimensione in 2d, vedere Scaling multidimensionale (anche da Kruskal) e l'enorme letteratura sulla riduzione dimensionale. Tuttavia, in dim> 20 diciamo, la maggior parte delle distanze sarà vicina alla mediana, quindi credo che la riduzione dimensionale non possa funzionare lì.


2

Ho avuto una buona esperienza con KNIME durante uno dei miei progetti. È un'ottima soluzione per il mining e la grafica esplorativi rapidi. Inoltre, fornisce una perfetta integrazione dei moduli R e Weka.


Sembra un programma utile, ma la loro pagina web non fa un buon lavoro nel convincermi che risolverà questo esatto problema. Sembra che potrebbe essere troppo ampio, troppe funzionalità non mi interessano, il che rende difficile fare le cose semplici. Gli darò un'altra occhiata se le altre scelte non funzionano.


1

Dai un'occhiata a Cluster 3.0 . Non sono sicuro che farà tutto ciò che vuoi, ma è abbastanza ben documentato e ti consente di scegliere tra alcune metriche di distanza. Il pezzo di visualizzazione è attraverso un programma separato chiamato Java TreeView ( screenshot ).


Grazie per il suggerimento, ma la possibilità di scegliere la mia misura di distanza è fondamentale, quindi questo non funzionerà per me. Qualcun altro potrebbe trovarlo utile, però.

1

GGobi sembra interessante per questo. Un altro approccio potrebbe essere quello di trattare le tue matrici di somiglianza / distanza inversa come matrici di adiacenza della rete e inserirle in una routine di analisi della rete (ad esempio, oigra in R o forse Pajek). Con questo approccio avrei sperimentato il taglio del taglio delle distanze del nodo in un legame binario in corrispondenza di vari punti di taglio.


Ci ho pensato, ma non sembra esserci un punto di taglio ragionevole, e neanche gli esperti di dominio possono giustificarlo.

Penso che questo potrebbe essere abbastanza arbitrario per il tuo scopo dichiarato - onestamente, potresti non aver nemmeno bisogno di tagliare effettivamente in binario, semplicemente ricodificare un'etichetta del valore di legame su una scala da 1 a un numero gestibile, quindi nascondere / mostrare progressivamente i legami a vari livelli (opzionalmente anche nascondere / eliminare eventuali pendenti e orfani lungo la strada). Non rispondere direttamente alla tua richiesta come scritto, ma perché non adottare un approccio più tipico e utilizzare un metodo di cluster ibrido che non utilizza i centroidi iniziali per identificare i cluster preliminari, quindi inserire i centroidi da quel risultato nella tua nuova analisi?
Shelby,

Immagino che intendi provare per molti tagli diversi fino a quando non vedo dei bei risultati? Vorrei evitarlo per motivi di confronti multipli standard. ri: il tuo secondo suggerimento credo di fidarmi di me stesso meglio di quegli algoritmi. Uso il computer per elaborare grandi quantità di dati troppo noiosi da fare a mano, non per sostituire il mio pensiero.

1
Stai usando un linguaggio di verifica delle ipotesi ma stai ancora parlando di un approccio molto esplorativo, lo sai quando lo vedi @ allo stesso tempo - quindi non è chiaro quale sia il tuo obiettivo reale per questa parte dell'analisi. Se hai ipotesi che stai testando in seguito (ad es. Previsione dell'appartenenza a un cluster o utilizzo dell'appartenenza a Clust come predittore), puoi scegliere di non fare cose che tenteranno di pregiudicare lì. Ma i problemi di "paragone multiplo" non rientrano realmente nel problema esplorativo che stai descrivendo. I cut-off di Viz sono solo per aiutarti a vedere cosa c'è lì, ma la tua fiducia potrebbe essere ancora fuori posto.
Shelby,

1

Weka è un programma open source per il data mining (creato ed estensibile in Java), Orange è un programma open source e una libreria per il data mining e l'apprendimento automatico (scritto in Python). Entrambi consentono l'esplorazione visiva comoda ed efficiente di dati multidimensionali


La pagina delle caratteristiche di Orange dice 'in costruzione' e non elencano schermate come quello che sto facendo. weka non ha alcun elenco di funzionalità. Potrebbero essere in grado di fare quello che voglio, ma se non promuovono la funzione, come posso dirlo. Sono più convinto dalle altre scelte.

0

Il software numerico gratuito DataMelt include una libreria Java chiamata JMinHep. Consultare il manuale nella sezione "Clustering dei dati". Fornisce una GUI per visualizzare punti dati multidimensionali in XY ed eseguire una serie di algoritmi di clustering di dati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.