Lesen Sie unseren Artikel über

.

Sie brauchen eine Grundlage für Ihr neuestes Projekt zur Zeitreihenprognose? Sie möchten einem Unternehmen den Entscheidungsprozess eines Prognosemodells erklären audience? Sie möchten verstehen, ob Autopreise saisonal sind, bevor Sie ein neues Auto kaufen? Wir haben vielleicht etwas für Sie! In diesem Artikel stellen wir Ihnen Streamlit Prophet vor, eine Web-App, mit der Wissenschaftler data Prognosemodelle auf visuelle Weise trainieren, bewerten und optimieren können. Die Vorhersagen werden mit Prophet erstellt, einem schnellen und leicht interpretierbaren Modell.

Sie können die App online testen Hier aber aufgrund begrenzter gemeinsam genutzter Computerressourcen ist er möglicherweise nicht immer verfügbar. Eine andere Möglichkeit ist die Installation des Python-Paket und führen Sie es lokal aus.

Was ist Streamlit Prophet?

Streamlit Prophet ist ein Python-Paket, mit dem Sie eine App zur Erstellung von Zeitreihenprognosemodellen bereitstellen können visuell und ohne jegliche Codierung. Sobald Sie ein dataset mit historischen Werten des zu prognostizierenden Signals hochgeladen haben, trainiert die App mit wenigen Klicks ein Prognosemodell, zusammen mit verschiedenen Visualisierungen, die Ihnen helfen, seine Leistung zu bewerten und weitere Erkenntnisse zu gewinnen.

Das zugrunde liegende Modell wird mit Prophet, eine von Facebook entwickelte Open-Source-Bibliothek zur Prognose von Zeitreihen data. Das Signal wird in mehrere Komponenten wie Trend, Saisonalität und Ferieneffekte zerlegt. Der Schätzer lernt, jeden dieser Blöcke separat zu modellieren und addiert dann ihre verschiedenen Beiträge, um eine leicht interpretierbare Prognose zu erstellen. Er schneidet besser ab, wenn die Reihen starke saisonale Muster aufweisen und wenn mehrere Zyklen historischer data verfügbar sind. Sie können sich dies ansehen thread oder dies Artikel wenn Sie mehr über die mathematischen Grundlagen von Prophet erfahren möchten.
Die Schnittstelle wird mit Streamlit, ein Python-Framework für die Erstellung von data-Wissenschafts-Webanwendungen.

Was sind die wichtigsten Merkmale?

Streamlit Prophet soll data-Wissenschaftlern und Business-Analysten helfen, ihre Zeitreihenprojekte schnell zum Laufen zu bringen. Zur Veranschaulichung: Nehmen wir an, wir möchten die zukünftigen Verkäufe von Konsumgütern in einem bestimmten Geschäft anhand historischer data aus den Jahren 2011 bis 2015 vorhersagen. Unser data-Set sieht wie die unten stehende Tabelle aus.

Ein Basismodell mit Standardparametern wird auf das data angepasst, sobald es hochgeladen wird. Lassen Sie uns nun sehen, wie wir Streamlit Prophet verwenden können, um es zu verbessern und ein besseres Verständnis des Phänomens zu erreichen.

Data Erkundung

Der erste Schritt bei jedem Prognoseprojekt besteht darin, sicherzustellen, dass das dataset keine Geheimnisse für Sie hat. Prophet bietet von Haus aus eine schöne Zersetzung des Signals um Ihnen zu helfen, dieses Ziel zu erreichen. In der App sind mehrere Diagramme verfügbar, um diese wertvollen Erkenntnisse auf einen Blick zu erhalten.
Das folgende Diagramm ist ein guter Ausgangspunkt, da es eine globale Darstellung der hochgeladenen Zeitreihen bietet und viele nützliche Informationen enthält.

Die schwarzen Punkte sind die tatsächlichen historischen Verkäufe, die meist zwischen 75 und 225 Einheiten pro Tag liegen. Einige Ausreißer ohne Verkäufe oder mit geringem Volumen sind am Ende eines jeden Jahres um Weihnachten herum zu erkennen, wenn die Geschäfte wahrscheinlich geschlossen sind. Der Trend wird auf einer roten Linie dargestellt, um eine synthetischere Vision des Signals zu erhalten und globale Entwicklungen zu visualisieren. Die blaue Linie schließlich stellt die Prognosen eines Prophet-Modells dar, das automatisch auf Ihr dataset trainiert wurde. Hier sehen wir, dass das Modell für 2016 einen Anstieg der Umsätze erwartet und damit dem Wachstumstrend folgt, der 2015 begann.

