Determinare diversi cluster di dati 1d dal database


24

Ho una tabella di database di trasferimenti di dati tra nodi diversi. Questo è un enorme database (con quasi 40 milioni di trasferimenti). Uno degli attributi è il numero di trasferimenti di byte (nbyte) che vanno da 0 byte a 2 tera byte. Vorrei raggruppare gli nbyte in modo tale che, dati i cluster k, alcuni trasferimenti x1 appartengano al cluster k1, i transistor x2 a k2 ecc.

Dalla terminologia che ho usato potresti aver indovinato cosa stavo facendo: K-significa. Questi sono dati 1d poiché nbytes è l'unica caratteristica che mi interessa. Quando stavo cercando metodi diversi per questo, vidi che l'EM veniva menzionato un paio di volte insieme a un approccio non cluster. Mi piacerebbe conoscere le tue opinioni su come affrontare questo problema (in particolare se raggruppare o meno).

Grazie!


Cosa sono "trasferimenti x1", "trasferimenti x2" ecc.? Il "tipo di trasferimento" è una seconda variabile?
Peter Flom - Ripristina Monica

I trasferimenti x1 sono solo un modo per dire che questi 500 trasferimenti avevano una dimensione di trasferimento attorno a un certo valore (questa sarebbe la media per quel cluster in k-medie).
Shaun,

5
Non sono un esperto di clustering, ma con così tanti dati e solo 1 dimensione, mi chiedo se potresti semplicemente fare alcuni grafici della densità del kernel usando diverse larghezze di banda e vedere quante modalità / picchi trovi, e se il risultato sembra sarebbe utile per te.
gung - Ripristina Monica

1
Hai chiesto se raggruppare o meno. Quale sarebbe il tuo obiettivo dal clustering? Utilizzeresti i cluster per qualche altro scopo o è di interesse teorico?
Peter Flom - Ripristina Monica

Alcuni degli altri attributi della tabella sono nome utente, date di inizio e fine. La mia speranza è che raggruppando i trasferimenti in base alle dimensioni del trasferimento, posso quindi fare riferimento ad altri attributi di un determinato trasferimento per vedere chi sta trasferendo quanto in quale mese dell'anno. Cosa faremo con questa osservazione, non lo so ancora. Ma è un po 'dove sto andando.
Shaun,

Risposte:


43

Nei dati monodimensionali, non utilizzare l'analisi dei cluster.

L'analisi dei cluster è generalmente una tecnica multivariata. O meglio, per dirla diversamente: per i dati unidimensionali - che sono completamente ordinati - ci sono tecniche molto migliori. L'uso di k-medie e tecniche simili in questo caso è uno spreco totale, a meno che non si faccia uno sforzo sufficiente per ottimizzarli effettivamente per il caso 1-d.

Solo per darvi un esempio: per k-significa che è comune usare k oggetti casuali come seed iniziali. Per i dati monodimensionali, è abbastanza facile fare di meglio semplicemente usando i quantili appropriati (1 / 2k, 3 / 2k, 5 / 2k ecc.), Dopo aver ordinato i dati una volta e quindi ottimizzare da questo punto di partenza. Tuttavia, i dati 2D non possono essere ordinati completamente. E in una griglia, probabilmente ci saranno celle vuote.

Inoltre non lo chiamerei cluster. Lo chiamerei intervallo . Quello che vuoi davvero fare è ottimizzare i bordi dell'intervallo. Se fai k-mean, testerà per ogni oggetto se dovrebbe essere spostato in un altro cluster. Ciò non ha senso in 1D: è necessario verificare solo gli oggetti ai bordi dell'intervallo. Ovviamente è molto più veloce, poiché ci sono solo ~ 2k oggetti lì. Se non preferiscono già altri intervalli, nemmeno gli oggetti più centrali.

Potresti voler esaminare tecniche come l' ottimizzazione di Jenks Natural Breaks , ad esempio.

Oppure puoi fare una stima della densità del kernel e cercare i minimi locali della densità da suddividere lì. La cosa bella è che non è necessario specificare k per questo!

PS si prega di utilizzare la funzione di ricerca. Ecco alcune domande sul clustering di dati 1-d che hai perso:


I quantili non sono necessariamente d'accordo con i cluster. Una distribuzione 1d può avere 3 cluster naturali in cui due contengono il 10% dei dati ciascuno e l'ultimo contiene l'80% dei dati. Quindi penso che sia possibile raggrupparsi qui, anche se sono d'accordo che abbia senso ottimizzare la corsa raccogliendo semi in modo intelligente ecc. O usando altre idee.
Bitwise,

I quantili sono probabilmente buoni punti seme per l' ottimizzazione , questo era ciò a cui mi riferivo. E solo per dare un esempio di cosa puoi fare in 1D che non funziona così bene in 2+ dimensioni.
Anony-Mousse,

Sono d'accordo che varrebbe la pena usare i quantili come semi, ma proverei comunque alcune inizializzazioni casuali (per esempi come quello che ho dato). In ogni caso, il metodo migliore sarebbe quello di guardare il diagramma istogramma / densità e scegliere manualmente i semi e quindi ottimizzarli con il clustering. Ciò converge molto rapidamente in una buona soluzione.
Bitwise,

3
Jenks è k-significa in 1D.
whuber

1
@whuber anche se matematicamente lo è, spero che fosse abbastanza intelligente da sfruttare i dati che possono essere ordinati . Se usi l'approccio Lloyd per fare k-mean su dati 1-d, sei stupido, perché stai facendo molti calcoli che potresti saltare. E per la maggior parte delle persone, k-mean è Lloyd. E alcune persone si preoccupano di evitare calcoli non necessari.
Anony-Mousse,

1

La tua domanda è se dovresti raggruppare o quale metodo dovresti usare per raggruppare?

Per quanto riguarda la necessità di raggruppare, dipende se si desidera partizionare automaticamente i dati (ad esempio se si desidera ripetere più volte questo partizionamento). Se lo fai solo una volta, puoi semplicemente guardare l'istogramma della distribuzione dei tuoi valori e dividerlo a occhio, come proposto nei commenti. Consiglierei comunque di guardare i dati a occhio, poiché potrebbe aiutarti a determinare quanti cluster vuoi e anche se il cluster "ha funzionato".

Per quanto riguarda il tipo di clustering, k-mean dovrebbe andare bene se ci sono cluster "reali" nei dati. Se non vedi alcun cluster nell'istogramma, non ha molto senso raggrupparlo comunque, poiché qualsiasi partizionamento del tuo intervallo di dati fornirà cluster validi (o nel caso di avvio casuale di kmean, otterrai cluster diversi ogni corsa).


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.