Strategien zur Zeitreihenprognose für 2000 verschiedene Produkte?


9

Zunächst stelle ich fest, dass meine Frage sehr weit gefasst ist und es daher schwierig sein kann, diese Frage zu beantworten.

Haben Sie Ratschläge, wie Sie sich einem „Problem“ nähern können, bei dem Sie Prognosen / Prognosen für mehr als 2000 verschiedene Produkte erstellen müssen? Mit anderen Worten, jedes Produkt erfordert eine andere Prognose. Ich habe 2 Jahre historische Daten auf Wochenebene (dh Nachfrage pro Woche pro Produkt).

Ich muss dies in kurzer Zeit tun: Ich habe ungefähr eine Woche Zeit, um dies zu tun, daher suche ich nach Möglichkeiten, wie ich schnell relativ gute Vorhersagemodelle erstellen kann. Es wäre zu zeitaufwändig, für jedes Produkt ein Modell zu erstellen und seine Leistung nacheinander genau zu überprüfen.

Ich habe darüber nachgedacht, die Produkte anhand der Varianz zu segmentieren , damit ich einfache Modelle für Produkte mit geringer Varianz verwenden kann. Dies ist wahrscheinlich nicht ideal, aber es wäre eine schnelle Möglichkeit, die Anzahl der Modelle, die ich erstellen muss, einzugrenzen.

Es wäre sehr dankbar, wenn Sie mir praktische Ratschläge zur Lösung dieses Problems geben würden.


1
Sind das ähnliche Produkte? Sie könnten von der Suche in diesem Sitr nach hierarchischen Prognosen
profitieren

Antworten:


11

Ein Follow-up zu @StephanKolassas Antwort:

  • Ich stimme Stephan zu, dass ETS () aus dem Prognosepaket in R wahrscheinlich Ihre beste und schnellste Wahl ist. Wenn ETS keine guten Ergebnisse liefert, möchten Sie möglicherweise auch das Prophet-Paket von Facebook verwenden (Auto.arima ist einfach zu verwenden, aber zwei Jahre wöchentliche Daten grenzen meiner Erfahrung nach nicht an genügend Daten für ein ARIMA-Modell). Persönlich habe ich festgestellt, dass Prophet einfacher zu verwenden ist, wenn Sie Werbeaktionen und Daten zu Urlaubsereignissen zur Verfügung haben, da ETS () sonst möglicherweise besser funktioniert. Ihre eigentliche Herausforderung ist eher eine Codierungsaufgabe, wie Sie Ihren Prognosealgorithmus über eine große Anzahl von Zeitreihen effizient iterieren können. In dieser Antwort finden Sie weitere Informationen zum Automatisieren der Prognosegenerierung .

  • Bei der Bedarfsprognose wird häufig eine Form der hierarchischen Prognose durchgeführt, dh Sie haben 2000 Produkte und benötigen für jedes einzelne Produkt eine separate Prognose. Es gibt jedoch Ähnlichkeiten zwischen Produkten, die bei der Prognose hilfreich sein können. Sie möchten eine Möglichkeit finden, das Produkt entlang einer Produkthierarchie zu gruppieren und dann hierarchische Prognosen zu verwenden, um die Genauigkeit zu verbessern. Da Sie nach Prognosen auf der Ebene der einzelnen Produkte suchen, sollten Sie den hierarchischen Top-Down-Ansatz ausprobieren.

  • Etwas etwas weit hergeholt, aber ich möchte es darauf hinweisen: Amazon und Uber verwenden neuronale Netze für diese Art von Problem, wobei sie anstelle einer separaten Prognose für jedes Produkt / jede Zeitreihe ein gigantisches wiederkehrendes neuronales Netzwerk zur Vorhersage verwenden alle Zeitreihen in loser Schüttung. Beachten Sie, dass sie immer noch individuelle Prognosen für jedes Produkt haben (im Fall von Uber ist es Verkehr / Nachfrage pro Stadt im Gegensatz zu Produkten). Sie verwenden lediglich ein großes Modell (ein LSTM-Deep-Learning-Modell), um alles auf einmal zu erledigen. Die Idee ähnelt im Geiste der hierarchischen Vorhersage in dem Sinne, dass das neuronale Netzwerk aus den Ähnlichkeiten zwischen den Historien verschiedener Produkte lernt, um bessere Vorhersagen zu erhalten. Das Uber-Team hat einen Teil seines Codes zur Verfügung gestellt ( über die Github-Repositories des M4-Wettbewerbs), es ist jedoch C ++ - Code (nicht gerade die Lieblingssprache der Statistik-Menge). Der Ansatz von Amazon ist nicht Open Source und Sie müssen den kostenpflichtigen Amazon Forecast-Service verwenden , um die Prognosen zu erstellen.