Diese Vorhersagen scheinen saisonal zu sein, aber es ist schwer, die verschiedenen periodischen Komponenten auf dieser ersten Grafik zu unterscheiden. Schauen wir uns eine andere Visualisierung an, um zu verstehen, wie diese saisonalen Muster die Modellausgabe beeinflussen.

Es wurden zwei Periodizitäten festgestellt, die einige interessante Einblicke in die Gewohnheiten der Verbraucher bieten. Der Wochenzyklus zeigt, dass die meisten Menschen an den Wochenenden einkaufen, an denen die Prognosen um fast 40 Einheiten pro Tag steigen. Die Grafik deutet auch darauf hin, dass die verkauften Produkte eine jährliche Saisonalität aufweisen, wobei im Sommer etwas mehr verkauft wird als im Rest des Jahres. Diese periodischen Komponenten und der globale Trend werden dann von dem Schätzer kombiniert, um Prognosen für zukünftige Tage zu erstellen.

Leistungsbewertung

Diese Darstellungen geben die Art und Weise wieder, wie data von Prophet modelliert wird. Aber wie können wir sicherstellen, dass diese Darstellung zuverlässig ist? Um diese berechtigte Frage zu beantworten, ist ein Abschnitt der App der Bewertung der Modellqualität gewidmet. Sie liefert dem Benutzer schnell eine Basisprognoseleistung. Zu diesem Zweck wird die Zeitreihe in mehrere Teile aufgeteilt: Das Modell wird zunächst an einen Trainingssatz angepasst und dann an einem Validierungssatz getestet. Andere Optionen wie die Kreuzvalidierung sind für eine fortgeschrittene Nutzung ebenfalls verfügbar.

Zur Bewertung der Modellqualität können verschiedene Metriken verwendet werden: Absolute Metriken wie der mittlere quadratische Fehler (Root Mean Squared Error, RMSE) sind hilfreich, um sich ein Bild von der Größe der Fehler in Bezug auf die Anzahl der Verkäufe zu machen, aber relative Metriken wie der mittlere absolute prozentuale Fehler (MAPE) sind vielleicht besser zu interpretieren. Es liegt an Ihnen, die Metrik zu wählen, die für Ihren Anwendungsfall am relevantesten ist.

Es ist jedoch unwahrscheinlich, dass die Leistung über alle data-Punkte hinweg einheitlich ist, daher reicht ein globaler Indikator nicht aus. Wir sollten die Metriken auf einer detaillierteren Granularität berechnen, um ein klares Verständnis der Modellqualität zu erhalten. Beginnen wir mit einer eingehenden Analyse auf täglicher Ebene, was in unserem Fall die kleinstmögliche Granularität ist, da das Modell eine Vorhersage pro Tag macht.

Wir können eine wichtige Variabilität beobachten: Es gibt Tage, an denen der Fehler größer als 20% ist, während einige andere Vorhersagen nahezu perfekt zutreffen. Angesichts dieser Informationen werden Sie sich wahrscheinlich fragen, ob es Muster in der Art gibt, wie das Modell Fehler macht. Gibt es bestimmte Tage, an denen das Modell schlecht abschneidet? Glücklicherweise bietet die App einige praktische Diagramme, die uns helfen, unsere Neugierde zu befriedigen.

Fehlerdiagnose

Der Abschnitt über die Fehlerdiagnose ist wahrscheinlich der nützlichste, denn er ermöglicht es Ihnen, die Bereiche hervorzuheben, in denen die Prognosen verbessert werden könnten, und so die wichtigsten Herausforderungen für den Aufbau eines zuverlässigen Prognosemodells genauer zu bestimmen.

Für diese Untersuchung stehen mehrere Visualisierungen zur Verfügung. Sie sind interaktiv, so dass Sie sich leicht auf bestimmte Bereiche konzentrieren können. Das Streudiagramm unten stellt zum Beispiel jede Vorhersage für das Validierungsset durch einen einzelnen Punkt dar. Wenn Sie den Mauszeiger über die Punkte bewegen, die von der roten Linie entfernt sind, können Sie erkennen, für welche Art von data-Punkten die Vorhersagen weit von der Wahrheit entfernt sind.

Wenn Sie in unserem Beispiel mit dem Mauszeiger über den oberen rechten Bereich fahren, sehen Sie, dass die Punkte, die am weitesten von der roten Linie entfernt sind, Samstage und Sonntage sind, was darauf schließen lässt, dass das Modell unter der Woche besser abschneidet. Lassen Sie uns die Performance-Metriken nach Wochentag aggregieren, um diese Intuition zu bestätigen.

