Lesen Sie unseren Artikel über

.

Wie Sie die richtigen Visualisierungen auswählen und sie in Streamlit implementieren, um Ihre Prognosemodelle besser zu debuggen

TL; DR

Bei Prognosemodellen ist es oft am besten, kontinuierlich zu iterieren, indem man einige data-Quellen hinzufügt, das Feature-Engineering verbessert, die Modellparameter verfeinert... Meistens sind Data-Wissenschaftler auf nur einen KPI festgelegt (d.h. RMSE, Vorhersage-Genauigkeit...). Hinter diesen KPIs verbergen sich oft viel mehr Informationen, die analysiert werden müssen, um die Vorhersage zu verbessern. Die Entwicklung eines geeigneten Visualisierungstools ist ein großartiges Mittel, um tief in das Modellverhalten einzutauchen, schnell Schwachstellen Ihres Modells zu erkennen und so effizient an Genauigkeit zu gewinnen.

In diesem Artikel werden die Schlüsselfragen entwickelt, die man sich bei der Bewertung eines Prognosemodells stellen sollte. Anschließend werden die wichtigsten Visualisierungen zur Beantwortung dieser Fragen vorgestellt und schließlich wird eine schnelle Implementierung im Rahmen eines einheitlichen Tools zur Erfassung all dieser Visualisierungen mit Streamlit vorgeschlagen.

Kontext

Dieser Artikel fasst zusammen, was wir bei der Entwicklung eines einheitlichen Visualisierungstools gelernt haben, das Data-Wissenschaftler, Softwareingenieure, Product Owner und Demand Planner (Geschäftsexperten) bei der Entwicklung von Sell-in-Prognosemodellen für mehr als 10 Geschäftsbereiche in einem Lebensmittel- und Getränkeunternehmen unterstützt. Unsere Modelle erstellten Prognosen auf der Ebene Tag x Lager x Produkt für die kommenden 14 Wochen. Diese wurden mit Hilfe von Boosting-Methoden entwickelt und berücksichtigen Produktmerkmale, historische Verkäufe, Ereignisse und Werbeaktionen data.

Die wichtigsten Fragen, die Sie sich bei der Bewertung eines Prognosemodells stellen sollten

1. Ist das Modell im Vergleich zur Basislinie gut?
Der Zugriff auf aktuelle Vorhersagen (z.B. Prognosen des Bedarfsplaners) im selben Bereich ist sehr hilfreich. Es ermöglicht ein gutes Verständnis des Geschäftsverhaltens für einen bestimmten Zeitraum, ein Produkt oder einen Standort. Je mehr Sie das Unternehmen befragen, desto mehr Einblicke erhalten Sie und desto mehr können Sie die richtigen Funktionen implementieren.

2. Verfolgung von Über- oder Unterprognosen und Rückgang der Vorhersagegenauigkeit
Die wichtigsten Fragen sind: Erfasse ich den globalen Trend? Erfasst das Modell bekannte wiederkehrende Ereignisse wie Feiertage, Lagerschließungen, Schulferien? Gibt es Einbußen bei der Genauigkeit in bestimmten Zeiträumen?
Warum ist das wichtig?

  • Wenn das Modell zu viel vorhersagt, führt dies zu einem Anstieg der Lagerbestände und damit zu Lagerkosten.
  • Wenn das Modell zu niedrige Prognosen abgibt, führt es zu Fehlbeständen, wodurch Verkaufschancen verpasst werden und die Kundenzufriedenheit sinkt.

Das Erkennen solcher Ereignisse ist ein guter Weg, um effizient genauere Vorhersagen zu treffen. Diese sind den Nachfrageplanern oft gut bekannt und lassen sich recht einfach in Ihr Modell implementieren, wenn Sie über die entsprechenden Informationen verfügen. In vielen unserer Geschäftsbereiche wurden zum Beispiel einige Produkte für Schulessen verkauft. Die Einführung und Vorbereitung eines Merkmals, das die Schulferien repräsentiert, führte zu einer großen Steigerung unserer Genauigkeit für diese speziellen Zeiträume.

