Clustering dinamico di distorsione temporale


40

Quale sarebbe l'approccio per utilizzare Dynamic Time Warping (DTW) per eseguire il clustering di serie temporali?

Ho letto di DTW come un modo per trovare la somiglianza tra due serie storiche, mentre potrebbero essere spostate nel tempo. Posso usare questo metodo come misura di somiglianza per l'algoritmo di clustering come k-mean?


2
Sì, potresti usare la misura della somiglianza come input per k significa raggruppare e quindi determinare gruppi nei tuoi dati.
meteorologo

Grazie per la risposta, signore. Immagino che per ogni iterazione avrei bisogno di formare la matrice della distanza per ciascuna coppia (centroide, punto di raggruppamento) e ricalcolare i centroidi in modo standard, come media di tutte le serie che appartengono al cluster?
Marko,

1
Aleksandr Blekh nella risposta sotto ha un post sul blog che fornisce un esempio dettagliato su come fare questo in R.
previsioni

2
@forecaster non usa k- mean con DTW. k-medie minimizza la varianza, non le distanze. La varianza è euclidea quadrata, ma ciò non significa che i k-media possano ottimizzare altre distanze. La media no, e in DTW dovrebbe essere piuttosto facile costruire controesempi, come un offset dell'onda sinusoidale di : entrambi sono molto simili con DTW, ma la loro media è zero costante - molto dissimile da entrambi. π
Anony-Mousse

1
K-mean non è un algoritmo appropriato per il clustering di serie temporali. Sono appropriati modelli markov nascosti per dati discreti e longitudinali. Ci sono molti libri ora disponibili su questo argomento, nonché contributi chiave di Oded Netzer (Columbia) e Steve Scott (Google). Un altro approccio sarebbe il metodo teorico dell'informazione sviluppato da Andreas Brandmaier presso Max Planck chiamato clustering di distribuzione delle permutazioni. Ha anche scritto un modulo R. Il confronto delle soluzioni di cluster è un problema diverso. Il documento di Marina Meila, Comparing Clusterings, U of Washington Statistics Tech Report 418 è il migliore.
Mike Hunter,

Risposte:


33

Evitare Non usare k-means per timeseries.

DTW non è minimizzato dalla media; k-mean potrebbe non convergere e anche se converge non produrrà un risultato molto buono. La media è uno stimatore dei minimi quadrati sulle coordinate. Riduce al minimo la varianza, non le distanze arbitrarie, e k-medie è progettato per minimizzare la varianza, non le distanze arbitrarie .

Supponiamo di avere due serie storiche. Due onde sinusoidali, della stessa frequenza, e un periodo di campionamento piuttosto lungo; ma sono compensati da . Poiché DTW esegue la deformazione temporale, può allinearli in modo che corrispondano perfettamente, ad eccezione di inizio e fine. DTW assegnerà una distanza piuttosto ridotta a queste due serie. Tuttavia, se si calcola la media delle due serie, sarà uno 0 piatto - si annullano. La media non esegue deformazioni temporali dinamiche e perde tutto il valore ottenuto da DTW. Su tali dati, k-medie potrebbe non riuscire a convergere e i risultati saranno privi di significato. K-significa in realtà dovrebbe essere usato solo con varianza (= quadrato euclideo), o in alcuni casi equivalenti (come il coseno, su dati normalizzati L2, dove la somiglianza del coseno è2 -πuguale a distanza euclidea quadrata)2

Invece, calcola una matrice di distanza usando DTW, quindi esegui il clustering gerarchico come single-link. A differenza di k-medie, la serie può anche avere una lunghezza diversa.


4
Bene, c'è ovviamente PAM (K-medoids) che lavora con distanze arbitrarie. Uno dei tanti algoritmi che supportano distanze arbitrarie - k-mean no. Altre scelte sono DBSCAN, OTTICHE, CLARAN, HAC, ...
Anony-Mousse

1
Probabilmente. Perché k-medoids usa DTW-medoid per trovare il centro del cluster, non la media L2. Non conosco alcun clustering di serie storiche di successo nel mondo reale. Credo di aver visto dei documenti, ma nessuno che ha realmente utilizzato il risultato. Solo prove di concetti.
Anony-Mousse

1
@Aleksandr Blekh ha dato questo come uno dei suoi esempi nbviewer.ipython.org/github/alexminnaar/… Qual è la tua opinione al riguardo?
Marko,

1
Problemi con i giocattoli. Inutile nel mondo reale. I dati reali hanno un sacco di rumore, che danneggerà molto più delle curve sinusoidali lisce e dei modelli presentati in questi dati.
Anony-Mousse

