Prognose der Produktnachfrage für Tausende von Produkten in mehreren Filialen

9

Ich arbeite derzeit an einer Bedarfsprognose mit Daten zu Zehntausenden von Produkten in ein paar Tausend Filialen. Insbesondere habe ich in jedem Geschäft tägliche Verkaufsdaten für ein paar Jahre pro Produkt. Mein Ziel ist es, die zukünftigen Verkäufe jedes Artikels in jedem Geschäft einen Tag im Voraus vorherzusagen. dann zwei Tage voraus usw.

Bisher habe ich überlegt, jedes Produkt-Laden-Paar in eine einzelne Zeitreihe zu unterteilen und für jede Zeitreihe eine Prognose zu erstellen, wie in Neal Wagners Artikel Intelligente Techniken zur Vorhersage mehrerer Zeitreihen in realen Systemen beschrieben . Mit anderen Worten, ich werde nur die historischen Informationen über die Verkäufe des Produkts in einem bestimmten Geschäft verwenden, um die zukünftigen Verkäufe dieses Produkts in diesem Geschäft vorherzusagen.

Ich habe jedoch Kaggle durchsucht und Wettbewerbe wie Corporación Favorita Grocery Sales Forecasting schlagen einen anderen Ansatz vor, bei dem die Informationen aus allen Geschäften und allen Produkten verwendet werden, um zukünftige Verkäufe vorherzusagen. Soweit ich weiß, werden historische Verkaufsinformationen aller Produkte in allen Filialen in den Schulungssatz übernommen, aus dem das Modell lernen wird, zukünftige Verkäufe vorherzusagen. Es unterscheidet sich sehr von herkömmlichen Zeitreihenmethoden, aber anscheinend funktioniert es basierend auf den Ergebnissen des Wettbewerbs.

Die letztere Methode erscheint vielversprechend und robuster. Es besteht jedoch das Problem, Hunderte Millionen Datenpunkte verarbeiten zu müssen.

Welche Methode passt besser zu meiner Aufgabe? Welche Methode würden Sie denjenigen empfehlen, die an ähnlichen Problemen gearbeitet haben?

Meraxe
quelle
1
Als ich daran gearbeitet habe, habe ich den Ansatz der einzelnen Zeitreihen verwendet, ABER mit Saisonalität, die aus ähnlichen Produkten (z. B. einer Kategorie) in ähnlichen Geschäften (z. B. einem geografischen Segment, in dem das Wetter ähnlich wäre) abgeleitet wurde. Dies ist jedoch teilweise auf die zeitlichen Einschränkungen zurückzuführen: Nicht alle Daten kamen zur gleichen Zeit an, und die Zeit zwischen dem letzten Eintreffen der Daten und dem Zeitpunkt, zu dem die Prognose benötigt wurde, war gering (manchmal negativ!). Dies waren betriebliche Überlegungen, keine statistischen.
Radfahrer
@zbicyclist Danke, dass du das geteilt hast! Darf ich wissen, wie Sie die Saisonalität ähnlicher Produkte in die Prognose einbeziehen konnten? Haben Sie beispielsweise die mittlere Saisonalität als weiteres Merkmal in das Modell aufgenommen?
Meraxes
Deseasonalisieren, modellieren, prognostizieren und dann reseasonalisieren.
Radfahrer

Antworten:

9

Ich würde den Ansatz von Neal et al. Nicht empfehlen . . Ihre Daten sind aus zwei Gründen eindeutig:

  • Sie arbeiten mit Lebensmitteldaten, die normalerweise dichter und stabiler sind als andere Daten von Einzelhandelsprodukten. Ein bestimmter Standort verkauft Dutzende von Milchkartons oder Eierpackungen pro Woche und verkauft seit Jahrzehnten dieselben Produkte im Vergleich zu Mode- oder Autoteilen, bei denen es nicht ungewöhnlich ist, alle 3 oder 4 Wochen einen einzigen Artikel zu verkaufen. und Daten, die nur für ein oder zwei Jahre verfügbar sind.

  • Sie prognostizieren für Lagerhäuser, nicht für Geschäfte. Ein einzelnes Lager umfasst mehrere Filialen, sodass deren Daten noch dichter als der Durchschnitt sind. Tatsächlich wird ein Lager normalerweise als natürliche Aggregations- / Gruppierungsebene für Geschäfte verwendet, sodass diese bereits im Wesentlichen eine Gruppierung von Geschäftsdaten durchführen.

Aufgrund der Art ihrer Daten können sie einzelne Zeitreihen direkt modellieren. Die Daten der meisten Einzelhändler wären jedoch auf der Ebene der einzelnen Skus / Geschäfte zu spärlich, als dass sie dies erreichen könnten.

Wie zbicyclist sagte, wird dieses Problem normalerweise mithilfe hierarchischer oder mehrstufiger Prognosen angegangen . Kommerzielle Nachfrageprognosepakete verwenden alle eine Form der hierarchischen Prognose

Die Idee ist, Produkte und Geschäfte in ähnliche Produkte und Regionen zu gruppieren, für die aggregierte Prognosen erstellt und zur Bestimmung der Gesamtsaisonalität und des Trends verwendet werden. Diese werden dann unter Verwendung eines Top-Down-Ansatzes mit den für jede einzelne SKU generierten Basisprognosen abgestimmt / Ladenkombination.