3. Umgang mit Produktbesonderheiten
Ist meine Leistung bei meinen Produktmarken/-familien homogen? Gibt es weitere Unterscheidungen zwischen meinen Produkten (Produkte, die nur in Aktionszeiträumen verkauft werden, Bestseller vs. Produkte mit geringem Volumen, Produkte )?
Warum ist das wichtig?

  • Um das gute Verhalten des Modells für den gesamten Bereich zu validierenJe nach den geschäftlichen Anforderungen kann eine minimale Genauigkeit für den gesamten Umfang erforderlich sein.
  • Um kritische Produkte zu identifizieren, die genauer analysiert werden können, und so an Genauigkeit zu gewinnen.

Diese Fragen helfen Ihnen, das Geschäft genauer zu verstehen. Zum Beispiel führen Aufteilungsmodelle, die auf der Bedeutung der Produkte in Bezug auf das Volumen basieren, oft zu einer Steigerung der Leistung. Die Nachfrage nach regulären Produkten unterscheidet sich nämlich stark von der Nachfrage nach Aktionsprodukten oder weniger verbreiteten Produkten, die stark mit Aktionszeiträumen korreliert sein können oder ein sehr spärliches Verkaufsprofil aufweisen. In den meisten unserer Fälle haben wir unterschiedliche Modelle trainiert, um diese verschiedenen Arten von Produkten zu berücksichtigen.

4. Werden die konstitutiven Effekte korrekt berücksichtigt?
Erfasst das Modell die Auswirkungen von Werbeaktionen korrekt? Gibt es Kannibalisierungseffekte? Passt sich das Modell gut an exogene Phänomene (z.B. Streiks) an?
Warum ist das wichtig?

  • In den meisten Fällen sind Werbeaktionen ein wichtiger Bestandteil zur Steigerung der Nachfrage und können zu großen Umsatzspitzen führen data.
  • Das kann zu großen Abfällen und Fehlbeständen führen.
  • Ein realistischeres Modell, das komplexe Effekte berücksichtigt, wird von Ihren zukünftigen Nutzern mit größerer Wahrscheinlichkeit angenommen werden.

Bitte lesen Sie den vorherigen Artikel unserer Prognoseserie, um sich mit der Aktion data zu beschäftigen: 5 Tipps zur besseren Berücksichtigung von Werbeaktionen data

Wie Sie Ihr Prognosemodell analysieren: von Makro-KPIs bis hin zur Auswertung in einem bestimmten Bereich

Was sind die wichtigsten Visualisierungen?
Um Ihr Bewertungstool zu erstellen, müssen Sie zwei Elemente kombinieren:

  • Ein Filterteil zur Bewertung der Leistung in einem bestimmten Bereich
  • Eine Reihe von Visualisierungen, um Verbesserungsachsen schnell zu erkennen

Der Filterteil muss es ermöglichen, nach mehreren Achsen zu filtern: Zeitraum der Analyse, Standorte (Einzelhändler, Lager ...), Produkte (eine Reihe von Produkten) und schließlich Produktkategorien.
Wir empfehlen mindestens die 4 folgenden Visualisierungen:

  • Erstens, die Entwicklung des prognostizierten Volumens, mit den Informationen über die tatsächlichen Verkäufe. Dies ist die verständlichste und die erste, die Sie sich ansehen sollten. Sie hilft Ihnen, Ihr Modell zu verstehen: Trifft mein Modell den globalen Trend? Sagt es zu viel oder zu wenig voraus? Erfasse ich die Ausschläge und Rückgänge?

  • Zweitens, die Entwicklung der Vorhersagegenauigkeit. Je nachdem, wie die Prognosegenauigkeit berechnet wird, kann diese Zahl notwendig sein, um die erste zu vervollständigen. Diese Zahl hilft Ihnen, schmerzhafte Perioden in Ihren Prognosen schnell zu erkennen und sagt Ihnen somit, in welcher Periode Sie tief eintauchen sollten.
  • Drittens, einige gut dargestellte KPIs zur Ihre Vorhersagegenauigkeit für verschiedene Bereiche zu berechnen. Wir empfehlen Ihnen, die Genauigkeit auf verschiedene Ebenen aufzuteilen: Lager, Produktkategorien, Produkte und sogar diese Analyseachsen zu mischen (z.B. um eine Heatmap der Prognosegenauigkeit für jedes Lager x Produktkategorien zu erstellen). Auch hier hilft es Ihnen, kritische Lokalisierungen oder Produkte zu finden.
  • Die letzte ist die Beitragsbewertung. Um genau zu verstehen, wie Ihr Modell funktioniert, müssen Sie die am häufigsten verwendeten Merkmale auswerten. Klassische TS-Modelle (ARIMA & Co., Prophet, ...) schlagen von Haus aus eine Zerlegung der Merkmale vor. Für Boosting-Methoden (XGBoost, CatBoost, LightGBM...) werden Frameworks wie SHAP sind sehr nützlich, um das Verhalten für jedes Merkmal genau zu modellieren. Die Darstellung dieser Beiträge in den Perioden hilft Ihnen bei der Beurteilung, welches Phänomen Ihre Prognose zu welchem Zeitpunkt beeinflusst.

