Ich habe einen Datensatz, der die Nachfrage nach mehreren Produkten (1200 Produkte) für 25 Perioden enthält, und ich muss die Nachfrage nach jedem Produkt für die nächste Periode vorhersagen. Zuerst wollte ich ARIMA verwenden und für jedes Produkt ein Modell trainieren, aber aufgrund der Anzahl der Produkte und der Optimierung der (p, d, q) -Parameter ist dies so zeitaufwendig und unpraktisch. Wird die Verwendung einer Regression empfohlen, bei der frühere Anforderungen unabhängige Variablen sind (autoregressiv)?
Kann ich wissen, ob es eine Methode zum Trainieren eines einzelnen Modells für die Bedarfsprognose aller 1200 Produkte gibt? Ich wäre dankbar, wenn Sie eine Bibliothek in Python vorschlagen könnten, da ich Python verwende.
machine-learning
time-series
arima
Katatonia
quelle
quelle
bigtime
R. Vielleicht können Sie R von Python aus aufrufen, um es verwenden zu können.Antworten:
Im Allgemeinen verwenden Sie bei mehreren Zeitreihen ein vektorbasiertes Modell, um alle gleichzeitig zu modellieren. Die natürliche Erweiterung des ARIMA-Modells zu diesem Zweck ist das VARIMA-Modell (Vector ARIMA). Die Tatsache, dass Sie Zeitreihen haben, bedeutet, dass Sie einige starke parametrische Einschränkungen für die Kreuzkorrelationsterme im Modell festlegen müssen, da Sie nicht in der Lage sind, mit freien Parametern für jedes Paar von Zeitreihenvariablen umzugehen.1200
Ich würde vorschlagen, mit einem einfachen vektorbasierten Modell (z. B. VAR, VMA, VARMA) mit niedrigem Grad und einigen einfachen Parametereinschränkungen für die Kreuzkorrelation zu beginnen. Sehen Sie nach, ob Sie ein vernünftiges Modell finden können, das eine Kreuzkorrelation mit mindestens einem Grad Verzögerung enthält, und gehen Sie dann von dort aus. Diese Übung erfordert das Lesen von vektorbasierten Zeitreihenmodellen. Das
MTS
Paket und dasbigtime
Paket inR
bieten einige Funktionen für den Umgang mit multivariaten Zeitreihen. Es lohnt sich daher, sich mit diesen Paketen vertraut zu machen.quelle
bigtime
R. Soweit ich weißMTS
, handelt es sich eher um eine Demonstration von Lehrbuchbeispielen als um ein echtes Arbeitswerkzeug. Einige multivariate Beispiele können dort nur dreidimensionale Reihen verarbeiten, bevor die Rechenlast gedrosselt wird.Wie Ben bereits erwähnte, sind die Lehrbuchmethoden für mehrere Zeitreihen VAR- und VARIMA-Modelle. In der Praxis habe ich jedoch nicht gesehen, dass sie im Rahmen der Nachfrageprognose so häufig eingesetzt werden.
Viel häufiger, einschließlich dessen, was mein Team derzeit verwendet, ist die hierarchische Vorhersage (siehe auch hier ). Hierarchische Prognosen werden immer dann verwendet, wenn Gruppen ähnlicher Zeitreihen vorliegen: Umsatzverlauf für Gruppen ähnlicher oder verwandter Produkte, Touristendaten für Städte, die nach geografischen Regionen gruppiert sind, usw.
Die Idee ist, eine hierarchische Auflistung Ihrer verschiedenen Produkte zu erstellen und dann Prognosen sowohl auf der Basisebene (dh für jede einzelne Zeitreihe) als auch auf den durch Ihre Produkthierarchie definierten Aggregatebenen durchzuführen (siehe angehängte Grafik). Anschließend stimmen Sie die Prognosen auf den verschiedenen Ebenen (mit Top Down, Botton Up, Optimal Reconciliation usw.) in Abhängigkeit von den Geschäftszielen und den gewünschten Prognosezielen ab. Beachten Sie, dass Sie in diesem Fall nicht ein großes multivariates Modell anpassen, sondern mehrere Modelle an verschiedenen Knoten in Ihrer Hierarchie, die dann mit der von Ihnen gewählten Abstimmungsmethode abgeglichen werden.
Der Vorteil dieses Ansatzes besteht darin, dass Sie durch Gruppieren ähnlicher Zeitreihen die Korrelationen und Ähnlichkeiten zwischen ihnen nutzen können, um Muster (wie saisonale Schwankungen) zu finden, die mit einer einzelnen Zeitreihe möglicherweise schwer zu erkennen sind. Da Sie eine große Anzahl von Prognosen generieren, die nicht manuell eingestellt werden können, müssen Sie das Prognoseverfahren für Zeitreihen automatisieren. Dies ist jedoch nicht allzu schwierig. Weitere Informationen finden Sie hier .
Ein fortschrittlicherer, aber ähnlicher Ansatz wird von Amazon und Uber verwendet, bei denen ein großes neuronales RNN / LSTM-Netzwerk für alle Zeitreihen gleichzeitig trainiert wird. Es ähnelt hierarchischen Vorhersagen, da es auch versucht, Muster aus Ähnlichkeiten und Korrelationen zwischen verwandten Zeitreihen zu lernen. Sie unterscheidet sich von der hierarchischen Prognose, da sie versucht, die Beziehungen zwischen den Zeitreihen selbst zu lernen, anstatt diese Beziehung vor der Prognose festzulegen und zu fixieren. In diesem Fall müssen Sie sich nicht mehr mit der automatischen Prognosegenerierung befassen, da Sie nur ein Modell optimieren. Da das Modell jedoch sehr komplex ist, ist das Optimierungsverfahren keine einfache AIC / BIC-Minimierungsaufgabe mehr und wird benötigt erweiterte Hyper-Parameter-Tuning-Verfahren zu betrachten,
Weitere Details finden Sie in dieser Antwort (und in den Kommentaren) .
Für Python-Pakete ist PyAF zwar verfügbar, aber nicht sehr beliebt. Die meisten Leute benutzen das HTS- Paket in R, für das es viel mehr Community-Unterstützung gibt. Für LSTM-basierte Ansätze gibt es die Modelle DeepAR und MQRNN von Amazon, die Teil eines Service sind, für den Sie bezahlen müssen. Einige Leute haben auch LSTM für die Bedarfsprognose mit Keras implementiert. Sie können diese nachschlagen.
quelle
Das Problem mit den vorgeschlagenen Massenanpassungspaketen besteht darin, dass sie latente deterministische Strukturen wie Impulse, Pegel- / Stufenverschiebungen, saisonale Impulse und Zeittrends nicht einheitlich behandeln oder vom Benutzer vorgeschlagene Ursachen gemäß https: // effizient behandeln. autobox.com/pdfs/SARMAX.pdf
Zusätzlich kann die Rechenzeit eine ernsthafte Komplikation sein. AUTOBOX (bei dessen Entwicklung ich mitgewirkt habe) verfügt über eine sehr ausgefeilte Modellerstellungsphase, in der Modelle archiviert werden, und eine sehr schnelle Prognosemöglichkeit, bei der zuvor entwickelte Modelle wiederverwendet werden, wodurch die Prognosezeit auf einen kleinen Bruchteil der strengen Modellentwicklungszeit reduziert und gleichzeitig die neue Prognose für die jüngste Zeit angepasst wird Daten, die beobachtet wurden, nachdem das Modell entwickelt und gespeichert worden war. Dies wurde für Annheuser-Buschs Prognoseprojekt mit 600.000 Filialen für mehr als 50 Artikel unter Berücksichtigung von Preis und Wetter umgesetzt.
Modelle können fortlaufend aktualisiert werden, wobei frühere Modelle nach Bedarf ersetzt werden.
Keine Notwendigkeit für parametrische Einschränkungen ODER Weglassen der gleichzeitigen Wirkung von Kausalvariablen wie in VAR und VARIMA, wobei nur die Vergangenheit aller Serien a la ARIMA berücksichtigt wird.
Es muss nicht nur ein Modell mit einem Parametersatz vorhanden sein, da die Modelle auf die einzelnen Serien zugeschnitten / optimiert werden können und sollten.
Leider gibt es noch keine Python-Lösung, aber die Hoffnung ist ewig.
quelle
1200 Produkte sind der Haupttreiber für die Dimensionalität Ihres Problems. Jetzt haben Sie nur 25 Perioden. Dies sind nur sehr wenige Daten, die nicht ausreichen, um eine Pauschal-Korrelationsanalyse durchzuführen. Mit anderen Worten, Sie haben keine Daten, um eine gleichzeitige Vorhersage aller Produkte zu erhalten, ohne die Dimensionalität zu verringern. Dies eliminiert so ziemlich alle VARMA und andere schöne theoretische Modelle. Es ist unmöglich, mit den Koeffizienten dieser Modelle umzugehen, es gibt zu viele, um sie abzuschätzen.
Betrachten Sie eine einfache Korrelationsanalyse. Sie benötigen (1200x1200 + 1200) / 2 Zellen in der Kovarianz- / Korrelationsmatrix. Sie haben nur 25 Datenpunkte. Die Matrix wird in enormem Maße rangdefizient sein. Was wirst du machen? Im Großen und Ganzen haben Sie zwei einfache Ansätze: getrennte Vorhersagen und Faktormodelle.
Der erste Ansatz ist offensichtlich: Sie führen jedes Produkt unabhängig aus. Die Variation besteht darin, sie nach bestimmten Merkmalen zu gruppieren, z. B. nach dem Sektor "Schließen von Männern".
Wenn es sich um einen exogenen Faktor handelt, müssen Sie Betas erhalten, indem Sie die Serie für diese Faktoren einzeln regressieren. Für PCA könnten Sie eine robuste PCA durchführen und die ersten Faktoren mit ihren Gewichten ermitteln, bei denen es sich um Betas handelt.
quelle
Ich bin mir nicht sicher, ob Sie an Cloud-basierten Lösungen interessiert sind, aber Amazon stellt einen Algorithmus mit der Bezeichnung "DeepAR" über AWS SageMaker zur Verfügung (siehe hier) .
Dieser Algorithmus soll speziell aus mehreren Eingabezeitreihen lernen können, um Vorhersagen zu erstellen, einschließlich statischer und dynamischer Funktionen. wie in diesem Auszug aus der oben verlinkten Seite zu sehen:
Soweit ich das beurteilen kann, stellen sie diesen Algorithmus leider nicht für den Offline- / Self-Hosted-Einsatz zur Verfügung.
quelle