Chciałbym zbudować algorytm, który byłby w stanie analizować dowolne szeregi czasowe i „automatycznie” wybierać najlepszą tradycyjną / statystyczną metodę prognozowania (i jej parametry) dla analizowanych danych szeregów czasowych.
Czy można by zrobić coś takiego? Jeśli tak, czy możesz dać mi kilka wskazówek, jak można do tego podejść?
time-series
forecasting
python
StatsNewbie123
źródło
źródło
Odpowiedzi:
Najpierw należy zauważyć, że podejście przedstawione przez IrishStat jest specyficzne dla modeli ARIMA, a nie dla ogólnego zestawu modeli.
Aby odpowiedzieć na główne pytanie „Czy można zautomatyzować prognozowanie szeregów czasowych?”:
Tak to jest. W moim obszarze prognozowania popytu robi to większość komercyjnych pakietów prognostycznych. Robi to również kilka pakietów open source, w szczególności funkcje auto.arima () Roba Hyndmana (automatyczne prognozowanie ARIMA) i ETS () (automatyczne prognozowanie wygładzania wykładniczego) z pakietu prognostycznego open source w R Zobacz tutaj szczegółowe informacje na temat tych dwóch funkcji . Istnieje również implementacja auto.arima w Pythonie o nazwie Pyramid , chociaż z mojego doświadczenia nie jest tak dojrzała jak pakiety R.
Zarówno wymienione przeze mnie produkty komercyjne, jak i wspomniane pakiety open source działają w oparciu o pomysł zastosowania kryteriów informacyjnych do wyboru najlepszej prognozy: pasujesz do kilku modeli, a następnie wybierasz model o najniższym AIC, BIC, AICc, itp .... (zwykle odbywa się to zamiast sprawdzania poprawności próby).
Istnieje jednak poważne zastrzeżenie: wszystkie te metody działają w ramach jednej rodziny modeli. Wybierają najlepszy możliwy model spośród zestawu modeli ARIMA lub najlepszy możliwy model spośród zestawu modeli wygładzania wykładniczego.
Jest to o wiele trudniejsze, jeśli chcesz wybierać z różnych rodzin modeli, na przykład jeśli chcesz wybrać najlepszy model z ARIMA, wygładzania wykładniczego i metody Theta. Teoretycznie możesz to zrobić w taki sam sposób, jak w obrębie jednej rodziny modeli, tj. Stosując kryteria informacyjne. Jednak w praktyce należy obliczyć AIC lub BIC dokładnie w ten sam sposób dla wszystkich rozważanych modeli, co stanowi poważne wyzwanie. Lepiej byłoby zastosować weryfikację krzyżową szeregów czasowych lub walidację poza próbą zamiast kryteriów informacyjnych, ale będzie to znacznie bardziej intensywne obliczeniowo (i uciążliwe dla kodu).
Pakiet Prophet Facebooka automatyzuje również generowanie prognoz na podstawie ogólnych modeli addytywnych. Zobacz tutaj, aby uzyskać szczegółowe informacje . Jednak Prorok pasuje tylko do jednego modelu, chociaż jest to bardzo elastyczny model z wieloma parametrami. Domniemane założenie Proroka jest takie, że GAM jest „jedynym modelem rządzącym nimi wszystkimi”, co może nie być teoretycznie uzasadnione, ale jest bardzo pragmatyczne i przydatne w rzeczywistych scenariuszach.
Kolejne zastrzeżenie, które dotyczy wszystkich wyżej wymienionych metod: Prawdopodobnie chcesz wykonać automatyczne prognozowanie szeregów czasowych, ponieważ chcesz prognozować wiele szeregów czasowych, zbyt wiele, aby analizować ręcznie. W przeciwnym razie możesz po prostu przeprowadzić własne eksperymenty i samodzielnie znaleźć najlepszy model. Należy pamiętać, że zautomatyzowane prognozowanie nigdy nie znajdzie najlepszego modelu dla każdej serii czasowej - da przeciętnie całkiem dobry model dla wszystkich szeregów czasowych, ale nadal możliwe jest, że niektóre z tych szeregów czasowych będą miały lepsze modele niż te wybrane metodą automatyczną. Zobacz ten postna przykład tego. Krótko mówiąc, jeśli zamierzasz korzystać z automatycznego prognozowania - będziesz musiał tolerować prognozy „wystarczająco dobre” zamiast najlepszych możliwych prognoz dla każdej serii czasowej.
źródło
Moje sugerowane podejście obejmuje modele, które są znacznie bardziej ogólne niż ARIMA, ponieważ obejmują potencjał sezonowych manekinów, które mogą się zmieniać w czasie, wiele poziomów, wiele trendów, parametry, które mogą się zmieniać w czasie, a nawet wariancje błędów, które mogą się zmieniać w czasie. Ta rodzina jest bardziej precyzyjnie nazywana modelami ARMAX, ale dla pełnej przejrzystości wyklucza (rzadki) wariant, który ma strukturę multiplikatywną.
Poprosiłeś o wskazówki i uważam, że może to być dobry początek.
Sugerowałbym napisanie kodu, aby śledzić / emulować ten schemat blokowy / przepływ pracy. „Najlepszy model” można znaleźć, oceniając określone przez ciebie kryterium ... może to być MSE / AIC dopasowanych danych lub może to być MAPE / SMAPE ukrytych danych lub dowolne wybrane kryterium.
Pamiętaj, że wyszczególnienie każdego z tych kroków może być dość proste, jeśli nie znasz niektórych szczegółowych wymagań / celów / ograniczeń analizy szeregów czasowych, ALE może być (powinno być!) Bardziej złożone, jeśli masz głębsze zrozumienie / poznanie / zrozumienie zawiłości / możliwości obecnych w dokładnej analizie szeregów czasowych.
Poproszono mnie o podanie dalszych wskazówek, jak należy zautomatyzować modelowanie szeregów czasowych (lub ogólnie modelowanie) /stats//search?q=peeling+an+onion zawiera niektóre z moich wskazówek na temat „obieranie cebuli” i powiązane zadania.
AUTOBOX tak naprawdę opisuje szczegóły i pokazuje kroki pośrednie, ponieważ tworzy użyteczny model i może być przydatnym nauczycielem w tym zakresie. Cały pomysł naukowy polega na „dodaniu tego, co wydaje się potrzebne” i „usunięciu tego, co wydaje się mniej niż przydatne”. Jest to proces iteracyjny sugerowany wcześniej przez Boxa i Bacona.
Modele muszą być wystarczająco złożone (wystarczająco fantazyjne), ale niezbyt złożone (fantazyjne). Zakładanie, że proste metody działają ze złożonymi problemami, nie jest zgodne z metodą naukową podążającą za Rogerem Baconem i mnóstwem zwolenników Bacona. Jak powiedział kiedyś Roger Bacon i często parafrazowałem: „Robienie nauki to poszukiwanie powtarzających się wzorów. Aby wykryć anomalie, należy zidentyfikować wartości, które nie są zgodne z powtarzającymi się wzorami. Każdy bowiem, kto zna drogi Natury, z łatwością zauważy jej odchylenia, a z drugiej strony, kto zna jej odchylenia, dokładniej opisa swoje odchylenia. Uczy się reguł, obserwując, kiedy zawodzą obecne reguły. W spironie Bacon, identyfikując, kiedy aktualnie zidentyfikowany „najlepszy model / teoria” jest nieodpowiedni, można następnie przejść do „lepszej reprezentacji”
Według moich słów „Tukey zaproponował Exploratory Data Analysis (EDA), która sugerowała schematy udoskonalenia modelu w oparciu o oczywisty niedobór modelu sugerowany przez dane”. To serce AUTOBOX i nauki. EDA ma na celu sprawdzenie, co dane mogą nam powiedzieć poza formalnym zadaniem modelowania lub testowania hipotez.
Test lakmusowy programu do automatycznego modelowania jest dość prosty. Czy oddziela sygnał i szum bez nadmiernego dopasowania? Dowody empiryczne sugerują, że można to zrobić. Dokładności prognozowania są często mylące, ponieważ przyszłość nie ponosi odpowiedzialności za przeszłość i zależnie od tego, które pochodzenie wybierzesz, wyniki mogą się różnić.
źródło