Zu Ihrem zweiten Kommentar: Sie müssen zwischen Umsatzprognosen und Bedarfsprognosen unterscheiden. Die Nachfrage ist uneingeschränkt. Wenn plötzlich ein Artikel beliebt ist und Ihre Kunden 200 Einheiten wünschen, spielt es keine Rolle, dass Sie nur 50 Einheiten zur Verfügung haben. Ihre Nachfrage wird immer noch 200 Einheiten betragen.

In der Praxis ist es sehr schwierig, die Nachfrage direkt zu beobachten, daher verwenden wir den Verkauf als Proxy für die Nachfrage. Dies hat ein Problem, da Situationen, in denen ein Kunde ein Produkt kaufen wollte, es jedoch nicht verfügbar war, nicht berücksichtigt werden. Um dies zu beheben, werden Informationen zu Lagerbeständen und Lagerbeständen zusammen mit den historischen Verkaufsdaten entweder direkt in ein Modell aufgenommen oder zur Vorverarbeitung der Zeitreihen verwendet, bevor ein Modell für die Prognose erstellt wird .

In der Regel wird eine uneingeschränkte Prognose zuerst von einer Prognose-Engine generiert und dann an ein Planungssystem weitergeleitet, das dann die von Ihnen genannten Einschränkungen (dh die Nachfrage beträgt 500 Einheiten, aber nur 300 Einheiten sind verfügbar) sowie andere Einschränkungen (Sicherheitsbestand, Präsentationsbestand, Budgetbeschränkungen, Pläne für Werbeaktionen oder die Einführung neuer Produkte usw. ...) - dies fällt jedoch unter die allgemeine Rubrik Planung und Bestandsverwaltung, nicht per se per Prognose .


1
@Amonet "Ich würde eine Prognose auf Produktfamilienebene erstellen und dann auf Produktebene nicht übereinstimmen, richtig?" Ja.
Skander H.

3
+1, alles extrem gute Punkte. In Bezug auf hierarchische Prognosen bin ich ein großer Fan von optimaler Abstimmung , die ich und andere wiederholt auf allen Hierarchieebenen als besser als Top-Down und Bottom-Up eingestuft haben . Außerdem handelt es sich im Kern um einen Optimierungsalgorithmus, sodass Einschränkungen berücksichtigt werden können. (Wenn zum Beispiel einige Serien ein geringes Volumen haben, kann die uneingeschränkte Abstimmung zu negativen Prognosen führen.) Ich stimme jedoch zu, dass man unzensierte Nachfrageprognosen
anstreben

3
... Ich würde immer empfehlen , zuerst mit einfachen Prognosemethoden zu beginnen , die überraschend schwer zu übertreffen sein können. Siehe auch hier.
Stephan Kolassa

2
@ usεr11852: Zwei Jahre sind nur zwei Zyklen. Bei saisonalen Unterschieden verlieren wir einen Zyklus. So verliert saisonale ARIMA die Hälfte ihrer Daten nur durch die Differenzierung. Ich würde kein saisonales ARIMA mit Daten im Wert von weniger als fünf Zyklen verwenden. ...
Stephan Kolassa

1
@ usεr11852: Dies erinnert mich an einige Analysen, bei denen die unteren Reihen relativ gesehen "zu stark" angepasst wurden, da die Anpassungen in absoluten Zahlen mehr oder weniger ausgewogen sind, nicht in Prozent. Ich habe dann mgcv::pcls()für die Versöhnung die Summationsmatrix von Hand eingegeben. Dies hatte zwei Vorteile: (1) Sie können Box-Einschränkungen festlegen, z. B. um sicherzustellen, dass abgestimmte Prognosen nicht negativ sind. (2) Sie können die Anpassungen gewichten, sodass ich nur die Umkehrung des historischen Durchschnitts jeder Serie verwendet habe als Gewicht, das das Anpassungsproblem ansprach.
Stephan Kolassa

8

