Funzionalità per la classificazione delle serie storiche


43

Considero il problema della classificazione (multiclasse) in base a serie temporali di lunghezza variabile , ovvero trovare una funzione tramite una rappresentazione globale della serie temporale da un set di funzioni selezionate di dimensione fissa indipendente da , quindi utilizzare i metodi di classificazione standard su questo set di funzionalità. Non mi interessa fare previsioni, ovvero prevedereT

f(XT)=y[1..K]for XT=(x1,,xT)with xtRd ,
viDT
ϕ(XT)=v1,,vDR ,
xT+1. Ad esempio, possiamo analizzare il modo in cui una persona cammina per prevedere il genere della persona.

Quali sono le funzionalità standard che posso prendere in considerazione? Ad esempio, possiamo ovviamente usare la media e la varianza della serie (o momenti di ordine superiore) e anche guardare nel dominio della frequenza, come l'energia contenuta in un intervallo della Trasformata di Fourier discreta della serie (o Trasformata di Wavelet discreta ).

Risposte:


45

Semplici caratteristiche statistiche

  • Mezzi in ciascuna delle dimensionid
  • Deviazioni standard delle dimensionid
  • Skewness , Kurtosis e momenti di ordine superiore delle dimensionid
  • Valori massimo e minimo

Funzionalità correlate all'analisi delle serie temporali

  • Le correlazioni incrociate tra ciascuna dimensione e le correlazioni automatiched×d1 d
  • Ordini della parte autoregressiva (AR), integrata (I) e media mobile (MA) di un modello ARIMA stimato
  • Parametri della parte AR
  • Parametri della parte MA

Funzionalità relative al dominio della frequenza

Vedi Morchen03 per uno studio delle funzionalità di risparmio energetico su DFT e DWT

  • frequenze dei picchi di ampiezza nelle DFTS per le Detrended dimensionik d
  • k -quantili di questi DFT

1
Emile, questa domanda è simile a quella che ho appena posto ( stats.stackexchange.com/questions/51475/… ). Saresti in grado di pubblicare qualsiasi codice R per le funzionalità DFT?
B_Miner

Esiste un metodo basato su shapelet per serie temporali di lunghezza variabile?
Simone,

8

Emile, penso che le funzionalità elencate nella tua risposta siano punti di partenza piuttosto buoni, anche se come sempre, penso che alcune competenze di dominio (o almeno una buona riflessione a lungo) sul tuo problema siano ugualmente importanti.

Potresti prendere in considerazione l'inclusione di funzioni calcolate dai derivati ​​(o integrali) del tuo segnale. Ad esempio, scommetterei che una rapida accelerazione / decelerazione è un fattore predittivo ragionevolmente buono di guida soggetta a incidenti. Tale informazione è ovviamente ancora presente nel segnale di posizione, ma non è altrettanto esplicita.

Potresti anche considerare di sostituire i coefficienti di Fourier con una rappresentazione del pacchetto wavelet o wavelet. Il vantaggio principale delle wavelet è che consentono di localizzare una funzione sia in frequenza che in tempo, mentre i coefficienti di Fourier tradizionali sono limitati al solo tempo. Ciò potrebbe essere particolarmente utile se i tuoi dati contengono componenti che si accendono / spengono in modo irregolare o hanno impulsi ad onda quadra che possono essere problematici per i metodi di Fourier.


6

Come suggerito dalle altre risposte, esiste un numero enorme di caratteristiche delle serie temporali che possono essere utilizzate come funzionalità potenziali. Ci sono caratteristiche semplici come la media, caratteristiche relative alle serie temporali come i coefficienti di un modello AR o caratteristiche altamente sofisticate come la statistica di test del test di ipotesi più completo del dickey aumentato.

Panoramica completa sulle possibili funzionalità delle serie temporali

Il pacchetto python tsfresh automatizza l'estrazione di tali funzionalità. La sua documentazione descrive le diverse funzionalità calcolate. Puoi trovare la pagina con le funzionalità calcolate qui .

Disclaimer: sono uno degli autori di Tsfresh.


5

Ti suggerisco, invece di utilizzare approcci classici per l'estrazione di funzionalità ingegnerizzate a mano, di utilizzare gli autoencoder . I codificatori automatici svolgono un ruolo importante nell'estrazione delle caratteristiche dell'architettura di apprendimento profondo.

L'autoencoder tenta di apprendere una funzione . In altre parole, sta cercando di apprendere un'approssimazione della funzione identità, in modo da produrre simile a .X T X Tf(XT)XTX^TXT

