Jakiego algorytmu można użyć do przewidywania zużycia materiałów eksploatacyjnych na podstawie danych z poprzednich zakupów?

10

Myśląc o rzekomo prostym, ale interesującym problemie, chciałbym napisać kod do prognozowania materiałów eksploatacyjnych, których będę potrzebować w najbliższej przyszłości, biorąc pod uwagę pełną historię moich poprzednich zakupów. Jestem pewien, że ten rodzaj problemu ma bardziej ogólną i dobrze przestudiowaną definicję (ktoś zasugerował, że jest to związane z niektórymi koncepcjami w systemach ERP i tym podobnych).

Dane, które posiadam, to pełna historia poprzednich zakupów. Powiedzmy, że patrzę na materiały papiernicze, moje dane wyglądają (data, arkusze):

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

nie jest „próbkowany” w regularnych odstępach czasu, więc myślę, że nie kwalifikuje się jako dane szeregów czasowych .

Za każdym razem nie mam danych na temat faktycznych stanów magazynowych. Chciałbym użyć tych prostych i ograniczonych danych, aby przewidzieć, ile papieru będę potrzebować (na przykład) 3,6,12 miesięcy.

Do tej pory dowiedziałem się, że to, czego szukam, nazywa się Ekstrapolacja i niewiele więcej :)

Jakiego algorytmu można użyć w takiej sytuacji?

A jaki algorytm, choć różny od poprzedniego, mógłby również skorzystać z kilku dodatkowych punktów danych podających bieżące poziomy podaży (np. Jeśli wiem, że w dniu XI pozostało Y arkuszy papieru)?

Jeśli znasz lepszą terminologię, możesz edytować pytanie, tytuł i tagi.

EDYCJA: dla tego, co jest warte, będę próbował kodować to w Pythonie. Wiem, że istnieje wiele bibliotek, które implementują mniej więcej dowolny algorytm. W tym pytaniu chciałbym zapoznać się z pojęciami i technikami, których można by użyć, a faktyczną implementację pozostawić czytelnikowi jako ćwiczenie.

Luke404
źródło
1
drodzy statystycy, chcę tylko poinformować, że to pytanie nie zostało porzucone. Wrócę do tego konkretnego problemu, jak tylko znajdę czas i motywację (czytaj: szef każe mi to zrobić) i zbadam twoje cenne odpowiedzi i ostatecznie oznaczę jedną jako zaakceptowaną (co dla mnie będzie oznaczać „faktycznie wdrożone”).
Luke404,

Odpowiedzi:

12

Pytanie dotyczy wskaźnika zużycia w funkcji czasu. Wymaga to regresji stawki względem czasu ( nie regresji całkowitych zakupów w czasie). Ekstrapolacja odbywa się poprzez konstruowanie limitów prognoz dla przyszłych zakupów.

Możliwych jest kilka modeli. Biorąc pod uwagę przeniesienie do biura elektronicznego (które trwa od około 25 lat :-), możemy przyjąć model wykładniczy (zmniejszenie). Wynik przedstawiono na poniższym wykresie rozrzutu zużycia, na którym narysowana jest krzywa wykładnicza (dopasowana zwykłymi najmniejszymi kwadratami do logarytmów zużycia) i jej 95% granice predykcji. Wartości ekstrapolowane powinny znajdować się w pobliżu linii i między granicami prognozowania z 95% pewnością.

Postać

Oś pionowa pokazuje strony dziennie w skali liniowej. Ciemnoniebieska linia ciągła jest dopasowana: jest naprawdę wykładnicza, ale jest niezwykle bliska liniowości. Efekt dopasowania wykładniczego pojawia się w pasmach predykcyjnych, które na tej liniowej skali są asymetrycznie rozmieszczone wokół dopasowania; w skali logarytmicznej byłyby symetryczne.

Bardziej precyzyjny model uwzględniałby fakt, że informacje o zużyciu są bardziej niepewne w krótszych okresach czasu (lub gdy całkowite zakupy są mniejsze), które można dopasować przy użyciu ważonych najmniejszych kwadratów. Biorąc pod uwagę zmienność tych danych i przybliżoną równość wielkości wszystkich zakupów, nie jest to warte dodatkowego wysiłku.

Podejście to uwzględnia dane dotyczące zapasów pośrednich , które można wykorzystać do interpolacji wskaźników zużycia w czasie pośrednim. W takim przypadku, ponieważ średnie ilości zużycia mogą się znacznie różnić, wskazane byłoby podejście ważone metodą najmniejszych kwadratów.