Wir können Ihnen nur sehr allgemeine Ratschläge geben.

  • Gibt es starke Treiber wie Werbeaktionen oder Kalenderereignisse oder Saisonalität, Trends oder Lebenszyklen? Wenn ja, nehmen Sie sie in Ihre Modelle auf. Beispielsweise könnten Sie Verkäufe bei Werbeaktionen zurückführen und dann möglicherweise Residuen modellieren (mithilfe von exponentieller Glättung oder ARIMA).
  • Es gibt Softwarepakete, die bei der Anpassung mehrerer Zeitreihenmodelle an eine Serie einigermaßen gute Arbeit leisten. Sie können dann einfach Ihre 2000er-Serie durchlaufen, was nicht viel mehr Laufzeit als eine Tasse Kaffee in Anspruch nehmen sollte. Ich empfehle besonders die ets()Funktion im forecastPaket in R. (Weniger die auto.arima()Funktion für wöchentliche Daten.
  • Zumindest ein Prognoselehrbuch überfliegen, z . B. dieses . Es verwendet das forecastoben empfohlene Paket.
  • Was ist Ihr Endziel? Möchten Sie eine unvoreingenommene Prognose? Bewerten Sie dann die Punktvorhersagen mithilfe der MSE. Wird Ihr Bonus von der MAPE abhängen? Dann kann diese Liste der Probleme der MAPE hilfreich sein. Benötigen Sie Prognosen, um Sicherheitsbeträge festzulegen? Dann brauchen Sie Quantilvorhersagen, keine mittleren Vorhersagen. (Die Funktionen im forecastPaket können Ihnen diese geben.)

Wenn Sie spezifischere Fragen haben, posten Sie diese im Lebenslauf.


4
@ ŁukaszGrad: Wenn Sie sich durch FPP2 gearbeitet haben, wird Ihnen unser Buch nicht viel Neues erzählen. Die Prinzipien der Geschäftsprognose von Ord et al. (2. Aufl.) Gehen eingehender ( ich habe sie hier überprüft, wenn Sie Zugriff haben). ...
Stephan Kolassa

3
... Sie könnten davon profitieren , wenn Sie sich die IIF ansehen, ihre Veröffentlichung Foresight lesen oder an einer ihrer Konferenzen teilnehmen, entweder an der ISF , die dieses Jahr im Juni in Thessaloniki stattfinden wird, oder an der Foresight Practitioner Conference, dieses Jahr im November um der SAS-Campus in Cary, NC, je nachdem, wo Sie sich befinden. Das ISF ist etwas akademischer ausgerichtet, aber in letzter Zeit kamen ungefähr 33% der Teilnehmer aus der Industrie, und es gibt normalerweise einen Praktiker-Track.
Stephan Kolassa

2
(Vollständige Offenlegung: Ich bin an all diesen beteiligt, also nehmen Sie meine Empfehlungen mit einem großen Körnchen Salz. Wenn Sie an einer der Konferenzen teilnehmen, finden Sie mich und sagen Sie Hallo!)
Stephan Kolassa

1
@SkanderH: Verwenden Sie den forecast()Befehl für Ihr angepasstes Modell (dh die Ausgabe von ets()oder auto.arima()) und geben Sie den levelParameter an. Siehe ?forecast.etsund ?forecast.Arima(beachten Sie die Großschreibung).
Stephan Kolassa

1
@StephanKolassa Ich habe die andere Antwort akzeptiert, da es sich um eine Fortsetzung Ihrer Antwort handelt und die Leute daher eher geneigt sind, auch Ihre hilfreichen Ratschläge zu lesen.
Amonet

1

Eine Segmentierung basierend auf der Varianz der Originalserie macht für mich keinen Sinn, da das beste Modell nicht skalierbar sein sollte. Betrachten Sie eine Reihe .. modellieren Sie sie und multiplizieren Sie dann jeden Wert in der Zeitreihe mit 1000.

In Bezug auf massenproduzierende Gleichungen, die sowohl eine deterministische Struktur (Impulse / Pegelverschiebung / lokale Zeittrends) als auch eine automatisch regressive Saisonalität oder eine Arima-Struktur aufweisen können, müssen Sie ein computergestütztes Skript ausführen. Hüten Sie sich vor einfachen Auto-Arima-Lösungen, die keine deterministische Struktur oder feste Annahmen darüber annehmen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.