Inkrementelles Lernen für das LOESS-Zeitreihenmodell


9

Ich arbeite derzeit an einigen Zeitreihendaten. Ich weiß, dass ich das LOESS / ARIMA-Modell verwenden kann.

Die Daten werden in einen Vektor mit einer Länge von 1000 geschrieben. Dies ist eine Warteschlange, die alle 15 Minuten aktualisiert wird.

Somit werden die alten Daten herausspringen, während die neuen Daten den Vektor einschieben.

Ich kann das gesamte Modell auf einem Scheduler erneut ausführen, z. B. das Modell alle 15 Minuten neu trainieren, dh den gesamten 1000-Wert zum Trainieren des LOESS-Modells verwenden. Dies ist jedoch sehr ineffizient, da jedes Mal nur ein Wert eingefügt wird, während weitere 999 Werte verwendet werden immer noch das gleiche wie beim letzten Mal.

Wie kann ich also eine bessere Leistung erzielen?

Danke vielmals


3
Was ist ein "LOESS / ARIMA-Modell"? Meinten Sie einen nichtlinearen Zeittrend mit ARIMA-Fehlern, bei dem der nichtlineare Trend mit LOESS geschätzt wird?
Rob Hyndman

Entschuldigung, ich meine LOESS oder ARIMA Modell. zB benutze ich LOESS, um die Residuen zu finden als: Residuen (Löss (x ~ Zeit)). weil die Daten x ein Vektor mit 1000 Werten sind, der alle 15 Minuten aktualisiert wird. Wie kann ich die Residuen effizient abrufen, aber nicht jedes Mal das gesamte Datset als Eingabe erneut ausführen? Da jedes Mal nur 1 Wert aktualisiert wird, sind die anderen 999 Werte immer noch dieselben wie beim letzten Mal.
Zhang

Eine mögliche Methode: Verwenden Sie möglicherweise die ersten 1000 Werte, um die nächsten 1000 Werte vorherzusagen (obwohl LOESS nur die Vorhersage von 4 Werten unterstützt), und berechnen Sie dann den Rest als Differenz zwischen dem tatsächlichen Wert und dem entsprechenden Vorhersagewert. Trainieren Sie das Modell dann alle 1000 Werte neu. Dies ist nicht das ursprüngliche LOESS-Modell, das ich überhaupt möchte :-(
Zhang

Antworten:


1

Lassen Sie mich dies in etwas umformulieren, das mir vertrauter ist. Die ARIMA ist analog zur PID-Näherung. Ich bin ganzheitlich. MA ist P. Der AR kann als Differenzgleichungen ausgedrückt werden, die der D-Term sind. LOESS ist ein Analogon zur Anpassung der kleinsten Quadrate (Hightech-Big Brother wirklich).

Was könnte ich tun, wenn ich ein Modell zweiter Ordnung (PID) verbessern wollte?

  • Erstens könnte ich einen Kalman-Filter verwenden, um das Modell mit einer einzigen neuen Information zu aktualisieren.
  • Ich könnte mir auch etwas ansehen, das als "gradientenverstärkte Bäume" bezeichnet wird. Mit einem Analogon würde ich ein zweites ARIMA-Modell erstellen, dessen Eingaben beide die Roheingaben sind, die dem ersten zugeführt werden, ergänzt durch die Fehler des ersten.
  • Ich würde in Betracht ziehen, das PDF der Fehler für mehrere Modi zu betrachten. Wenn ich die Fehler gruppieren könnte, möchte ich möglicherweise Modelle aufteilen oder ein Mischungsmodell verwenden, um die Eingaben in Untermodelle zu unterteilen. Die Submodelle können die lokale Phänomenologie möglicherweise besser handhaben als ein einzelnes Modell im großen Maßstab.

Eine der Fragen, die ich nicht gestellt habe, ist "Was bedeutet Leistung?". Wenn wir kein klar angegebenes Maß für die Güte haben, kann man nicht sagen, ob sich eine Kandidatenmethode "verbessert". Anscheinend möchten Sie eine bessere Modellierung, kürzere Rechenzeit und eine effizientere Nutzung von Informationen. Eine Ephemeride über die tatsächlichen Daten kann dies ebenfalls informieren. Wenn Sie Wind modellieren, können Sie wissen, wo Sie nach erweiterten Modellen suchen oder Transformationen für Ihre Daten finden müssen, die nützlich sind.


1

Dies ist eine andere Frage, je nachdem, ob Sie ein Löss- oder ein ARIMA-Modell verwenden. Ich werde vorerst nur die Lössfrage beantworten, da ich vermute, dass im ARIMA-Fall nur geringe Effizienzvorteile möglich sind, außer vielleicht einen guten Satz von Startwerten zu haben.

Ein Lössmodell passt eine gewichtete Regression an verschiedene Teilmengen der Daten an. Für jede Anpassung wird nur ein Teil der Daten verwendet. Jedes Mal, wenn Sie das Modell neu anpassen, indem Sie einen Datenpunkt an einem Ende abgelegt und einen anderen am anderen Ende hinzugefügt haben, müssen Sie technisch nur die lokalen Regressionen anpassen, die den ersten und den letzten Punkt verwenden. Alle dazwischen liegenden lokalen Regressionen sind gleich. Wie viele dieser nicht betroffenen lokalen Regressionen es gibt, hängt von Ihrem Glättungsparameter im Löss ab.

Sie können jedes Paket hacken, das Sie für die Anpassung Ihres Modells verwenden, sodass die meisten lokalen Regressionen aus einer vorherigen Anpassung übernommen werden können und nur diejenigen, die am Anfang und Ende der Daten benötigt werden.

Es scheint mir jedoch, dass sich dies nur lohnt, wenn die Kosten für zusätzliche Programmierzeit wesentlich geringer sind als die Kosten für Computerzeit, wenn das Modell alle 15 Minuten von Grund auf neu montiert wird. Mit nur 1000 Datenpunkten ist es sicherlich nicht so wichtig, das Modell jedes Mal von Grund auf neu zu montieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.