Pytanie:
Strategie prognozowania szeregów czasowych dla 2000 różnych produktów?
Amonet
2019-01-26 22:12:10 UTC
view on stackexchange narkive permalink

Przede wszystkim zdaję sobie sprawę, że moje pytanie jest bardzo szerokie i że może być trudno odpowiedzieć na to pytanie z tego powodu.

Czy masz jakieś rady, jak podejść do „problemu”, w którym musisz sporządzić prognozy / przewidywania dla ponad 2000 różnych produktów? Innymi słowy, każdy produkt wymaga innej prognozy / prognozy. Mam dane historyczne z 2 lat na poziomie tygodniowym (tj. Tygodniowe zapotrzebowanie na produkt).

Muszę to zrobić w krótkim czasie: mam na to około tygodnia, dlatego szukam sposobów na szybkie stworzenie stosunkowo dobrych modeli predykcyjnych. Tworzenie modelu dla każdego produktu i dokładne sprawdzanie jego działania, jeden po drugim, byłoby zbyt czasochłonne.

Pomyślałem o segmentacji produktów na podstawie wariancji , aby móc zastosować proste modele dla produktów o niskiej wariancji. Chociaż prawdopodobnie nie jest to idealne rozwiązanie, byłby to szybki sposób na zawężenie liczby modeli, które muszę utworzyć.

Byłbym bardzo wdzięczny, gdybyś miał dla mnie jakieś praktyczne rady dotyczące rozwiązania tego problemu.

Czy to podobne produkty?Możesz skorzystać z przeszukiwania tej witryny pod kątem prognoz hierarchicznych
Trzy odpowiedzi:
Skander H.
2019-01-27 03:38:18 UTC
view on stackexchange narkive permalink

Kontynuacja odpowiedzi @StephanKolassa:

  • Zgadzam się ze Stephanem, że ETS () z pakietu prognozy w R jest prawdopodobnie najlepszym i najszybszym wyborem. Jeśli ETS nie daje dobrych wyników, możesz również chcieć użyć pakietu Facebooka Prophet (Auto.arima jest łatwy w użyciu, ale dwa lata tygodniowych danych graniczy za mało danych dla modelu ARIMA z mojego doświadczenia). Osobiście uważam, że Prophet jest łatwiejszy w użyciu, gdy masz dostępne promocje i dane dotyczące wydarzeń świątecznych, w przeciwnym razie ETS () może działać lepiej. Twoim prawdziwym wyzwaniem jest raczej wyzwanie związane z kodowaniem, polegające na tym, jak efektywnie iterować algorytm prognozowania w dużej liczbie szeregów czasowych. Możesz sprawdzić tę odpowiedź, aby uzyskać więcej informacji na temat automatyzacji generowania prognoz.

  • W prognozowaniu popytu często wykonywana jest pewna forma prognozowania hierarchicznego, tj. masz 2000 produktów i potrzebujesz osobnej prognozy dla każdego oddzielnego produktu, ale istnieją podobieństwa między produktami, które mogą pomóc w prognozowaniu. Chcesz znaleźć sposób na pogrupowanie produktów według hierarchii produktów, a następnie użyć prognozowania hierarchicznego, aby zwiększyć dokładność. Ponieważ szukasz prognoz na poziomie poszczególnych produktów, spróbuj zastosować podejście hierarchiczne odgórne.

  • Coś trochę bardziej naciąganego, ale chciałbym to wyjaśnić: Amazon i Uber używają sieci neuronowych do tego typu problemów, gdzie zamiast mieć osobną prognozę dla każdego produktu / serii czasowej, używają jednej gigantyczna cykliczna sieć neuronowa do zbiorczego prognozowania wszystkich szeregów czasowych. Zwróć uwagę, że nadal kończą się indywidualnymi prognozami dla każdego produktu (w przypadku Ubera jest to ruch / popyt na miasto, a nie produkty), po prostu używają dużego modelu (model głębokiego uczenia LSTM), aby zrobić to wszystko na raz. Pomysł jest podobny w duchu do prognoz hierarchicznych w tym sensie, że sieć neuronowa uczy się na podstawie podobieństw między historiami różnych produktów, aby opracowywać lepsze prognozy. Zespół Ubera udostępnił część swojego kodu ( przez repozytoria M4 na Githubie), jednak jest to kod C ++ (nie do końca ulubiony język tłumu statystyk). Podejście Amazon nie jest open source i do prognozowania musisz używać ich płatnej usługi Amazon Forecast.