Jakich wag użyć? Możemy rozważyć zużycie papieru, które koniecznie gromadzi się w całkowitych ilościach papieru, jako liczbę, która zmienia się niezależnie od dnia na dzień. W krótkich okresach wariancja zliczania byłaby zatem proporcjonalna do długości okresu. Wariancja zliczenia na dzień byłaby wówczas odwrotnie proporcjonalna do długości okresu. W związku z tym wagi powinny być wprost proporcjonalne proporcjonalne do okresów między zapasami. Na przykład zużycie 1000 arkuszy między 2007-05-10 a 2007-11-11 (około 180 dni) miałoby prawie pięciokrotnie większą wagę niż zużycie 1000 arkuszy między 2007-11-11 a 2007-12- 18, okres tylko 37 dni.

Tę samą wagę można uwzględnić w przedziałach prognoz. Spowodowałoby to stosunkowo szerokie przedziały dla prognoz zużycia w ciągu jednego dnia w porównaniu z prognozami zużycia w ciągu, powiedzmy, trzech miesięcy.

Należy pamiętać, że te sugestie koncentrują się na prostych modelach i prostych prognozach, odpowiednich do zamierzonej aplikacji i oczywistej dużej zmienności danych. Gdyby prognozy dotyczyły, powiedzmy, wydatków na obronę dla dużego kraju, chcielibyśmy uwzględnić o wiele więcej zmiennych objaśniających, uwzględnić korelację czasową i podać znacznie bardziej szczegółowe informacje w modelu.

Whuber
źródło
czy dane byłyby pobierane w regularnych odstępach czasu, czy właściwe byłoby stosowanie obliczeń w przeciwieństwie do wskaźników ?
MannyG
1
@MannyG Tak, ale tylko dlatego, że liczby byłyby wprost proporcjonalne do stawek, a nie dlatego, że stosowne byłoby korzystanie z samych liczb. Konieczność zastosowania stawek tutaj jest oczywista, gdy weźmiemy pod uwagę, co tak naprawdę oznacza przewidywanie przyszłej wartości: musisz określić przedział czasu przewidywanego zużycia. W ten sposób prognozuje się ilość razy razy, aby uzyskać ilość, co oznacza, że ​​ta ilość musi być ilością na jednostkę czasu: stopą zużycia .
whuber
@whuber Przepraszam, ale nie mogę jasno zrozumieć, które modele są opisane w twojej odpowiedzi i w których punktach jeden się kończy, a drugi zaczyna. Mam podobny problem, a część twojej odpowiedzi wydaje się dokładnie tym, czego potrzebuję, ale muszę zrobić więcej badań na ten temat i nie mogę powiedzieć, czytając twoją odpowiedź, jeśli mówisz o odrębnych modelach lub pewnym, że jest stopniowo ulepszany. Czy istnieje formalna nazwa modelu z opisywanymi wagami? Czy twój pierwszy model (wykładniczy spadek) obejmuje wagi? Z góry dziękuję.
Agis,
@rensokuken Opisuję jeden model i odmianę ważącą dane. Druga połowa tej odpowiedzi sugeruje, jak określić wagi. Nie znam żadnej formalnej nazwy poza „najmniej ważonymi kwadratami”.
whuber
@ whuber Rozumiem. Na początku opisujesz to, a następnie dodając ciężary, opisujesz to , prawda? Czy masz też jakieś zasoby do obejrzenia, związane z danym rozwiązaniem i dla początkujących w prognozowaniu? Dziękuję za wyjaśnienie.
Agis
5

To zdecydowanie problem uczenia maszynowego (zaktualizowałem tagi w twoim poście). Najprawdopodobniej jest to regresja liniowa . Krótko mówiąc, regresja liniowa próbuje odzyskać związek między 1 zmienną zależną a 1 lub więcej zmiennymi niezależnymi. Zmienna zależna tutaj to zużycie materiałów eksploatacyjnych . W przypadku zmiennych niezależnych sugeruję odstępy czasu między zakupami. Możesz także dodać więcej niezależnych zmiennych, na przykład liczbę osób, które w danym momencie korzystały z materiałów eksploatacyjnych lub cokolwiek innego, co może wpłynąć na ilość zakupów. Dobry opis regresji liniowej wraz z implementacją w Pythonie można znaleźć tutaj .

