Classificare serie temporali multivariate


9

Ho un set di dati composto da serie temporali (8 punti) con circa 40 dimensioni (quindi ogni serie temporale è 8 per 40). L'output corrispondente (i possibili risultati per le categorie) è 0 o 1.

Quale sarebbe l'approccio migliore per progettare un classificatore per serie storiche con più dimensioni?

La mia strategia iniziale era quella di estrarre funzionalità da quelle serie storiche: media, standard, variazione massima per ogni dimensione. Ho ottenuto un set di dati che ho usato per addestrare un RandomTreeForest. Consapevole della totale ingenuità di questo, e dopo aver ottenuto scarsi risultati, ora sto cercando un modello più migliorato.

I miei lead sono i seguenti: classificare le serie per ogni dimensione (usando l'algoritmo KNN e DWT), ridurre la dimensionalità con PCA e utilizzare un classificatore finale lungo le categorie multidimensioni. Essendo relativamente nuovo in ML, non so se sbaglio totalmente.


Quello che stai facendo è un approccio abbastanza buono. Quanti campioni hai nel tuo set di dati?
Kasra Manshaei,

Ho circa 500.000 serie temporali (ricordando che ogni serie temporale è 8 timestamp * 40 dimensioni)
AugBar

Hai provato a utilizzare le 320 funzionalità raw? 320 caratteristiche non sono molte per 500.000 campioni
Jan van der Vegt,

@Jan van der Vegt: ho provato quel metodo usando una rete neurale, ma i risultati non erano così convincenti: ho usato i dati grezzi senza alcuna pre-elaborazione. Quali operazioni dovrei applicare in anticipo sui miei raw con funzionalità 320 per alimentare il classificatore?
AugBar

1
Nel caso in cui una rete neurale normalizzare l'input sia importante, a seconda della gamma delle funzionalità che potrebbero interessare. Ma vorrei solo inserire le funzionalità grezze in una RF e vedere quanto bene funziona, richiede meno messa a punto per vedere se riesci a ricavarne facilmente qualcosa
Jan van der Vegt

Risposte:


5

Sei sulla strada giusta. Guarda come calcolare alcune altre funzionalità, sia nel dominio del tempo che della frequenza. Fintanto che il numero di campioni >> il numero di funzioni, non è probabile che si adattino troppo. C'è della letteratura su un problema simile? In tal caso, ciò fornisce sempre un ottimo punto di partenza.

Prova un classificatore ad albero potenziato, come xgboost o LightGBM. Tendono ad essere più facili da mettere a punto per gli iperparametri e forniscono buoni risultati con parametri predefiniti. Sia la foresta casuale che i classificatori ad albero potenziato possono restituire importanza alle funzionalità, in modo da poter vedere quali funzionalità sono rilevanti per il problema. Puoi anche provare a rimuovere le funzionalità per verificare l'eventuale covarianza.

Ancora più importante, tuttavia, se i risultati sono inaspettatamente scarsi, assicurarsi che il problema sia definito correttamente. Controlla manualmente i risultati per assicurarti che non ci siano bug nella pipeline.



2

Puoi aggiungere più funzioni al tuo set di dati come di seguito.

  1. Puoi provare il pacchetto nolds se i tuoi dati provengono da un processo altamente non lineare.

  2. max, min, mean, skew, kurtosis e, se possibile, alcune statistiche rolling.

Sto lavorando a qualcosa di simile e ho fatto una domanda correlata .


1

Concordo con Jan van der Vegt, la standardizzazione (ad esempio, [-1, 1]) o la normalizzazione N (0, 1) combinata con la funzione di attivazione può essere molto importante con le reti neurali. Verificherei la tesi di dottorato di Pichaid Varoonchotikul: "Previsioni di inondazioni utilizzando reti neurali artificiali" per i dettagli delle ANN. Ha avvertimenti molto interessanti. Ad ogni modo, sono abituato a provare prima senza, ma quando i risultati non sono soddisfacenti, sono abituato a fare prove con entrambi. Non sono sicuro che aiuterà, ma vorrei controllare il pacchetto R TSclust e i relativi documenti. Gli autori sono molto gentili e ti aiuteranno a trovare modelli specifici per farlo. Sono esperti nelle analisi delle serie storiche! In bocca al lupo!

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.