Wie können Sie mit Streamlit ein Dashboard für Ihr Prognosestudio erstellen?

Streamlit ist eine Open-Source-Python-Bibliothek, mit der Sie in wenigen Minuten gemeinsam nutzbare Web-Apps erstellen können und die in der Data Science-Community immer mehr an Beliebtheit gewinnt. In diesem Artikel werden wir nicht das Tool vorstellen, da es bereits viele Artikel zu diesem Thema gibt, sondern wir konzentrieren uns auf die einfache Implementierung einer Visualisierung.
Die Entscheidung, Streamlit für diese Art von Projekt zu verwenden, wurde durch mehrere Voraussetzungen motiviert:

  • Mit Streamlit lässt sich ein MVP-Dashboard ganz einfach einrichten.
  • Vollständig integrierbar in ein Data Science-Projekt. Da Ihre Streamlit-Seiten in Python geschrieben werden, können Sie die Funktionen Ihres Kernprojekts nutzen. Wenn Sie zum Beispiel eine Lib entwickelt haben, um auf Ihre data-Vorbereitungen, Referenztabellen und Vorhersagen zuzugreifen, können Sie diese direkt in Ihrem Dashboard-Code verwenden.
  • Sie können Ihr Dashboard für viele Benutzer freigeben, indem Sie es auf einem Port Ihres entfernten Rechners bereitstellen oder es auf einer Lösung wie App Engine, Cloud Run ...

1. Globale Struktur Ihres Dashboards für Prognosen
Bevor Sie sich mit der Implementierung befassen, müssen Sie zunächst die Teile Ihrer Anwendung zeichnen, um ein Dashboard zu erstellen.

Um Ihre Implementierung sauber zu halten, können Sie Ihren Code in mehrere Teile aufteilen:

  • Das zentrale Dashboard, das Sie mit streamlit run forecasting_studio_app.py
  • Die verschiedenen Seiten (einfache EDA auf Ihrem Trainings-dataset, Prognoseanalyse, Beitrag der Merkmale,...)
  • Lib-Skripte zur Erfassung Ihrer data-Vorbereitung / Zahlen für jede Seite

├── config.py
├── Vorhersagestudio
│ ├── Prognose-Analyse
│ │ └── fig_forecast_analysis.py
│ └── Seiten
│ └── forecast_analysis.py
└── forecasting_studio_app.py

Auf der Hauptseite wird die globale Struktur Ihrer App eingerichtet, d.h. das globale Layout Ihrer App: in unserem Fall ein breites Layout und eine Seitenleiste, die den Namen Ihrer App und die verfügbaren Seiten anzeigt.

importieren streamlit als st
von prognose_studio.Seiten importieren Prognose_Analyse
SEITEN =
def Seite_schreiben(Seite):
Seite.Schreiben Sie()
def Haupt():
st.Seitenleiste.Titel("Prognosestudio")
Auswahl = st.Seitenleiste.Auswahlfeld("", Liste(SEITEN.Tasten()))
Seite = SEITEN[Auswahl]
Seite_schreiben(Seite)
wenn __name__ == "__main__":
st.set_page_config(Layout="breit")
Haupt()

Die Konfigurationsdatei, in der wir die Farben und verschiedenen Konfigurationen für alle Ihre Plotly-Figuren sammeln.