A propos Twojego drugiego komentarza: musisz dokonać rozróżnienia między prognozowaniem sprzedaży a prognozowaniem popytu. Popyt jest nieograniczony, jeśli nagle jakiś przedmiot staje się popularny, a Twoi klienci chcą 200 sztuk, nie ma znaczenia, że ​​masz tylko 50 sztuk pod ręką, Twoje zapotrzebowanie nadal będzie wynosić 200 sztuk.

W praktyce bardzo trudno jest bezpośrednio obserwować popyt, dlatego używamy sprzedaży jako wskaźnika popytu. Ma to problem, ponieważ nie uwzględnia sytuacji, w których klient chciał kupić produkt, ale był on niedostępny. Aby temu zaradzić, wraz z historycznymi danymi sprzedaży, informacje o poziomach zapasów i wyczerpanych zapasach są albo bezpośrednio zawarte w modelu, albo używane do wstępnego przetwarzania szeregów czasowych przed wygenerowaniem modelu do prognozowania.

Zazwyczaj nieograniczona prognoza jest generowana najpierw przez silnik prognoz, a następnie przekazywana do systemu planowania, który następnie dodaje wspomniane ograniczenia (tj. zapotrzebowanie wynosi 500 jednostek, ale dostępnych jest tylko 300 jednostek) wraz z innymi ograniczeniami (zapasy bezpieczeństwa,zapasy prezentacyjne, ograniczenia budżetowe, plany promocji lub wprowadzenia nowych produktów itp.) - jednakże jest to objęte ogólnym zakresem planowania i zarządzania zapasami, a nie prognozowania per se .