Neben der erwähnten Herausforderung besteht ein größeres Problem darin, dass das Finden der optimalen Gruppierungen von Produkten und Geschäften keine triviale Aufgabe ist, die eine Kombination aus Fachwissen und empirischer Analyse erfordert. Produkte und Geschäfte werden normalerweise in ausgeklügelten Hierarchien zusammengefasst (nach Abteilung, Lieferant, Marke usw. für Produkte, nach Region, Klima, Lager usw. für den Standort), die dann zusammen mit den historischen Verkäufen dem Prognosealgorithmus zugeführt werden Daten selbst.


Adressieren von Merax-Kommentaren

Wie wäre es mit den Methoden des Kaggle-Wettbewerbs Corporación Favorita Grocery Sales Forecasting, bei dem die Modelle aus der Verkaufsgeschichte mehrerer (möglicherweise nicht verwandter) Produkte lernen können, ohne explizite Gruppierungen vorzunehmen? Ist das noch ein gültiger Ansatz?

Sie führen die Gruppierung implizit durch, indem sie Geschäft, Element, Familie, Klasse und Cluster als kategoriale Merkmale verwenden.

Ich habe gerade einen Teil von Rob Hyndmans Abschnitt über hierarchische Prognosen gelesen. Es scheint mir, dass ein Top-Down-Ansatz verlässliche Prognosen für die aggregierten Ebenen liefert. Es hat jedoch den großen Nachteil, dass Informationen aufgrund von Aggregation verloren gehen, was sich auf Prognosen für die Knoten der untersten Ebene auswirken kann. Es kann auch "nicht in der Lage sein, einzelne Serienmerkmale wie Zeitdynamik, besondere Ereignisse zu erfassen und zu nutzen".

Drei Punkte dazu:

  • Der Nachteil, auf den er hinweist, hängt von der Gruppierung der Daten ab. Wenn Sie alle Produkte und Geschäfte zusammenfassen, ist dies ein Problem. Wenn Sie beispielsweise alle Geschäfte aus allen Regionen zusammenfassen, werden alle regionenspezifischen Saisonalitäten verwischt. Sie sollten jedoch nur bis zur relevanten Gruppierung aggregieren, und wie ich bereits erwähnt habe, erfordert dies einige Analysen und Experimente, um sie zu finden.
  • Im speziellen Fall der Einzelhandelsnachfrage sind wir nicht besorgt über "Verlust von Informationen aufgrund von Aggregation", da die Zeitreihen an den unteren Knoten (dh SKU / Store) häufig nur sehr wenige Informationen enthalten, weshalb wir sie bis zu den höheren aggregieren Ebenen in erster Linie.
  • Bei SKU / Store-spezifischen Ereignissen gehen wir in meinem Team so vor, dass die ereignisspezifischen Effekte vor dem Generieren einer Prognose entfernt und später nach dem Generieren der Prognose wieder hinzugefügt werden. Siehe hier für Details.
Skander H.
quelle
Danke für diesen Einblick! Wie wäre es mit den Methoden des Kaggle-Wettbewerbs Corporación Favorita Grocery Sales Forecasting, bei dem die Modelle aus der Verkaufsgeschichte mehrerer (möglicherweise nicht verwandter) Produkte lernen können, ohne explizite Gruppierungen vorzunehmen? Ist das noch ein gültiger Ansatz?
Meraxes
Ich habe gerade einen Teil von Rob Hyndmans Abschnitt über hierarchische Prognosen gelesen. Es scheint mir, dass ein Top-Down-Ansatz verlässliche Prognosen für die aggregierten Ebenen liefert. Es hat jedoch den großen Nachteil, dass Informationen aufgrund von Aggregation verloren gehen, was sich auf Prognosen für die Knoten der untersten Ebene auswirken kann. Es kann auch "nicht in der Lage sein, einzelne Serienmerkmale wie Zeitdynamik, besondere Ereignisse zu erfassen und zu nutzen".
Meraxes
@meraxes siehe meine Bearbeitung.
Skander H.
Vielen Dank für die ausführliche Erklärung, @Alex! In Bezug auf Ihren letzten Punkt, und dies mag ein wenig vom Thema abweichen, aber behandeln Sie Feiertage genauso? dh entfernen Sie ihre Auswirkungen, bevor Sie Prognosen erstellen, und fügen Sie sie später wieder hinzu?
Meraxes
^ Ich frage, weil ich bemerke, dass meine Prognosen sehr empfindlich auf Ausreißer in den Daten zu reagieren scheinen. Mein aktueller Ansatz besteht darin, die Daten zu gewinnen und dann den Serien-Spike-Analysator zu verwenden, wie in dem Artikel von Neal Wagner et al. durch Feiertage erklärbare Spitzen zu identifizieren, um sie anschließend wieder hinzuzufügen. Ich verstehe, dass eine andere Möglichkeit darin besteht, Dummy-Variablen zu verwenden, um den Effekt der Feiertage zu entfernen. Welchen Ansatz würden Sie empfehlen?
Meraxes