X_AXIS_TEMPLATE = Diktat(showline=Wahr,
Gitter anzeigen=Falsch,
Etikett anzeigen=Wahr,
linecolor=“grau”,
Linienstärke=2,
Zecken=“draußen”,
tickfont=Diktat(Familie=“Arial”, Größe=12, Farbe=“rgb(82, 82, 82)”))
Y_AXIS_TEMPLATE = Diktat(showline=Wahr,
Gitter anzeigen=Wahr,
linecolor=“grau”,
gridcolor=“hellgrau”)
LEGENDE = Diktat(Orientierung=“h”, yanchor=“unten”, y=1.02, xanchor=“richtig”, x=1)
COLORDISCRETE = [“#002244”, “#ff0066”, “#66cccc”, “#ff9933”, “#337788”,
“#429e79”, “#474747”, “#f7d126”, “#ee5eab”, “#b8b8b8”]

2.Gebäude “Entwicklung der Visualisierung der Vorhersagegenauigkeit”
Zunächst werden wir unsere Plotly-Zahlen in einem Skript zusammenfassen:

importieren Pandas als pd
von tippen. importieren Liste
importieren plottig.graph_objects als go
von Konfiguration importieren COLORDISCRETE, LEGENDE, X_AXIS_TEMPLATE, Y_AXIS_TEMPLATE
def fig_evolution_of_fa(prognosen_pro_ziel_datum: pd.DataFrame,
Ereignisse: Liste = Keine) -> go.Abbildung:
“””Abbildung, die die Entwicklung der Vorhersagegenauigkeit darstellt
über die Backtest-Periode
Parameter
----
vorhersagen_pro_Ziel_datum : pd.DataFrame
Vorhersage dataset mit mindestens 3 Spalten :
- target_date‘ : das Datum, für das Sie die Prognose erstellen
- forecast_accuracy‘ : Ihr Genauigkeits-KPI
- week_nb‘ : Wochen-ID (von 0 bis 52)
- (optional) ‘demand_planner_forecast_accuracy’ : Ihre Basisprognose
Primärschlüssel : ‘ziel_datum’
Ereignisse : Liste, optional
eine Liste von Datumspaaren, die Zeiträume darstellen, standardmäßig Keine
“””
fig_fa_score = go.Abbildung()
fig_fa_score.add_trace(
go.Streuung(
Name=“Modellvorhersage-Genauigkeit”,
x=prognosen_pro_ziel_datum[‘ziel_datum’],
y=prognosen_pro_ziel_datum[‘prognose_genauigkeit’],
Hovertext=prognosen_pro_ziel_datum[‘woche_nb’],
markierung_farbe=COLORDISCRETE[0]))
# Wenn Sie eine Basislinie haben, können Sie eine zusätzliche Spalte zu Ihrer
# datasetzen, um sie in einem Liniendiagramm anzuzeigen
wenn ‘Nachfrage_Planer_Vorhersage_Genauigkeit’.’ in prognosen_pro_ziel_datum.Spalten:
fig_fa_score.add_trace(
go.Streuung(
Name=“Prognosegenauigkeit von Bedarfsplanern”,
x=prognosen_pro_ziel_datum[‘ziel_datum’],
y=prognosen_pro_ziel_datum[‘Nachfrage_Planer_Vorhersage_Genauigkeit’.’],
Hovertext=prognosen_pro_ziel_datum[‘woche_nb’],
markierung_farbe=COLORDISCRETE[2]))
fig_fa_score.update_xaxes(Reichweite=(min(prognosen_pro_ziel_datum[‘ziel_datum’]),
max(prognosen_pro_ziel_datum[‘ziel_datum’])))
fig_fa_score.update_traces(Modus=‘Linien+Markierungen’, Linie_Form=‘spline’)
fig_fa_score.aktualisieren_layout(
xaxis_title=“Zieldatum”,
yaxis_title=“FA Score”,
plot_bgcolor=‘weiß’,
Legende=LEGENDE,
xAchse=X_AXIS_TEMPLATE,
yAchse=Y_AXIS_TEMPLATE)
wenn Ereignisse:
fig_fa_score.aktualisieren_layout(
Formen=[get_vertical_filled_area(Segment[0], Segment[1], ‘rgb(102, 204, 204)’)
für Segment in Ereignisse])
return fig_fa_score
def get_vertical_filled_area(starten: Schwimmer, Ende: Schwimmer, Farbe: str = “blau”) -> Diktat:
“””Liefert ein vertikales Formdiktat, mit dem Sie Ereignisse auf Figuren hervorheben können.”””
return Diktat(Typ=“rekt”,
xref=“x”,
yref=“Papier”,
x0=starten,
y0=0,
x1=Ende,
y1=1,
fillcolor=Farbe,
Ebene=“unten”,
zeilen_breite=0,
Opazität=0.5)

Schließlich werden wir unsere Seite für die Prognoseanalyse implementieren, die unser dataset lädt, unsere Zahlen auf verschiedene Spalten verteilt, ...

importieren Pandas als pd
importieren streamlit als st
von prognose_studio.Prognose_Analyse.abbildung_vorhersage_analyse importieren fig_evolution_of_fa
def Schreiben Sie() -> Keine:
st.Titel(‘Vorhersage-Analyse’)
df = pd.lesen_csv(‘Ihr_dataset.csv’)
# Sie können hier einige benutzerdefinierte Ereignisse zur Anzeige laden
# ex : events = [(‘2019-07-01’, ‘2019-09-01’), (‘2020-07-01’, ‘2020-09-01’)]
Ereignisse = Keine
evo_cont1, evo_cont2 = st.beta_spalten(2)
evo_cont1.Zwischenüberschrift(‘Entwicklung der Vorhersage-Genauigkeit’)
fig_evo_fa = fig_evolution_of_fa(df, Ereignisse)
evo_cont1.plolty_fig(fig_evo_fa)
wenn __name__ == “__main__”:
Schreiben Sie()

Tadam ! Hier ist unsere App :

Werfen wir einen Blick auf die vorgestellte Abbildung. Im Hinblick auf die zuvor besprochenen Punkte sind hier die wichtigsten Punkte unserer Abbildung:

  • Erstens können wir so schnell die Wochen erkennen, für die unser Modell nicht genau ist: Der Dezember scheint ein kompliziert zu prognostizierender Monat zu sein. Das Ende unseres Backtest-Zeitraums ist ebenfalls ein Problem für unser Modell. Wir müssen mit dem Unternehmen diskutieren, um zu verstehen, welche Effekte in diesen Wochen vorherrschen, und das Modell dementsprechend anpassen.
  • Die Zahl hat auch einen Parameter namens “Ereignisse”, eine Liste von Datumspaaren, die globale Ereignisse darstellen und es uns ermöglichen, Ereignisse wie Schulferien hervorzuheben. Wir können schnell erkennen, dass unsere schlechteste Woche eine Ferienwoche ist. Vielleicht haben einige Lager in dieser Zeit geschlossen oder die Kunden haben mehr als üblich bestellt, um sich auf den Jahresbeginn vorzubereiten... Auch hier können Geschäftsinhaber sicherlich ein externes Auge auf diese Wochen werfen.
  • Wie Sie sehen können, werden zwei Reihen angezeigt. In unserem Fall stellt sie die Genauigkeit unseres Modells und des Modells von Demand Planners für denselben Zeitraum dar. Anhand der Abbildung können wir sehen, dass die schlechtesten Wochen auch die komplizierten Wochen für Demand Planners sind. Der größte Rückgang im April wurde von unserem Modell gut vorhergesagt. Das Ende des Backtest-Zeitraums scheint für unser Modell komplizierter zu sein, während die Genauigkeit von Demand Planners stabil zu sein scheint.

Fazit:

  • EDA ist der Schlüssel zur Bewertung Ihres Prognosemodells
  • Die Zusammenfassung aller Zahlen in einem einzigen Dashboard ermöglicht es Ihnen, sich auf Iterationen zu konzentrieren und so an Effizienz zu gewinnen.
  • Das Dashboard ermöglicht es Ihnen, sich auf wichtige Bereiche zu konzentrieren und Verbesserungspotenziale schnell zu erkennen.
  • Sie haben soeben die Grundstruktur Ihres Dashboards implementiert. Fügen Sie einfach neue Zahlen hinzu!

Sobald Sie Ihr Visualisierungstool erstellt haben, ist es an der Zeit, es einzusetzen. Hier finden Sie eine großartige Ressource, um Ihre App zu teilen: Wie können Sie Ihre Streamlit-App in GCP bereitstellen und sichern?

Vielen Dank für die Lektüre und zögern Sie nicht, uns bei Fragen zu kontaktieren. Mehr über unsere Projekte finden Sie auf unserer Website Blog.

Mittel Blog von Artefact.

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