In der Tat sind die Fehler an den Wochenenden im Durchschnitt größer als während der restlichen Woche. Diese Information sollten Sie im Auge behalten, wenn Sie versuchen, das Modell zu optimieren. Die Leistung kann sich auch im Laufe der Zeit verändern. Daher ist es möglich, andere in der App verfügbare Aggregationsebenen zu wählen, um dies zu überprüfen. Wir könnten zum Beispiel die Metriken auf wöchentlicher oder monatlicher Ebene berechnen oder über einen bestimmten Zeitraum, in dem wir vermuten, dass die Leistung anders ist als sonst.

Modell-Optimierung

Sobald wir die Hauptschwächen des Modells entdeckt haben, stehen mehrere Optionen zur Verfügung, um es zu verbessern: In der Seitenleiste der App können Sie die Standardkonfiguration bearbeiten und Ihre eigenen Spezifikationen eingeben. Alle Leistungsmetriken und Visualisierungen werden jedes Mal aktualisiert, wenn Sie die Einstellungen ändern, um schnelles Feedback zu erhalten.

Die erste Möglichkeit, eine bessere Leistung zu erzielen, besteht darin, Ihr dataset einer individuellen Vorverarbeitung zu unterziehen. Es gibt mehrere Alternativen, um die zuvor identifizierten Herausforderungen zu umgehen. Mit einer Bereinigung können wir zum Beispiel die Ausreißer um Weihnachten herum entfernen, die das Modell verwirren könnten. Wir könnten auch bestimmte Tage herausfiltern und so ganz einfach unterschiedliche Modelle für die Woche und die Wochenenden trainieren, da diese mit unterschiedlichem Kaufverhalten verbunden zu sein scheinen. Es stehen auch einige andere Filter- und Resampling-Optionen zur Verfügung, falls sie für das vorliegende Problem relevant sind.

Die Prophet-Hyperparameter können ebenfalls angepasst werden, um das Modell besser an das data anzupassen. Diese Parameter beeinflussen die Art und Weise, wie der Schätzer lernt, den Trend und die Saisonalität aus den historischen Verkäufen darzustellen, sowie das relative Gewicht dieser Komponenten in der globalen Prognose. Machen Sie sich keine Sorgen, wenn Sie mit den Prophet-Modellen nicht vertraut sind. Einige Tooltipps erklären die Intuition hinter jedem Parameter und führen Sie durch den Abstimmungsprozess. Im Bereich Modellierung können Sie das Modell auch mit externen Informationen wie Feiertagen oder Variablen füttern, die mit dem zu prognostizierenden Signal zusammenhängen (wie z.B. dem Verkaufspreis der Produkte). Diese Regressoren werden wahrscheinlich die Leistung verbessern, da sie dem Modell zusätzliches Wissen über ein Phänomen liefern, das sich auf den Umsatz auswirkt.

Interpretierbarkeit der Vorhersage

Ein genaues Prognosemodell zu haben ist schön, aber noch besser ist es, wenn man die wichtigsten Faktoren erklären kann, die zu den Vorhersagen beitragen. Der letzte Abschnitt der App soll uns helfen zu verstehen, wie das Modell, das wir gerade erstellt haben, Entscheidungen trifft. Es gibt verschiedene Möglichkeiten, diese Frage anzugehen: Wir können entweder eine einzelne Komponente betrachten und sehen, wie sich ihr Beitrag zu den Gesamtprognosen im Laufe der Zeit entwickelt, oder wir können eine einzelne Prognose nehmen und sie in die Summe der Beiträge mehrerer Komponenten zerlegen.

Lassen Sie uns mit der ersten Option beginnen. Die verschiedenen Komponenten, die die Prognosen beeinflussen, sind der Trend, die Saisonalität und die externen Regressoren. Wir haben bereits die Auswirkungen der wöchentlichen und jährlichen Saisonalitäten beobachtet. Konzentrieren wir uns also auf die externen Regressoren, die wir in den Abschnitt zur Modelloptimierung aufgenommen haben: Feiertage und der Verkaufspreis der Produkte.

Der Einfluss einiger Feiertage ist ziemlich wichtig: So erhöht der Tag der Arbeit Anfang September die Prognosen jedes Jahr um 50 Verkäufe, und die Einbrüche an Weihnachten zeigen, dass das Modell die Tatsache berücksichtigt hat, dass die Geschäfte an diesem Tag geschlossen sind. Was den Preis betrifft, so ist er Jahr für Jahr gestiegen, und daher hat sich sein Einfluss auf den Umsatz von positiv zu negativ verändert.