Teoretycznie możliwe jest również, że nie tylko odstępy czasu między zakupami, ale także same chwile w czasie wpływają na kwoty. Na przykład z jakiegoś powodu w styczniu ludzie mogą chcieć więcej papieru niż, powiedzmy, w kwietniu. W takim przypadku nie można użyć liczby miesięcy jako zmiennej niezależnej ze względu na samą naturę regresji liniowej (liczba miesięcy jest tylko etykietą, ale zostanie użyta jako kwota). Masz więc 2 sposoby na przezwyciężenie tego.

Po pierwsze, możesz dodać 12 dodatkowych zmiennych , po jednej na każdy miesiąc , i ustawić każdą zmienną na 1, jeśli reprezentuje miesiąc zakupu, i na 0, jeśli nie. Następnie użyj tej samej regresji liniowej.

Po drugie, możesz użyć bardziej zaawansowanego algorytmu, takiego jak M5 ' , który jest kombinacją regresji liniowej i drzew decyzyjnych (szczegółowy opis tego algorytmu znajduje się w Data Mining: praktyczne narzędzia i techniki uczenia maszynowego ).

przyjaciel
źródło
To zależy od tego, ile masz danych o użytkowniku. Jeśli dość (powiedzmy,> 100 transakcji w ciągu> 1 roku), możesz wytrenować model dla tego konkretnego użytkownika. W przeciwnym razie ogólny model dla wszystkich użytkowników może dać lepsze wyniki. Za pomocą weryfikacji krzyżowej można zmierzyć wydajność obu podejść.
zaprzyjaźnij się
5

nie jest „próbkowany” w regularnych odstępach czasu, więc myślę, że nie kwalifikuje się jako dane szeregów czasowych.

Oto pomysł, jak prognozować zakupy: rozważ dane jako przerywany szereg popytu . Oznacza to, że masz szereg czasowy próbkowany w regularnych odstępach czasu, ale wartości dodatnie są oczywiście nieregularnie rozmieszczone. Rob Hyndman ma niezły artykuł na temat stosowania metody Crostona do prognozowania serii popytu przerywanego. Chociaż ja również zaprogramować wiele w Pythonie, można zaoszczędzić dużo czasu na poszukiwania za pomocą metody Croston użytkownika, jak również inne metody prognozowania szeregów czasowych, łatwo dostępne w doskonałej pakietu R Roba prognozy .

Josh Hemann
źródło
1
+1 Za zaoferowanie nowego pomysłu. Zapoznanie się z wprowadzeniem i wnioskami z artykułu Shenstone i Hyndmana sugeruje jednak, że metoda Croston'a nie jest ogólnie bardzo dobra: praca koncentruje się na próbie uzasadnienia i zrozumienia popularnej procedury, która okazuje się ograniczona; najlepsi autorzy mogą powiedzieć, że pomimo tego „prognozy ... mogą być nadal przydatne”. Wygląda również na to, że ten model nie był w stanie pomieścić dodatkowych danych na temat „aktualnych poziomów dostaw”, zgodnie z wnioskiem PO.
whuber
3

Jestem prawie pewien, że próbujesz przeprowadzić analizę regresji, aby dopasować linię do swoich punktów danych. Istnieje wiele narzędzi , które mogą Ci pomóc - MS Excel jest najbardziej dostępny. Jeśli chcesz stworzyć własne rozwiązanie, najlepiej odświeżyć swoje statystyki ( być może tutaj i tutaj ). Po dopasowaniu linii do danych możesz ekstrapolować w przyszłość.

EDYCJA: Oto zrzut ekranu z przykładu Excela, o którym wspomniałem w komentarzach poniżej. Pogrubione daty są przypadkowymi datami w przyszłości, które sam wpisałem. Pogrubione wartości w kolumnie B to ekstrapolowane wartości obliczone na podstawie smaku Excela regresji wykładniczej. wprowadź opis zdjęcia tutaj

EDYCJA 2: OK, aby odpowiedzieć na pytanie: „Jakich technik mogę użyć?”

  • regresja wykładnicza (wspomniana powyżej)
  • Metoda Holta
  • Metoda Wintera
  • ARIMA

Zapoznaj się z tą stroną, aby zapoznać się ze wstępem do każdego z nich: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