Odpowiadając na Twój drugi punkt, mam rodziny / kategorie produktów dla każdego z produktów.Jeśli dobrze rozumiem twoją sugestię, sporządziłbym prognozę na poziomie rodziny produktów, a następnie nie zgodziłbym się na poziom produktu, prawda?
Czy oprócz powyższego byłoby możliwe uwzględnienie ograniczeń?Na przykład: jeśli w magazynie jest 300 produktów, popyt (czytaj: sprzedaż) nie może przekroczyć 300 produktów.Czy może jest to wada hierarchicznego prognozowania (z góry na dół), ponieważ w moim przypadku ta informacja o ograniczeniu byłaby na jeszcze niższym poziomie niż poziom produktu (tj. Poziom zapasów lokalizacji)
@Amonet "Chciałbym sporządzić prognozę na poziomie rodziny produktów, a następnie nie zgodzić się na poziom produktu, prawda?"Tak.
@Amonet Odnośnie drugiego punktu: Zobacz zmianę dodaną do odpowiedzi.
+1, wszystkie bardzo dobre punkty.Jeśli chodzi o prognozowanie hierarchiczne, jestem wielkim fanem [optymalnego uzgodnienia] (https://otexts.com/fpp2/reconciliation.html), które ja i inni wielokrotnie stwierdziliśmy, że osiąga lepsze wyniki niż odgórne i oddolne we * wszystkich *poziomy hierarchii.Ponadto jest to algorytm optymalizacji, więc można brać pod uwagę ograniczenia.(Na przykład, jeśli niektóre szeregi mają małą objętość, nieograniczone uzgadnianie może prowadzić do negatywnych prognoz.) Zgadzam się jednak, że należy dążyć do nieocenzurowanych prognoz popytu ...
... Ponadto Amazon opublikował pewne badania dotyczące ich prognoz, np. [Tutaj] (https://arxiv.org/abs/1704.04110) i [tutaj] (https://www.researchgate.net/publication/319594287_Probabilistic_demand_forecasting_at_scale) i [tutaj] (https://papers.nips.cc/paper/6313-bayesian-intermittent-demand-forecasting-for-large-inventories).Nie jest to jednak dla osób o słabych nerwach i ...
... Zawsze zalecałbym [najpierw zacząć od prostych metod prognozowania] (https://stats.stackexchange.com/a/124956/1352), które mogą być zaskakująco trudne do pokonania.[Zobacz także tutaj.] (Https://www.sciencedirect.com/journal/journal-of-business-research/vol/68/issue/8)
Dziękuję wam obojgu za udzielenie tak pomocnych informacji!Chciałbym zadać jedno dodatkowe pytanie.Produkty, dla których potrzebuję prognozowania, są sprzedawane w różnych lokalizacjach.Dla niektórych lokalizacji mam dane tygodniowe z 2 lat, dla innych tylko 6 miesięcy, w których 6 miesięcy w pełni pokrywa się z danymi z 2 lat (tj .: po 18 miesiącach inna lokalizacja zaczyna sprzedawać produkt).Moje pytanie brzmi: jak mogę to zintegrować z moim modelem, aby zrozumiał, że potencjalny szczyt sprzedaży jest prawdopodobnie spowodowany inną lokalizacją sprzedającą produkt?Czy można to również zrobić za pomocą prostszych modeli?
Jestem trochę zaskoczony, że dwa lata tygodniowych danych to za mało dla ARIMY ... Czy mógłbyś zasugerować, jaki horyzont prognoz rozważałeś?Ponadto:, @StephanKolassa: Chociaż zgadzam się, że uzgodnienie prognozy może być często korzystne, dynamika musi być w większości stabilna.Na przykład, jeśli na rynku pojawią się nowe produkty, które mogą naprawdę zepsuć szacunki proporcji „hts”, ponieważ proporcje są rozwiązywane przy użyciu danych historycznych.(Co jest właściwie przypadkiem użycia opisanym w OP). Twierdziłbym więc, że należy uważać na łatwe pogodzenie.
@usεr11852: dwa lata to tylko dwa cykle.W różnicowaniu sezonowym tracimy jeden cykl.Tak więc sezonowa ARIMA traci połowę swoich danych tylko przez różnicowanie.Nie użyłbym sezonowego ARIMA z mniej niż pięcioma cyklami danych....
@usεr11852: ... Trochę nie wiem, co masz na myśli, mówiąc, że „proporcje są rozwiązywane na podstawie danych historycznych”.Tak, `hts` oferuje wiele sposobów uzgadniania hierarchii, a szczególnie odgórne wymaga prognozy proporcji (zwykle używana jest prognoza naiwna, po prostu przenosząc poprzednie proporcje do przodu).Jednak podejście „optymalnej kombinacji”, które polecam, nie wykorzystuje proporcji - tylko informację, które prognozy muszą być sumarycznie spójne.Może odnosisz się tylko do odgórnych?
@StephanKolassa: Ooff ... Masz rację co do ARIMA;krótkowzrocznie nie rozważałem modeli SARIMY.Przeprosiny.Odnośnie optymalnego pojednania: użyłem `method =" comb "`;z tego, co pamiętam, dolne serie mniejszych, które niedawno przeszły transformację, gdzie w indywidualnych prognozach były „dobre”, ale przy zastosowaniu uzgodnienia zostały podniesione (lub obniżone) ich średnie historyczne.Podejrzewam, że stało się tak, że wyższe serie były ogólnie stabilne, dolne serie o większej wielkości, gdzie OK, i serie o niższej głośności, doświadczyły wielu zniekształceń (cd.)
ponieważ „redystrybucja” RMSE zepsuła je „tak samo”, jak inne dolne serie „regularnych tomów”.Postaram się znaleźć te analizy w ciągu najbliższych kilku dni i ewentualnie skomentować w pokoju dyskusyjnym.(I dla porządku, zagłosowałem za oba posty, kiedy skomentowałem.)
@Amonet „Dla niektórych lokalizacji mam dane tygodniowe z 2 lat, dla innych tylko 6 miesięcy, w których 6 miesięcy w pełni pokrywa się z danymi z 2 lat” - to jedna z sytuacji, w których pomaga prognozowanie hierarchiczne - chociaż teraz trzeba pomyśleć o obuhierarchia produktów i hierarchia lokalizacji (w celu grupowania podobnych sklepów).
@usεr11852: przypomina mi to niektóre analizy, które przeprowadziłem, w których dolne szeregi zostały skorygowane „za bardzo”, mówiąc relatywnie, ponieważ dostosowania są mniej więcej zrównoważone w wartościach bezwzględnych, a nie procentowych.Następnie użyłem `mgcv :: pcls ()` do uzgodnienia, ręcznie wprowadzając macierz sumowania.Miało to dwie zalety: (1) pozwala na ustawienie ograniczeń pola, np. Aby zapewnić, że uzgodnione prognozy są nieujemne, (2) umożliwia zważenie korekt, więc właśnie użyłem odwrotności średniej historycznej każdego szeregujako wagę, która rozwiązała problem dostosowania.
@StephanKolassa Dziękuję;Sprawdzę to w przyszłości.
Stephan Kolassa
2019-01-26 22:27:27 UTC
view on stackexchange narkive permalink

Będziemy mogli udzielić tylko bardzo ogólnych porad.

  • Czy istnieją silne czynniki, takie jak promocje lub wydarzenia w kalendarzu, sezonowość, trendy lub cykle życia? Jeśli tak, uwzględnij je w swoich modelach. Na przykład możesz regresować sprzedaż w przypadku promocji, a następnie modelować wartości resztowe (używając wygładzania wykładniczego lub ARIMA).
  • Istnieją pakiety oprogramowania, które całkiem dobrze radzą sobie z dopasowywaniem wielu modeli szeregów czasowych do serii. Następnie możesz po prostu powtórzyć serię 2000, co nie powinno zająć dużo więcej czasu niż filiżanka kawy. Szczególnie polecam funkcję ets () w pakiecie prognoza w języku R. (mniej niż funkcja auto.arima () dla danych tygodniowych.
  • Przynajmniej przejrzyj podręcznik prognozowania, np. ten. Wykorzystuje pakiet prognoza , który polecam powyżej.
  • Jaki jest Twój ostateczny cel? Chcesz mieć obiektywną prognozę? Następnie oceń prognozy punktowe za pomocą MSE. Czy twój bonus będzie zależał od MAPE? Wtedy ta lista problemów MAPE może być pomocna. Czy potrzebujesz prognoz, aby ustalić bezpieczne kwoty? Wtedy potrzebne są prognozy kwantylowe, a nie średnie prognozy. (Funkcje w pakiecie prognoza mogą Ci to zapewnić).

Jeśli masz bardziej szczegółowe pytania, zamieść je w CV.

Przykro mi z powodu tego małego, niezwiązanego z tematem pytania, ale jaki materiał na temat prognozowania (ogólnie) poleciłbyś po przestudiowaniu „Przewidywanie: zasady i praktyka”, o którym wspomniałeś?:-)
@ ŁukaszGrad: jeśli przeszedłeś już FPP2, [nasza książka] (http://www.businessexpertpress.com/books/demand-forecasting-managers/) nie powie Ci wiele nowego.Ord et al. * Principles of Business Forecasting * (2nd ed.) Jest bardziej szczegółowe ([Sprawdziłem to tutaj] (https://doi.org/10.1016/j.ijforecast.2017.10.003), jeślidostęp)....
... Możesz skorzystać z obejrzenia [IIF] (https://forecasters.org/), może przeczytać jego publikację [* Foresight *] (https://foresight.forecasters.org/) lub wziąć udział w jednym z jegokonferencje, albo [ISF] (https://isf.forecasters.org/), które odbędą się w tym roku w czerwcu w Salonikach, albo Foresight Practitioner Conference, w tym roku w listopadzie w kampusie SAS w Cary, NC,w zależności od tego, gdzie jesteś.ISF jest nieco bardziej zorientowany na naukę, ale ostatnio powiedziałbym, że około 33% uczestników pochodziło z przemysłu i zazwyczaj jest tam ścieżka dla praktyków.
(Pełne ujawnienie: jestem zaangażowany w to wszystko, więc traktuj moje zalecenia z dużym przymrużeniem oka. Jeśli weźmiesz udział w jednej z konferencji, znajdź mnie i przywitaj się!)
Dziękuję za wszystkie szczegółowe informacje!Muszę powiedzieć, że odkryłem FPP2 poprzez jeden z twoich innych postów tutaj w CV i myślę, że to świetna książka.Prognozowanie to coś, czego zaniedbałem w przeszłości :-)
@StephanKolassa jak uzyskać prognozy kwantyli za pomocą pakietu prognozy?
@SkanderH: użyj polecenia `prognoza ()` na dopasowanym modelu (tj. Wyniku działania `ets ()` lub `auto.arima ()`) i określ parametr `level`.Zobacz `? Prognoza.ets` i`? Prognoza.Arima` (zwróć uwagę na wielkie litery).
@StephanKolassa Przyjąłem drugą odpowiedź, ponieważ jest to kontynuacja twojej odpowiedzi, a zatem ludzie są bardziej skłonni również przeczytać twoje pomocne rady.
IrishStat
2019-01-26 22:23:56 UTC
view on stackexchange narkive permalink

Segmentowanie na podstawie wariancji oryginalnej serii nie ma dla mnie sensu, ponieważ najlepszy model powinien być niezmienny względem skali.Rozważ szereg ... wymodeluj go, a następnie pomnóż każdą wartość w szeregu czasowym przez 1000.

Jeśli chodzi o równania wytwarzane masowo, które mogą mieć zarówno strukturę deterministyczną (impulsy / przesunięcie poziomu / lokalne trendy czasowe), ALBO albo autoregresyjną sezonowość, jak i strukturę arim, należy uruchomić skrypt komputerowy.Uważaj na proste rozwiązania auto-arima, które nie zakładają żadnej deterministycznej struktury LUB ustalonych założeń dotyczących tego samego.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...