Stock prediction mit Machine Learning
Um den Bedarf eines Artikels vorherzusagen, benutzen wir die historischen Daten an Verkäufen eines Artikels. Diese Daten bestehen aus dem Datum und der zugehörigen Anzahl an verkaufen Artikeln pro Tag. Nachstehend ein Beispiel des Datensatzes anhand des Artikels „Ubiquiti UniFi AP-AC PRO Access Point.„
Abbildung 1
Um eine Vorhersage zu erzeugen, benötigen wir aber etwas mehr Features (Eigenschaften) als nur das Datum und die Anzahl an verkaufen Artikeln. Hierzu kann man aus dem Datum weitaus mehr Features extrahieren als nur den jeweiligen Tag. So ist es möglich, dass wir aus einem beliebigen Datum Features wie z.B. das Jahr, Monat, Woche, Wochentag usw. erstellen können. Hat man sämtliche Informationen jedes Datums erstellt, erhält man nachstehenden Datensatz.
Abbildung 2
Zusätzlich zu den Features aus dem Datum, wurden alle fehlenden Tage mit „null“ verkauften Artikeln hinterlegt, damit es keine Lücken gibt. Ein Tag, an dem nichts verkauft wurde, ist natürlich äußerst relevant, um Lagerbewegungen vorherzusagen.
Ein weiteres probates Mittel zur Vorhersage von Time-Series Daten sind sogenannte LAG Features. Lag Features werden mittels der folgenden Formel berechnet.
Für die Tages LAG-Features wird 𝑁 aus nachstehender Zahlenreihe gewählt.
Für die Wochen LAG-Features wird N wie folgt gewählt:
So können wir auf die verkaufen Artikeln die LAG Formel anwenden und erhalten dann die Anzahl verkauft Artikel zum letzten Tag, vorletzten Tag… und zur letzten Woche, vorletzten Woche… So ergibt sich dann folgender zusätzlicher Datensatz:
Abbildung 3
Daneben können wir noch drei weitere Features hinzufügen. Durch die Python Library „holdiays“ können wir die Feiertage bestimmen. Diese haben eine erhebliche Auswirkung auf die Anzahl der verkaufen Artikel. Nicht nur die Feiertage haben einen Einfluss auf den Verkauf. Tage wie „Black Friday“ oder „Prime Day“ lassen die Anzahl an Verkäufen stark steigen. Für solche Tage fügen wir eine Feature „special sale day“ ein. Grundsätzlich wird im sogenannten Weihnachts-Sale ebenfalls mehr abgesetzt. Hier haben wir uns an die Vorgaben aus den USA gehalten, dort startet der Weihnachtsverkauf grundsätzlich nach Thanksgiving. So ist also auch die Weihnachtszeit ein eigenes Feature.
Für die Vorhersage benutzen wir den „Prophet“ Algorithmus von Facebook. Dieser baut auf eine zerlegbares Zeit-Serien Model auf (Taylor & Letham, 2017). Dieser Algorithmus lässt sich mit der folgenden Formel näher beschreiben.
Hier steht 𝑔(𝑡) für den Trend, 𝑠(𝑡) für die periodischen Änderungen und ℎ(𝑡) für den Einfluss von Feiertagen und Ferien. Da wir in unserem Model LAG-Features einsetzten, müssen wir zwei Model erstellen, um die
Stückzahl für einen Artikel hervorzusagen.
- Das erste Model ist ohne LAG-Features. Es wird lediglich für einen bestimmten Zeitraum die tägliche Menge vorhersagen.
- Das zweite Model beinhaltet die LAG-Features. Mittels der Vorhersage des ersten Models können die LAG-Features bestimmt werden. Abschließend kann die Vorhersage auf dem zweiten Model gestartet werden um die finale Anzahl pro Tag ermittelt wird.
Durch das Aufrufen des zweiten Models erhalten wir letztendlich unsere vorhergesagte Stückzahl an benötigten Artikeln pro Tag. Abbildung 4 zeigt den historischen Verlauf und die vorhergesagte Menge anhand des Artikels „Ubiquiti UniFi AP-AC PRO Access Point“. Der Trend des Artikels in Abbildung 5 dargestellt.
Um die Tauglichkeit des Models zu testen, wurden im Einkauf die Daten der Vorhersage mit der tatsächlich verkauften Menge verglichen. Als Beispiel sind einige Artikelnummer im Diagramm Abbildung 6 genauer dargestellt.
Literaturverzeichnis
Sean J. Taylor, B. L. (2017, September 27). peerj.com. Retrieved from peerj.com: https://peerj.com/preprints/3190.pdf