źródło
Doprowadziło mnie to do pytania: jakie moje punkty danych? nie pojedyncze zakupy - nie wziąłoby to pod uwagę czasu, jaki upływa między nimi, a tym samym całkowitego zużycia danego zasobu. Może powinienem je interpolować, aby uzyskać średnią w regularnych odstępach czasu (np. Ilość tygodniowo), a następnie wykorzystać to jako dane wejściowe szeregów czasowych do ekstrapolacji przyszłych danych?
Pomyśl o różnicy czasu jako różnicy wartości „x” na wykresie. Większość rodzajów analizy regresji uwzględni różne różnice. Wypróbuj przykładowe dane za pomocą funkcji WZROST w programie Excel, która wykorzystuje regresję wykładniczą. Jeśli zmienisz daty, wartości prognozowane odpowiednio się zmienią.
3

Zaczęty jako komentarz, stał się zbyt długi ...

nie jest „próbkowany” w regularnych odstępach czasu, więc myślę, że nie kwalifikuje się jako dane szeregów czasowych

Jest to błędny wniosek - to z pewnością szeregi czasowe. Szeregi czasowe mogą być nieregularnie próbkowane, po prostu wymagają innego podejścia niż zwykle.

Problem ten wydaje się być związany z problemami stochastycznymi, takimi jak poziom zapory (woda jest zwykle używana w miarę stabilnym tempie w czasie, czasem zwiększa się lub zmniejsza szybciej lub mniej, a innym razem jest dość stabilna), podczas gdy poziomy zapory mają tendencję do zwiększania szybko (głównie w skokach), gdy występują opady deszczu. Wzory zużycia papieru i uzupełniania zapasów mogą być nieco podobne (chociaż zamówiona ilość może być o wiele bardziej stabilna i w znacznie większej liczbie niż ilość opadów deszczu i występować, gdy poziom się obniży).

Jest to również związane z kapitałem towarzystwa ubezpieczeniowego (ale w pewnym sensie odwróconym) - oprócz kapitału początkowego pieniądze ze składek (koszty operacyjne netto) i inwestycje przychodzą dość stabilnie (czasami mniej więcej), podczas gdy płatności polis ubezpieczeniowych są zwykle dokonywane w stosunkowo dużych kwotach kwoty.

Obie te rzeczy zostały wymodelowane i mogą zapewnić nieco wgląd w ten problem.

Glen_b - Przywróć Monikę
źródło
-1

powinieneś spojrzeć na WEKA. Jest to narzędzie i Java API z pakietem algorytmów uczenia maszynowego. W szczególności powinieneś poszukać algorytmów klasyfikacji.

Powodzenia


źródło
W jaki sposób algorytm klasyfikacji dałby mi prognozy ilościowe?
@ Luke404: Weka ma 3 typy algorytmów (klasyfikacja, klastrowanie i eksploracja asocjacji) i postanowili umieścić regresję w sekcji klasyfikacji. Ale ogólnie masz rację, klasyfikacja i przewidywanie ilościowe to trochę inne rzeczy.
zaprzyjaźnij się
-1

Użyłbym liniowego najmniejszego kwadratu, aby dopasować model do skumulowanego zużycia (tzn. Uruchomić całkowitą liczbę stron według daty). Początkowym założeniem byłoby użycie wielomianu pierwszego stopnia. Jednak pozostałości wskazują, że pierwszy stopień jest niedouczenia dane na przykład, więc następnym logicznym krokiem byłoby zwiększenie go do drugiego stopnia (tj kwadratowa) pasuje. To usuwa krzywiznę resztek, a nieznacznie ujemny współczynnik dla kwadratu oznacza, że ​​tempo zużycia zmniejsza się w czasie, co wydaje się intuicyjne, biorąc pod uwagę, że większość ludzi prawdopodobnie zużywa mniej papieru z czasem. W przypadku tych danych nie sądzę, że musisz wykraczać poza dopasowanie drugiego stopnia, ponieważ możesz zacząć nadmiernie dopasowywać, a wynikowa ekstrapolacja może nie mieć sensu.

Możesz zobaczyć pasowania (w tym ekstrapolację) i reszty na poniższych wykresach.

dopasowanie pozostały

Jeśli możesz, warto wykonać ładowanie początkowe, aby uzyskać lepszą ocenę błędów prognozowania.

dnlbrky
źródło
Ponieważ reszty w skumulowanym zużyciu byłyby silnie skorelowane, metoda ta nie wydaje się statystycznie uzasadniona. Używając kwadratowego dopasowania, tylko dokumenty dotyczące tego podstawowego problemu; nie może go wyleczyć.
whuber
-2

Myślę, że możesz uzyskać swoje dane za pomocą badań operacyjnych .

Dlaczego nie spróbujesz znaleźć równań, które przyjmują za zmienne ilość papieru zużytego na dany okres, użytkowników papieru itp.?


źródło