Tecniche di clustering appropriate per i dati temporali?


13

Ho dati temporali delle frequenze di attività. Voglio identificare i cluster nei dati che indicano periodi di tempo distinti con livelli di attività simili. Idealmente, voglio identificare i cluster senza specificare il numero di cluster a priori.

Quali sono le tecniche di clustering appropriate? Se la mia domanda non contiene informazioni sufficienti per rispondere, quali sono le informazioni che devo fornire per determinare le tecniche di clustering appropriate?

Di seguito è riportata un'illustrazione del tipo di dati / cluster che sto immaginando: clustering nel tempo


La trama mi sembra levigata (interpolata). Questo è probabilmente fuorviante. E "longitudinale" che ho associato ai geodati, ma apparentemente stai guardando una serie temporale?
Ha QUIT - Anony-Mousse il

1
Non prestare troppa attenzione alla trama, è solo un esempio. Quello che voglio ottenere è l'identificazione di episodi distinti di tempo in base a variabili che variano nel tempo. Longitudinale, secondo me, è lo stesso dei dati temporali, vedi ad esempio en.wikipedia.org/wiki/Longitudinal_study
histelheim

Perché nel cluster, vedrai questo termine principalmente come in en.wikipedia.org/wiki/Longitude - dalla tua domanda non è chiaro cosa vuoi raggruppare. È possibile raggruppare ad esempio intervalli di tempo che si comportano in modo simile tra i "soggetti" o soggetti che mostrano gli stessi progressi nel tempo.
Ha QUIT - Anony-Mousse il

1
Ho cambiato 'longitudinale' in 'temporale' per evitare confusione. Usando le tue parole, penso di voler raggruppare intervalli di tempo . Tuttavia, per me è importante che i cluster siano episodi distinti e continui nel tempo.
histelheim,

Le ricerche con parole chiave "segmentazione di serie temporali" o "modelli di cambio di regime" possono essere di aiuto.
Yves,

Risposte:


6

Dalla mia ricerca sembra che i modelli di Markov nascosti gaussiani potrebbero essere adatti: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#example-plot-hmm-stock-analysis-py

Sembra sicuramente trovare episodi distinti di attività.

Modello di Markov nascosto gaussiano


Non devi sapere quanti stati nascosti ci sono in anticipo? C'è un modo per aggirare questo?
JCWong,

@JCWong Penso che tu possa usare una variante bayesiana non parametrica (l'infinito modello Markov nascosto) per evitarlo.
Jtobin,

Dopo molto tempo: HMM non sembra raggruppare / raggruppare gli eventi temporalmente (come appare dalla figura). Ma, ciò che è stato chiesto è come ottenere cluster temporali? Sono solo curioso, mentre sto lavorando su materiale di raggruppamento temporale.
RussellB,

3

Il tuo problema sembra simile a quello che sto esaminando e questa domanda, che è simile, ma meno spiegata.

La loro risposta si collega a un buon riepilogo sul rilevamento delle modifiche. Per possibili soluzioni, una rapida ricerca su Google ha trovato un pacchetto di analisi del punto di cambio sul codice di Google. R ha anche alcuni strumenti per farlo. Il bcppacchetto è piuttosto potente e davvero facile da usare. Se vuoi farlo al volo non appena arrivano i dati, l'articolo "Rilevazione del punto di cambio online e stima dei parametri con applicazione ai dati genomici" descrive un approccio davvero sofisticato, anche se tieni presente che è leggermente impegnativo. C'è anche il strucchangepacchetto, ma per me ha funzionato meno bene.



1

Hai visto questa pagina: Pagina di classificazione / clustering delle serie storiche UCR ?

Qui puoi trovare entrambi: i set di dati su cui esercitarti e i risultati pubblicati - per confrontare le prestazioni della tua implementazione (esiste anche un link sulle prestazioni note di tecniche di apprendimento automatico ben note). Inoltre, questa pagina sta citando una massa critica di articoli da cui è possibile proseguire con la ricerca per l'approccio migliore che si adatta al tuo problema, dati o esigenze.

Inoltre, esiste un altro modo per farlo (potenzialmente) mediante l'applicazione di sequitur http: // sequitur.info. Se sarai in grado di normalizzare / approssimare bene i tuoi dati, ti darà la tua grammatica di quei "periodi di tempo distinti con livelli di attività simili" vedi questo documento e cercane un altro, perché non sono in grado di aggiungere altri collegamenti ...


3
Potresti fornire un breve riassunto delle risorse disponibili in questa pagina?
chl,

certo che posso. da lì ho codificato il mio classificatore
seninp

1

Penso che potresti usare il Dynamic Time Wrapping per cercare somiglianze tra diverse serie temporali. Per fare ciò, potrebbe essere necessario discretizzare la wavelet in raccolte, come una matrice. Ma la granularità sarebbe un problema e se hai un gran numero di serie temporali, il costo di calcolo sarà piuttosto grande per calcolare la distanza DTM per ogni coppia di esse. Quindi potresti aver bisogno di alcune preselezioni per funzionare come etichette.

Controllare questo fuori. Sto anche lavorando su un compito come il tuo e questa pagina mi ha aiutato.

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.