Nauka przyrostowa dla modelu szeregów czasowych LOESS

9

Obecnie pracuję nad danymi z szeregów czasowych, wiem, że mogę używać modelu LOESS / ARIMA.

Dane są zapisywane w wektorze, którego długość wynosi 1000, co jest kolejką, aktualizowaną co 15 minut,

W ten sposób stare dane wyskoczą, a nowe dane wepchną wektor.

Mogę ponownie uruchomić cały model na harmonogramie, np. Ponownie szkolić model co 15 minut, to znaczy: Użyj całej wartości 1000 do wyszkolenia modelu LOESS, Jest to jednak bardzo nieefektywne, ponieważ za każdym razem wstawiana jest tylko jedna wartość, a kolejne 999 wartości wciąż taki sam jak ostatnim razem.

Jak mogę osiągnąć lepszą wydajność?

Wielkie dzięki

zhang
źródło
3
Co to jest „model LOESS / ARIMA”? Czy miałeś na myśli nieliniowy trend czasowy z błędami ARIMA, w którym trend nieliniowy jest szacowany za pomocą LOESS?
Rob Hyndman,
przepraszam, mam na myśli model LOESS lub ARIMA. np. używam LOESS do znalezienia resztek jako: resztek (less (czas x ~)). ponieważ dane x to wektor o wartości 1000, który aktualizuje się co 15 minut. Jak mogę efektywnie uzyskać resztki, ale nie mogę ponownie uruchamiać całego zestawu danych jako danych wejściowych za każdym razem? ponieważ tylko 1 wartość aktualizuje się za każdym razem, pozostałe 999 wartości są nadal takie same jak poprzednio.
zhang
jedną z możliwych metod, być może użyć pierwszych 1000 wartości, aby przewidzieć kolejne 1000 wartości (chociaż LOESS obsługuje tylko przewidywanie 4 wartości), a następnie obliczyć wartość resztkową jako różnicę między wartością rzeczywistą a odpowiadającą wartością prognozowaną. Następnie ponownie wyszkolić model co 1000 wartości Jednak to nie jest oryginalny model LOESS, którego w ogóle chcę :-(
zhang

Odpowiedzi:

1

Pozwólcie mi przeformułować to na coś bardziej znanego mi. ARIMA jest zbliżeniem do PID. Jestem integralna. MA oznacza P. AR można wyrazić jako równania różnicowe, które są składnikiem D. LOESS to odpowiednik najmniejszych kwadratów (naprawdę zaawansowany technologicznie starszy brat).

Więc jeśli chciałbym ulepszyć model drugiego rzędu (PID), co można by zrobić?

  • Po pierwsze, mógłbym użyć filtra Kalmana, aby zaktualizować model o jedną nową informację.
  • Mógłbym także spojrzeć na coś, co nazywa się „drzewami wzmocnionymi gradientem”. Korzystając z ich analogów, stworzyłbym drugi model ARIMA, którego dane wejściowe są surowymi danymi wejściowymi podawanymi do pierwszego, powiększonymi o błędy pierwszego.
  • Rozważałbym przeglądnięcie pliku PDF błędów dla wielu trybów. Gdybym mógł zgrupować błędy, mógłbym chcieć podzielić modele lub użyć modelu mieszanego, aby rozdzielić dane wejściowe na pod-modele. Subodele mogą być lepsze w radzeniu sobie z lokalną fenomenologią lepiej niż pojedynczy model na dużą skalę.

Jednym z pytań, których nie zadałem, jest „co oznacza wydajność?”. Jeśli nie mamy jasno określonej miary dobroci, nie ma sposobu, aby stwierdzić, czy metoda kandydacka „poprawia”. Wygląda na to, że potrzebujesz lepszego modelowania, krótszego czasu obliczeń i bardziej wydajnego wykorzystania informacji. Posiadanie efemeryd na temat rzeczywistych danych może również o tym poinformować. Jeśli modelujesz wiatr, możesz wiedzieć, gdzie szukać modeli rozszerzających lub znaleźć przydatne transformacje danych.

EngrStudent
źródło
1

To inne pytanie zależy od tego, czy korzystasz z modelu lessowego czy ARIMA. Na razie odpowiem tylko na mniejsze pytanie, ponieważ podejrzewam, że w przypadku ARIMA możliwe są niewielkie usprawnienia, być może poza dobrym zestawem wartości początkowych.

Model lessowy polega na dopasowaniu regresji ważonej do różnych podzbiorów danych. Do każdego dopasowania wykorzystywana jest tylko część danych. Dlatego za każdym razem, gdy zamykasz model, który zrzucił jeden punkt danych na jednym końcu i dodał inny na drugim końcu, technicznie wystarczy dopasować tylko lokalne regresje, które wykorzystują pierwszy i ostatni punkt. Wszystkie lokalne regresje pomiędzy nimi będą takie same. Dokładnie, ile jest tych nietkniętych lokalnych regresji, będzie zależeć od twojego parametru wygładzania w lessie.

Możesz zhakować dowolny pakiet, którego używasz, aby dopasować swój model, aby mógł on wziąć większość lokalnych regresji z poprzedniego dopasowania i dopasować tylko te, które są potrzebne na początku i na końcu danych.

Wydaje mi się jednak, że warto to zrobić tylko wtedy, gdy koszt dodatkowego czasu programowania byłby znacznie niższy niż koszt czasu komputerowego po prostu montażu modelu od zera co 15 minut. Mając tylko 1000 punktów danych, z pewnością za każdym razem dopasowanie modelu od podstaw nie jest takie duże.

Peter Ellis
źródło