Ich möchte einen Algorithmus entwickeln, der in der Lage ist, beliebige Zeitreihen zu analysieren und "automatisch" die beste traditionelle / statistische Prognosemethode (und ihre Parameter) für die analysierten Zeitreihendaten auszuwählen.
Wäre es möglich so etwas zu machen? Wenn ja, können Sie mir einige Tipps geben, wie dies angegangen werden kann?
time-series
forecasting
python
StatsNewbie123
quelle
quelle
Antworten:
Zunächst müssen Sie beachten, dass der von IrishStat beschriebene Ansatz für ARIMA-Modelle und nicht für generische Modellgruppen spezifisch ist.
So beantworten Sie Ihre Hauptfrage "Ist es möglich, die Vorhersage von Zeitreihen zu automatisieren?":
Ja ist es. In meinem Bereich der Nachfrageprognose tun dies die meisten kommerziellen Prognosepakete. Dies gilt auch für mehrere Open-Source-Pakete, insbesondere für Rob Hyndmans Funktionen auto.arima () (automatisierte ARIMA-Prognose) und ETS () (automatisierte Prognose mit exponentieller Glättung) aus dem Open-Source-Prognose-Paket in R. Einzelheiten zu diesen beiden Funktionen finden Sie hier . Es gibt auch eine Python-Implementierung von auto.arima namens Pyramid , obwohl sie meiner Erfahrung nach nicht so ausgereift ist wie die R-Pakete.
Sowohl die von mir erwähnten kommerziellen Produkte als auch die von mir erwähnten Open-Source-Pakete basieren auf der Idee, anhand von Informationskriterien die beste Vorhersage zu treffen: Sie passen eine Reihe von Modellen an und wählen dann das Modell mit dem niedrigsten AIC, BIC, AICc, etc .... (in der Regel wird dies anstelle der Validierung der Stichprobe durchgeführt).
Es gibt jedoch eine wichtige Einschränkung: Alle diese Methoden funktionieren in einer einzigen Modellfamilie. Sie wählen das bestmögliche Modell aus einer Reihe von ARIMA-Modellen oder das bestmögliche Modell aus einer Reihe von exponentiellen Glättungsmodellen.
Dies ist viel schwieriger, wenn Sie aus verschiedenen Modellfamilien auswählen möchten, z. B. wenn Sie das beste Modell aus ARIMA, Exponential Smoothing und der Theta-Methode auswählen möchten. Theoretisch können Sie dies auf dieselbe Weise tun wie innerhalb einer einzelnen Modellfamilie, dh unter Verwendung von Informationskriterien. In der Praxis müssen Sie jedoch den AIC oder BIC für alle betrachteten Modelle genau gleich berechnen. Dies ist eine erhebliche Herausforderung. Es ist möglicherweise besser, eine zeitreihenübergreifende Validierung oder eine Out-of-Sample-Validierung anstelle von Informationskriterien zu verwenden, dies ist jedoch rechenintensiver (und für den Code langwierig).
Das Prophet-Paket von Facebook automatisiert auch die Erstellung von Vorhersagen basierend auf allgemeinen additiven Modellen. Weitere Informationen finden Sie hier . Prophet passt jedoch nur zu einem einzigen Modell, obwohl es ein sehr flexibles Modell mit vielen Parametern ist. Die implizite Annahme des Propheten ist, dass ein GAM "das einzige Modell ist, das sie alle regiert", was zwar theoretisch nicht gerechtfertigt ist, aber für reale Szenarien sehr pragmatisch und nützlich ist.
Eine weitere Einschränkung, die für alle oben genannten Methoden gilt: Möglicherweise möchten Sie eine automatische Zeitreihenvorhersage durchführen, da Sie mehrere Zeitreihen prognostizieren möchten, zu viele, um sie manuell zu analysieren. Ansonsten könnten Sie einfach Ihre eigenen Experimente durchführen und das beste Modell selbst finden. Sie müssen bedenken, dass ein automatisierter Prognoseansatz niemals für jede Zeitreihe das beste Modell finden wird - es wird im Durchschnitt über alle Zeitreihen hinweg ein einigermaßen gutes Modell liefern, aber es ist immer noch möglich, dass einige Von diesen Zeitreihen werden bessere Modelle als die durch die automatisierte Methode ausgewählten vorliegen. Siehe diesen Beitragfür ein Beispiel dafür. Um es einfach auszudrücken: Wenn Sie mit automatisierten Prognosen arbeiten, müssen Sie "gut genug" Prognosen tolerieren, anstatt die bestmöglichen Prognosen für jede Zeitreihe.
quelle
Mein vorgeschlagener Ansatz umfasst Modelle, die viel allgemeiner sind als ARIMA, da sie das Potenzial für saisonale Dummies enthalten, die sich im Laufe der Zeit ändern können, mehrere Ebenen, mehrere Trends, Parameter, die sich im Laufe der Zeit ändern können, und sogar Fehlervarianzen, die sich im Laufe der Zeit ändern können. Diese Familie wird genauer als ARMAX-Modelle bezeichnet, schließt jedoch aus Gründen der vollständigen Transparenz eine (seltene) Variante mit multiplikativer Struktur aus.
Sie haben um Tipps gebeten, und ich bin der Meinung, dass dies eine gute Lösung sein könnte, um Ihnen den Einstieg zu erleichtern.
Ich würde vorschlagen, dass Sie Code schreiben, um diesem Flussdiagramm / Workflow zu folgen / zu emulieren. Das "beste Modell" kann durch Auswertung des von Ihnen angegebenen Kriteriums ermittelt werden. Dies kann die MSE / AIC der angepassten Daten oder die MAPE / SMAPE der zurückgehaltenen Daten oder ein beliebiges Kriterium Ihrer Wahl sein.
Seien Sie sich bewusst, dass die Detaillierung jedes dieser Schritte recht einfach sein kann, wenn Sie einige der spezifischen Anforderungen / Ziele / Einschränkungen der Zeitreihenanalyse nicht kennen, ABER es kann (sollte!) Komplexer sein, wenn Sie ein tieferes Verständnis haben / Lernen / Erkennen der Komplexität / Chancen einer gründlichen Zeitreihenanalyse.
Ich wurde gebeten, weitere Anweisungen für die Automatisierung der Zeitreihenmodellierung (oder der Modellierung im Allgemeinen) zu geben. Https://stats.stackexchange.com/search?q=peeling+an+onion enthält einige meiner Anleitungen zu "Zwiebeln schälen" und damit verbundene Aufgaben.
AUTOBOX beschreibt und zeigt die Zwischenschritte, da es ein nützliches Modell darstellt und in dieser Hinsicht ein nützlicher Lehrer sein könnte. Die ganze wissenschaftliche Idee besteht darin, "das hinzuzufügen, was als notwendig erscheint" und "das zu löschen, was als weniger nützlich erscheint". Dies ist der iterative Prozess, den Box und Bacon in früheren Zeiten vorgeschlagen haben.
Modelle müssen komplex genug (ausgefallen), aber nicht zu komplex (ausgefallen) sein. Die Annahme, dass einfache Methoden mit komplexen Problemen funktionieren, steht nicht im Einklang mit der wissenschaftlichen Methode nach Roger Bacon und Tonnen von Anhängern von Bacon. Wie Roger Bacon einmal sagte und ich oft umschrieb: Wissenschaft zu betreiben bedeutet, nach wiederholten Mustern zu suchen. Anomalien zu erkennen bedeutet, Werte zu identifizieren, die nicht wiederholten Mustern folgen. Denn wer die Wege der Natur kennt, wird ihre Abweichungen leichter bemerken, und wer sie kennt, wird ihre Wege genauer beschreiben. Man lernt die Regeln, indem man beobachtet, wann die aktuellen Regeln versagen. Wenn man erkennt, wann das aktuell identifizierte "beste Modell / Theorie" unzureichend ist, kann man zu einer "besseren Darstellung" iterieren.
In meinen Worten "schlug Tukey Exploratory Data Analysis (EDA) vor, die Schemata der Modellverfeinerung vorschlug, die auf offensichtlichen Modellmängeln beruhten, die von den Daten vorgeschlagen wurden". Dies ist das Herz von AUTOBOX und der Wissenschaft. EDA dient dazu zu sehen, was uns die Daten über die formale Modellierungs- oder Hypothesentestaufgabe hinaus sagen können.
Der Lackmustest eines automatischen Modellierungsprogramms ist recht einfach. Trennt es Signal und Rauschen ohne Überanpassung? Empirische Beweise legen nahe, dass dies möglich und möglich ist. Prognosegenauigkeiten sind oft irreführend, da die Zukunft nicht für die Vergangenheit verantwortlich ist und je nach Herkunft die Ergebnisse variieren können.
quelle