La funzione identità sembra una funzione particolarmente banale per cercare di imparare; ma ponendo vincoli sulla rete, ad esempio limitando il numero di unità nascoste, possiamo scoprire strutture interessanti sui dati.

Estrattore di funzioni

In questo modo, il vostro desiderato sarà equivalente ai valori di uscita dello strato middlemost in un autoencoder profonda, Se si limita il numero di unità nascoste nel middlemost a .ϕ(XT)=v1,,vDRD

Inoltre, puoi utilizzare molti tipi di codificatore automatico per trovare la soluzione migliore al tuo problema.


4

Il documento collegato sarà in qualche modo illuminante, poiché è interessato alla questione più o meno la stessa in un altro contesto.

Estratto di carta (nell'archivio Internet)

PDF cartaceo


1

A seconda della lunghezza delle serie temporali, l'approccio abituale è di trasferire i dati in segmenti, ad esempio 10 secondi.

Tuttavia, spesso prima di suddividere le serie temporali in segmenti è necessario eseguire una preelaborazione come il filtraggio e il rifiuto degli artefatti. È quindi possibile calcolare una varietà di funzioni come quelle basate sulla frequenza (ovvero prendere una FFT per ogni epoca), il tempo (es. Media, varianza ecc. Delle serie temporali in quell'epoca) o la morfologia (cioè la forma del segnale / serie storiche in ogni epoca).

Di solito le funzionalità utilizzate per classificare i segmenti (epoche) di una serie temporale / segnale sono specifiche del dominio, ma l'analisi Wavelet / Fourier sono semplicemente strumenti che consentono di esaminare il segnale nei domini frequenza / tempo-frequenza anziché essere caratteristiche in se stesse.

In un problema di classificazione, ogni epoca avrà un'etichetta di classe, ad esempio "felice" o "triste", quindi si formerebbe un classificatore per distinguere tra epoche "felici" e "tristi" utilizzando le 6 caratteristiche calcolate per ogni epoca.

Nel caso in cui ogni serie storica rappresenti un singolo caso per la classificazione, è necessario calcolare ciascuna caratteristica in tutti i campioni delle serie storiche. La FFT è rilevante qui solo se il segnale è invariante di tempo lineare (LTI), ovvero se il segnale può essere considerato stazionario per l'intera serie temporale, se il segnale non è stazionario durante il periodo di interesse, un'analisi wavelet può essere più appropriato. Questo approccio implica che ogni serie temporale produrrà un vettore caratteristica e costituirà un caso per la classificazione.


Ho sempre sentito che la rottura di serie temporali, un processo naturalmente continuo, in periodi (o epoche) discreti , si traduce in una perdita di informazioni. A meno che non ci siano epoche naturali nella serie, come si scelgono le epoche? Probabili epoche che si adattano a qualsiasi risultato desiderato.
Cam.Davidson.Pilon

1
Non sono sicuro che si possa trovare un'epoca adatta ad ogni risultato, ma per qualsiasi problema pratico Con un segnale non stazionario è necessario trovare un modo per tenere conto delle variazioni temporali (se un segnale / serie temporale è adeguatamente descritto analiticamente o è invariante nel tempo lineare questo non è necessario). La lunghezza dell'epoca è di nuovo specifica del dominio, ma di solito viene scelta per essere abbastanza corta da consentire al segnale di rimanere fermo nel periodo di tempo (epoca) di interesse.
BGreene,

BGreene, potresti spiegare quali sono i vantaggi del partizionare la serie in epoche per selezionare le funzionalità utilizzate nella classificazione? Vedo questo partizionamento come un aiuto per i calcoli successivi (cioè FFT), ma non come qualcosa legato alla selezione delle funzionalità stesse. Forse è legato alla "morfologia" che hai citato.
Emile,

Il partizionamento in epoche non ha nulla a che fare con la selezione delle caratteristiche. Se si dispone di un segnale lungo (ad es. 10 ore di registrazione campionate a 100Hz), al fine di esaminare come il segnale cambia nel tempo, è necessario romperlo in epoche. In un problema di classificazione, ogni epoca avrà un'etichetta di classe, ad esempio "felice" o "triste", quindi si formerebbe un classificatore per distinguere tra epoche "felici" e "tristi" utilizzando le 6 caratteristiche calcolate per ogni epoca.
BGreene,

Ok :) Non è assolutamente correlato alla mia domanda originale. Considero il caso in cui la classe identifica l'intera serie. Ho intenzione di modificare la mia domanda per aggiungere un esempio chiarificatore.
Emile,
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.