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.
quelle
Antworten:
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 .
quelle
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.Wir können Ihnen nur sehr allgemeine Ratschläge geben.
ets()
Funktion imforecast
Paket in R. (Weniger dieauto.arima()
Funktion für wöchentliche Daten.forecast
oben empfohlene Paket.forecast
Paket können Ihnen diese geben.)Wenn Sie spezifischere Fragen haben, posten Sie diese im Lebenslauf.
quelle
forecast()
Befehl für Ihr angepasstes Modell (dh die Ausgabe vonets()
oderauto.arima()
) und geben Sie denlevel
Parameter an. Siehe?forecast.ets
und?forecast.Arima
(beachten Sie die Großschreibung).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.
quelle