1
Penso che il clustering gerarchico sia la scelta migliore. Non sarai comunque in grado di elaborare un numero enorme di serie.
Anony-Mousse

49

Sì, è possibile utilizzare l' approccio DTW per la classificazione e il raggruppamento di serie storiche . Ho compilato le seguenti risorse , che si concentrano proprio su questo argomento (ho recentemente risposto a una domanda simile, ma non su questo sito, quindi sto copiando i contenuti qui per comodità di tutti):


3
+1 eccellente raccolta di articoli e blog. Riferimenti molto buoni.
meteorologo

@forecaster: grazie per l'upgrade e le belle parole! Sono contento che ti piaccia la collezione. È troppo triste che al momento non ho tempo di imparare le previsioni e molte altre aree della statistica e della scienza dei dati più seriamente, ma utilizzo ogni opportunità per imparare qualcosa di nuovo.
Aleksandr Blekh,

1
@AleksandrBlekh Grazie mille per la tua risposta, ho discusso con Anony-Mousse di questo approccio, dal momento che sono particolarmente interessato a DTW come misura di somiglianza per K-significa, quindi ho potuto ottenere centroidi come output. Qual è la tua opinione ed esperienza con essa? Come puoi vedere, Anony-Mousse ha dato alcune argomentazioni sul fatto che i risultati potrebbero non essere così buoni in questo caso ... Forse qualche esperienza personale in una questione pratica?
Marko,

1
Ok grazie ancora. Hai +1 da parte mia e lui accetta la risposta, poiché la mia domanda è più orientata verso k-mean e DTW.
Marko,

1
@pera: piacere mio. Grazie per il voto. Comprendi e accetta totalmente l'accettazione, nessun problema.
Aleksandr Blekh,

1

Un recente metodo DTW Barycenter Averaging (DBA) è stato proposto da Petitjean et al. alle serie storiche medie. In un altro articolo hanno dimostrato empiricamente e teoricamente come può essere usato per raggruppare serie temporali con k-medie. Gli autori forniscono un'implementazione su GitHub ( collegamento al codice ).

1 F. Petitjean, G. Forestier, GI Webb, AE Nicholson, Y. Chen ed E. Keogh, "La media dinamica della distorsione temporale delle serie temporali consente una classificazione più rapida e accurata", Conferenza internazionale IEEE 2014 sull'estrazione di dati, Shenzhen, 2014 .

2 F. Petitjean, P. Gançarski, Riassumendo una serie di serie storiche calcolando la media: dalla sequenza di Steiner all'allineamento multiplo compatto, Teoretical Computer Science, Volume 414, Numero 1, 2012


2
si prega di fornire riferimenti completi anziché collegamenti. I collegamenti possono morire
Antoine

1

Dynamic Time Warp confronta i punti dati realizzati, che possono o meno funzionare. Un approccio più rigoroso è quello di confrontare la distribuzione delle serie temporali mediante una metrica chiamata distanza del telescopio .

La cosa interessante di questa metrica è che il calcolo empirico viene eseguito inserendo una serie di classificatori binari come SVM.

Per una breve spiegazione, vedi questo .

Per le serie temporali di clustering, è stato dimostrato che supera DTW; vedere la tabella 1 nel documento originale [1].

[1] Ryabko, D., & Mary, J. (2013). Una metrica basata sulla classificazione binaria tra le distribuzioni di serie temporali e il suo utilizzo in problemi statistici e di apprendimento. The Journal of Machine Learning Research, 14 (1), 2837-2856.


2
Un tentato nota dell'editore: "Jérémie Mary (coautore) ha una pagina web che discute dell'algoritmo con un'implementazione di R.
gung - Reinstate Monica

@gung Wow, eccellente! Ho avuto corrispondenza con il primo autore e non ha menzionato questo.
horaceT

In realtà sto solo copiando da qualcuno che ha provato a modificarlo nella tua risposta, @horaceT. Non ne so molto.
gung - Ripristina Monica

0

Sì. Un approccio ingenuo e potenzialmente lento potrebbe essere,

  1. Crea tutte le combinazioni di cluster. k è per il conteggio dei cluster e n per il numero di serie. Il numero di articoli restituiti dovrebbe essere n! / k! / (n-k)!. Questi sarebbero qualcosa come potenziali centri.
  2. Per ogni serie, calcolare le distanze tramite DTW per ciascun centro in ciascun gruppo di cluster e assegnarlo al minimo.
  3. Per ciascun gruppo di cluster, calcolare la distanza totale all'interno dei singoli cluster.
  4. Scegli il minimo.

L'ho usato per un piccolo progetto. Ecco il mio repository su Time Series Clustering e la mia altra risposta a riguardo.

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.