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.
źródło
Odpowiedzi:
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ą.
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.
źródło
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 ).
źródło
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 .
źródło
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.
EDYCJA 2: OK, aby odpowiedzieć na pytanie: „Jakich technik mogę użyć?”
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
Zaczęty jako komentarz, stał się zbyt długi ...
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.
źródło
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
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.
Jeśli możesz, warto wykonać ładowanie początkowe, aby uzyskać lepszą ocenę błędów prognozowania.
źródło
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