Wie gehe ich mit mehreren Serien gleichzeitig um?


14

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.


3
Das fortschrittlichste Paket für die hochdimensionale Zeitreihenanalyse, das mir bekannt ist, ist bigtimeR. Vielleicht können Sie R von Python aus aufrufen, um es verwenden zu können.
Richard Hardy

Antworten:


11

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 MTSPaket und das bigtimePaket in Rbieten einige Funktionen für den Umgang mit multivariaten Zeitreihen. Es lohnt sich daher, sich mit diesen Paketen vertraut zu machen.


Das fortschrittlichste Paket für die hochdimensionale Zeitreihenanalyse, das mir bekannt ist, ist bigtimeR. 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.
Richard Hardy

@Richard Hardy: Danke --- Ich habe meine Antwort so bearbeitet, dass sie diese enthält.
Setzen Sie Monica am

1
Ein guter Weg, dies zu erreichen, wäre, ein Bayesianisches VAR oder genauer gesagt das große Bayesianische VAR-Modell in Betracht zu ziehen.
Graeme Walsh

6

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.

Bildbeschreibung hier eingeben

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.


1
Nebenbei . AUTOBOX implementiert die Art der hierarchischen Modellierung, auf die Sie bei Verwendung von GROUP-Summen als mögliche Fahrserien Bezug genommen haben, um die Vorhersage der KINDER mithilfe von SARMAX-Modellen zu unterstützen. Die Ungewissheit in den Kindervorhersagen ist dann auch eine kumulative Funktion der Ungewissheit im Elternteil, während die Möglichkeit zukünftiger Impulse in beiden einbezogen wird. Erfreut zu sehen, dass jemand anderes diesen Ansatz verwendet.
IrishStat

Amazon hat kürzlich einen DeepAR-Algorithmus mit Open Source unter dem GluonTS-Framework geöffnet, der das MxNet-Framework nutzt, obwohl mir die Dokumentation an dieser Stelle etwas fehlt. aws.amazon.com/blogs/opensource/…
hardikudeshi

5

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.


1
Klingt interessant. Nur ein kleines Problem: Selbst in einer so einfachen VAR hat jede Serie ihre eigene Gleichung, sodass es kein Problem ist, nur ein Modell mit einem Parametersatz zu haben . Es sei denn, Sie schlagen mehrere Modelle für dieselbe Serie vor, was aus Sicht der Prognosekombinationen eine gute Idee sein könnte.
Richard Hardy

Ziel: "Ein einziges Modell für die Bedarfsprognose aller 1200 Produkte trainieren?" Das habe ich wörtlich als 1 Typgleichung mit 1 Satz fester / globaler Parameter aus allen 1200 Zeitreihen angenommen. "Vielleicht habe ich es
überlesen

Oder vielleicht habe ich das falsch verstanden.
Richard Hardy

3

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".

di=jFjβji+eiFj

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.

F^j


Ich sehe Ihren Standpunkt in etwa 25 Perioden, die eine sehr kurze Zeitreihe ergeben, aber was, wenn es sich um monatliche Werte handelt? Dann hat das OP zwei Jahre monatliche Daten, was ausreicht, um eine gewisse Saisonalität zu erfassen oder zumindest eine einfache exponentielle Glättung zu verwenden, nicht wahr?
Skander H. - Wiedereinsetzung von Monica am

@SkanderH., 25 Punkte können ausreichen, um eine Serie (dh jede Serie für sich) oder das Aggregat auszuführen. Mein Punkt ist, dass es nicht ausreicht, dies als System auszuführen.
Aksakal

Oder es handelt sich um exogene Faktoren, z. B. solche, die Sie mit einer PCA-Analyse erhalten haben. Vielleicht endogen ?
Richard Hardy

1

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:

Die Trainingseingabe für den DeepAR-Algorithmus ist eine oder vorzugsweise mehrere Zielzeitreihen, die durch denselben Prozess oder ähnliche Prozesse erzeugt wurden. Basierend auf diesem Eingabedatensatz trainiert der Algorithmus ein Modell, das eine Annäherung dieses Prozesses / dieser Prozesse lernt und verwendet, um vorherzusagen, wie sich die Zielzeitreihe entwickelt. Jede Zielzeitreihe kann optional einem Vektor aus statischen (zeitunabhängigen) kategorialen Merkmalen zugeordnet werden, die vom cat-Feld bereitgestellt werden, und einem Vektor aus dynamischen (zeitabhängigen) Zeitreihen, die vom dynamic_feat-Feld bereitgestellt werden.

Soweit ich das beurteilen kann, stellen sie diesen Algorithmus leider nicht für den Offline- / Self-Hosted-Einsatz zur Verfügung.

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.