Apprendimento incrementale per il modello di serie storiche LOESS


9

Attualmente sto lavorando su alcuni dati di serie storiche, so di poter utilizzare il modello LOESS / ARIMA.

I dati vengono scritti su un vettore la cui lunghezza è 1000, ovvero una coda, che si aggiorna ogni 15 minuti,

Pertanto, i vecchi dati verranno visualizzati mentre i nuovi dati vengono inseriti nel vettore.

Posso rieseguire l'intero modello su uno scheduler, ad esempio riqualificare il modello ogni 15 minuti, ovvero utilizzare l'intero valore 1000 per addestrare il modello LOESS, tuttavia è molto inefficiente, poiché ogni volta viene inserito solo un valore mentre altri 999 valori sempre come l'ultima volta.

Quindi, come posso ottenere prestazioni migliori?

Grazie molto


3
Che cos'è un "modello LOESS / ARIMA"? Intendevi una tendenza temporale non lineare con errori ARIMA in cui la tendenza non lineare è stimata utilizzando LOESS?
Rob Hyndman,

scusate intendo modello LOESS o ARIMA. ad es. uso LOESS per trovare i residui come: residui (loess (x ~ time)). perché il dato x è un vettore con 1000 valori, che si aggiorna ogni 15 minuti. Come posso ottenere in modo efficiente i residui, ma non rieseguire l'intero set di dati come input ogni volta? dato che ogni volta viene aggiornato solo 1 valore, gli altri 999 sono sempre gli stessi dell'ultima volta.
Zhang,

un possibile metodo, forse utilizzare i primi 1000 valori per prevedere i successivi 1000 valori (anche se LOESS supporta solo la previsione di 4 valori), quindi calcolare il residuo come differenza tra il valore reale e il corrispondente valore di previsione. Quindi riqualificare il modello ogni 1000 valori Tuttavia, questo non è il modello LOESS originale che voglio affatto :-(
zhang

Risposte:


1

Consentitemi di riformulare questo in qualcosa di più familiare per me. L'ARIMA è un'analoga approssimazione PID. Io è integrale. MA è P. l'AR può essere espresso come equazioni di differenza che sono il termine D. LOESS è un analogo adatto ai minimi quadrati (fratello maggiore high-tech davvero).

Quindi, se volessi migliorare un modello del secondo ordine (PID), cosa potrei fare?

  • Innanzitutto, potrei usare un filtro Kalman per aggiornare il modello con un singolo pezzo di nuove informazioni.
  • Potrei anche guardare qualcosa chiamato "alberi a gradiente". Usando un analogo di questi, farei un secondo modello ARIMA i cui input sono entrambi gli input grezzi alimentati al primo, aumentati con gli errori del primo.
  • Vorrei considerare il PDF degli errori per più modalità. Se potessi raggruppare gli errori, allora potrei voler dividere i modelli o utilizzare un modello Mixture per separare gli input in sottomodelli. I sottomodelli potrebbero essere più bravi a gestire la fenomenologia locale meglio di un singolo modello su larga scala.

Una delle domande che non sono riuscito a porre è "che cosa significa performance?". Se non abbiamo una misura di bontà chiaramente dichiarata, allora non c'è modo di dire se un metodo candidato "migliora". Sembra che tu voglia una migliore modellazione, tempi di calcolo più brevi e un uso più efficiente delle informazioni. Avere effemeridi sui dati reali può anche informare questo. Se stai modellando il vento, puoi sapere dove cercare i modelli in aumento o trovare utili trasformazioni per i tuoi dati.


1

Questa è una domanda diversa a seconda che tu stia usando un modello loima o ARIMA. Risponderò solo alla domanda di loess per ora, poiché sospetto che ci siano poche efficienze possibili nel caso ARIMA oltre a possedere un buon insieme di valori iniziali.

Un modello di loess funziona adattando una regressione ponderata a diversi sottoinsiemi di dati. Solo una parte dei dati viene utilizzata per ogni adattamento. Pertanto, ogni volta che si rimonta il modello dopo aver lasciato cadere un punto dati a un'estremità e averne aggiunto un altro all'estremità opposta, tecnicamente è necessario solo adattarsi alle regressioni locali che utilizzano il primo e l'ultimo punto. Tutte le regressioni locali nel mezzo saranno le stesse. Il numero esatto di queste regressioni locali non influenzate dipenderà dal parametro di livellamento nel loess.

È possibile hackerare qualsiasi pacchetto che si sta utilizzando per adattarsi al proprio modello in modo che possa accettare la maggior parte delle regressioni locali da un adattamento precedente e adattarsi solo a quelli necessari all'inizio e alla fine dei dati.

Tuttavia, mi sembrerebbe che valesse la pena farlo solo se il costo in termini di tempo di programmazione extra era materialmente inferiore al costo in tempo del computer di montare il modello da zero ogni 15 minuti. Con solo 1000 punti dati sicuramente non è una cosa così grande adattarsi ogni volta al modello da zero.

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.