Es könnte auch nützlich sein, zu erklären, wie das Modell eine bestimmte Prognose erstellt hat, insbesondere wenn ein bestimmtes Ereignis die Vorhersage beeinflusst. Das folgende Wasserfalldiagramm zeigt diese Zerlegung für die Prognose vom 31. Oktober 2012.

In diesem Beispiel hat das Modell am Ende 96 Verkäufe prognostiziert, was der Summe der Beiträge von fünf verschiedenen Komponenten entspricht:

  • Globaler Trend (+134): Dies ist der einflussreichste Faktor.
  • Halloween Wirkung (-12): Das Produkt wird an Halloween weniger verkauft als an normalen Tagen.
  • Verkaufspreis (+2): Der Kurs muss an diesem Tag etwas niedriger als der Durchschnitt gewesen sein.
  • Wöchentliche Saisonalität (-23): Dies war ein Mittwoch, also nicht während des Wochenendes.
  • Jährliche Saisonalität (-5): Der Oktober ist Nebensaison für dieses Produkt.

Diese Art der Zerlegung ist nicht nur nützlich, um Erkenntnisse mit Kollegen zu teilen, sondern kann Analysten auch dabei helfen zu verstehen, warum ihr Modell nicht wie erwartet funktioniert. Bei Bedarf stehen in der Seitenleiste der App mehrere Parameter zur Verfügung, mit denen Sie die relative Gewichtung der verschiedenen Komponenten erhöhen oder verringern können.

Wie fangen Sie an?

Die Ausführung der App auf Ihrem eigenen Computer ist ziemlich einfach. Die einzige Voraussetzung ist, dass Sie Python installiert haben. Für Windows-Benutzer sind einige weitere Voraussetzungen erforderlich (siehe Repository für weitere Details). Dann folgen Sie den unten stehenden Anweisungen, um loszulegen.

Installation

Wir empfehlen, eine neue virtuelle Umgebung zu erstellen, um Probleme mit Abhängigkeiten oder Inkompatibilität mit Ihrer aktuellen Umgebung zu vermeiden. Sobald Ihre neue Umgebung aktiviert ist, können Sie das Paket mit dem folgenden Befehl installieren. Die Installation kann ein paar Minuten dauern (5-10).

pip install -U streamlit_prophet

Laufen lassen

Nachdem das Paket nun installiert wurde, können Sie die App mit einem einzigen Befehl von Ihrem Terminal aus starten und in Ihrem Standard-Webbrowser öffnen.

streamlit_prophet deploy dashboard

Und schon sind Sie bereit, Prophet-Modelle zu erstellen! Um mit der Modellierung zu beginnen, müssen Sie zunächst Ihr dataset als csv-Datei mit dem folgenden Format hochladen.

Image

Dann können Sie in der Seitenleiste Ihre Spezifikationen angeben, um die Vorverarbeitungsaufgaben durchzuführen, die Ihren Anforderungen entsprechen, und die Hyperparameter des Modells einzustellen. Sobald Sie mit den Ergebnissen zufrieden sind, speichern Sie Ihr Experiment, um alle Visualisierungen zu behalten und es später leicht reproduzieren zu können.

Cloud-Bereitstellung

Wenn Sie die App für mehrere Mitarbeiter leicht zugänglich machen möchten, ohne dass diese Python herunterladen und das Paket installieren müssen, können Sie die App auf dem cloud bereitstellen. Als erstes müssen Sie das Git-Repository klonen. Anschließend können Sie mit einem Docker-Befehl die Anwendung ganz einfach containerisieren und ein Image erstellen, mit dem Sie die App auf der cloud-Plattform Ihrer Wahl bereitstellen können. Diese Artikel erklärt im Detail, wie Sie dies auf der Google Cloud Platform tun können.

Vielen Dank fürs Lesen, ich würde mich über Ihr Feedback freuen. Wenn Sie zur Entwicklung des Pakets beitragen möchten oder Verbesserungsvorschläge haben, können Sie sich gerne an mich wenden. In der Zwischenzeit können Sie die Projekt-Repository um eine kurze Demo anzusehen und Artefact technisches Blog für weitere Informationen über unsere data Wissenschaftsprojekte.

Mittel Blog von Artefact.

Dieser Artikel wurde ursprünglich veröffentlicht auf Medium.com.
Folgen Sie uns auf unserem Medium Blog !