2. Juni 2021

Ist NeuralProphet f√ľr die Umsatzprognose besser als Prophet?

Mitwirkende
Keine Artikel gefunden.
Newsletter abonnieren
Diesen Beitrag teilen

In diesem Blogbeitrag vergleichen wir zwei Zeitreihenprognosemodelle f√ľr die Vorhersage von Umsatzzahlen im Einzelhandel.

Der erste ist Prophetein Modell, das Facebook vor ein paar Jahren entwickelt hat. Letzten Monat wurde das Codepaket in Version 1.0 auf GitHub veröffentlicht, es ist also ein relativ ausgereiftes Modell im Vergleich zum zweiten Modell, dem NeuralProphet.

Wie der Name schon andeutet, ähnelt NeuralProphet dem Prophet-Modell, aber es wirft ein paar neuronale Netze in den Mix, um die Sache aufzupeppen. Es ist auch nicht Facebook, das das Modell entwickelt.

Was ist Prophet?

Prophet zerlegt eine Zeitreihe in verschiedene Komponenten. Die Komponenten sind alle Funktionen der Zeit. Die wichtigsten davon sind:

  • T√§gliche Saisonalit√§t
  • W√∂chentliche Saisonalit√§t
  • J√§hrliche Saisonalit√§t
  • Trend
  • Feiertage und Veranstaltungen

Die Saisonalit√§ten sind Fourier-Reihen. Die Sinuskurven in den Fourier-Reihen haben Perioden, die der Saisonalit√§t entsprechen. So ist z. B. die Anzahl der Perioden pro Tag bei der t√§glichen Saisonalit√§t immer eine ganze Zahl. Das Gleiche gilt f√ľr die Anzahl der Perioden pro Woche f√ľr die w√∂chentliche Saisonalit√§t.

Die Trendkomponente ist eine st√ľckweise lineare Funktion. Die Parameter f√ľr diese Komponente sind die Deltas zwischen den einzelnen Teilen des Trends.

Die letzte Komponente in Prophet modelliert Ereignisse und Feiertage. Sie unterscheiden sich von den Saisonalit√§ten, weil sie √ľber die Jahre hinweg eine √§hnliche Wirkung haben, aber einen anderen Zeitpunkt. Sie werden mit einer Indikatormatrix modelliert, die angibt, wann jedes Ereignis stattfindet, und mit einem Vektor, der die Auswirkungen eines jeden Ereignisses darstellt.

Das Sch√∂ne an einem additiven Modell wie diesem ist, dass man es mit neuen Komponenten erweitern kann. Man k√∂nnte zum Beispiel einen zus√§tzlichen linearen Term hinzuf√ľgen, um die Auswirkungen einer externen Zeitreihe zu modellieren. (Der schlaue Leser fragt sich nun, warum wir uns auf lineare Regressoren beschr√§nken... *SpannendeVorahnung auf den Abschnitt √ľber NeuralProphet*)

Um z. B. den Absatz von Toilettenpapier zu prognostizieren, k√∂nnte man einen externen Regressor hinzuf√ľgen, der die H√§ufigkeit darstellt, mit der das Wort "Lockdown" am Vorabend in den Nachrichten verwendet wurde. ūüí©

Jetzt m√ľssen wir nur noch die optimalen Parameter f√ľr das Modell finden. Das Prophet-Codepaket st√ľtzt sich auf Stan und seine Optimierungsmethoden, um das Modell anzupassen. Wer h√§tte gedacht, dass Stan nicht nur Ihr gr√∂√üter Fan ist, sondern auch eine Programmiersprache f√ľr die statistische Modellierung!

Was ist NeuralProphet?

NeuralProphet ist das Ergebnis der Erweiterung des grundlegenden Prophet-Modells um einen zusätzlichen Term, nämlich AR-Netz. Wir kennen Prophet bereits, also schauen wir uns AR-Net an, die Lieblingsmodellierungstechnik der Piraten.

Die Autoren von AR-Net schlagen vor, ein autoregressives Prognosemodell mit einem neuronalen Feedforward-Netzwerk zu lernen. Autoregressive Modelle sind nichts Neues, aber normalerweise verwendet man ein lineares Modell, das mit den kleinsten Quadraten angepasst wird, und keine neuronalen Netze, die mit Backpropagation angepasst werden.

Ein mehrschichtiges neuronales Feedforward-Netzwerk ist nat√ľrlich aussagekr√§ftiger als ein lineares Modell, aber es gibt noch einen weiteren Vorteil. AR-Net l√§sst sich auch viel besser auf gr√∂√üere Datens√§tze und mehr Eingaben skalieren, wie dieses Diagramm zeigt:

Die Trainingszeit des AR-Netzes steigt nicht exponentiell mit der AR-Reihenfolge.

Neben dem AR-Net verbessert NeuralProphet auch die linearen externen Regressoren von Prophet zu neuronalen Feedforward-Netzwerken, weil tiefer == besser.

Das Hinzuf√ľgen neuronaler Netze zu Prophet hat den Nachteil, dass die Anzahl der erlernbaren Parameter drastisch ansteigt. Um dies zu bew√§ltigen, tauscht NeuralProphet das Stan-Backend gegen ein PyTorch-Backend aus und trainiert mit stochastischem Gradientenabstieg.

Genug geredet. Probieren wir beide Modelle in freier Wildbahn aus!

Gegen√ľberstellung mit w√∂chentlichen Daten zum elektronischen Handel

Bei ML6 haben wir den Luxus, dass wir tonnenweise gro√üartige (und weniger gro√üartige) Kundendatens√§tze finden. F√ľr dieses erste Experiment werden wir einen dieser Datens√§tze verwenden.

Der Datensatz stammt von einem E-Commerce-Unternehmen, das die Verk√§ufe seiner Produkte vorhersagen m√∂chte , um zu vermeiden, dass die Best√§nde ausgehen. Im realen Projekt prognostizieren wir 40.000 Artikel auf w√∂chentlicher Basis, aber hier fassen wir die Artikel pro Kategorie zusammen, um die Dinge f√ľr die Kinder im Publikum zu vereinfachen.

Die Kategorien von Interesse sind alle Arten von Kleidung wie T-Shirts, Kapuzenpullis, Leggings und echte Hosen.

Zusammenfassend lässt sich sagen, dass wir die Modelle auf diese Weise bewerten:

  • # Wochen Trainingsdaten: 157
  • # Wochen Testdaten: 9
  • # Kategorien: 16 (Parka, Kapuzenpulli, Jeans, Kleid, Leggings, Crewneck, Kapuzenpulli mit Rei√üverschluss, Sweatpants, Sweatshirt, leichte Jacken, Bomberjacken, Shirt, Sweat-Jumpsuit, College-Jacken, T-Shirt, T-Shirt langarm)
  • Auswertungsmetrik: sMAPE, wie sie im Prognosewettbewerb M4 verwendet wird (Hinweis: In M5, dem gut benannten Nachfolger von M4, wird die sMAPE-Metrik durch den gewichteten mittleren quadratischen Fehler ersetzt, aber wir w√§hlen hier sMAPE, weil mehr Leute den guten alten sMAPE kennen und verstehen).

Der Unterschied zwischen dem Prophet- und dem NeuralProphet-Modell ist das AR-Net. Wenn wir also das AR-Netz nicht zu NeuralProphet hinzuf√ľgen, erwarten wir, dass Prophet und NeuralProphet die gleichen Parameter lernen und die gleiche Leistung erzielen.

Aber das tun sie nicht. Dies sind die Ergebnisse f√ľr die Standardmodelle:

Wenn die Differenz positiv ist, hat NeuralProphet besser abgeschnitten als Prophet.

In der letzten Zeile sehen wir, dass Prophet im Durchschnitt 3,9 % besser abschneidet als NeuralProphet.

Da der Unterschied bei T-Shirts am größten ist, wollen wir herausfinden, was bei den Vorhersagen von NeuralProphet falsch läuft.

Prophet:

Prophetenvorhersage f√ľr T-Shirt-Verk√§ufe. Blau sind die Trainingsdaten, orange die Validierungsdaten. (y-Achse ist anonymisiert)

NeuralProphet:

NeuralProphet's Vorhersage f√ľr T-Shirt-Verk√§ufe. Blau sind die Trainingsdaten, orange die Validierungsdaten. (y-Achse ist anonymisiert)

Es scheint, dass NeuralProphet besser zu den Trainingsdaten passt, aber seine Prognose ist schlechter. Das riecht nach √úberanpassung.

Wie in den vorherigen Abschnitten erläutert, lernen sowohl Prophet als auch NeuralProphet, eine Zeitreihe zu zerlegen. Lassen Sie uns diese Komponenten aufzeichnen, um weitere Einblicke in die Modelle zu erhalten.

Prophet:

Der Trend und die j√§hrliche Saisonalit√§t, die Prophet f√ľr die w√∂chentlichen T-Shirt-Verk√§ufe ermittelt hat. (Trend-Y-Achse ist anonymisiert)

Prophet hat einen ganz einfachen Trend entdeckt: Jedes Jahr werden im Fr√ľhling die meisten T-Shirts verkauft. Das macht Sinn.

NeuralProphet:

Der Trend und die j√§hrliche Saisonalit√§t, die NeuralProphet f√ľr die w√∂chentlichen T-Shirt-Verk√§ufe gelernt hat. (Trend-Y-Achse ist anonymisiert)

Die Saisonalit√§t von NeuralProphet sieht der von Prophet sehr √§hnlich, aber der Trend ist definitiv falsch und hat sich √ľberholt.

Die Erkl√§rung f√ľr diesen Unterschied ist recht einfach.

Obwohl die zugrundeliegende Implementierung des Trendmodells die gleiche ist, verf√ľgt NeuralProphet standardm√§√üig √ľber keine Regularisierung des Trends.

Prophet legt jedoch einen Laplace-Prior auf die Parameter der Trendfunktion. (Zur Erinnerung: Der Trend war eine st√ľckweise lineare Funktion, bei der die Parameter die Deltas an jedem √Ąnderungspunkt waren).

Der Laplace-Prior ist das Bayes'sche √Ąquivalent zum Hinzuf√ľgen eines L1-Regularisierungsterms(Erkl√§rung). Das bedeutet, dass er die Trend-Deltas dazu zwingt, sp√§rlich zu werden und √Ąnderungspunkte aus der st√ľckweise linearen Funktion entfernt.

Der NeuralProphet-Code erm√∂glicht es uns, diese L1-Regularisierung hinzuzuf√ľgen (obwohl er die Regularisierung ohne ersichtlichen Grund intern skaliert)

Intern skaliert NeuralProphet den Parameter f√ľr die Trendregulierung.

Nachdem der Hyperparameter trend_reg auf 100 gesetzt wurde, ist dies die Darstellung der Komponenten von NeuralProphet:

Der Trend und die j√§hrliche Saisonalit√§t, die NeuralProphet f√ľr die w√∂chentlichen T-Shirt-Verk√§ufe nach der Regularisierung des Trends gelernt hat. (Trend-Y-Achse ist anonymisiert)

Und das ist die Prognose:

NeuralProphets Vorhersage f√ľr T-Shirt-Verk√§ufe nach der Regularisierung. Sie ist besser als ohne die Regularisierung. (y-Achse ist anonymisiert)

Diese Diagramme sind denen von Prophet sehr ähnlich. Und der durchschnittliche Unterschied bei sMAPE ist jetzt auf 0,9 % gesunken.

NeuralProphet schneidet also immer noch schlechter ab als Prophet, aber es hat noch einen letzten Deus ex Machina mit Stelzenbein in petto: AR-Net!

*Antiklimax-Alarm* Seltsamerweise f√ľhrt das Hinzuf√ľgen von AR-Net nicht dazu, dass NeuralProphet besser abschneidet als Prophet. Unabh√§ngig von den AR-Net-Hyperparametern erreicht Prophet immer noch die gleiche Leistung wie sein neuronal ausgestattetes Gegenst√ľck.

‚Äć

Dies ist die Hypothese:

AR-Net versucht, ein Muster in den Abweichungen des Verkaufsvolumens von der Summe aus Saisonalität und Trend zu erkennen. Aber es gibt einfach nicht genug Daten um dies zu tun.

Ja, es gibt also gen√ľgend Daten, um eine saisonale Komponente und einen Trend zu erkennen. Aber, nein, es gibt nicht genug Daten, um ein Muster zu erkennen, wie die Zeitreihe von diesen Komponenten abweicht.

Leider können wir keine neuen Datenpunkte erfinden, um diese Hypothese mit diesem Datensatz zu beweisen, also nehmen wir einen neuen (öffentlichen): Iowa Liquor Retail Sales.

Weitere Daten

Der Bundesstaat Iowa kontrolliert die Großhandelskäufe von Spirituosen im gesamten Bundesstaat und veröffentlicht seit 2012 jede Verkaufstransaktion. Wir wissen also, wer was wo gekauft hat, und zwar mit täglicher Granularität:

Ein Ausschnitt aus den Iowa Liquor Retail Sales-Daten in BigQuery.

Wir f√ľhren eine minimale Vorverarbeitung durch. Zuerst entfernen wir alle Wochenendverk√§ufe. (In dieser Diskussion sagt die Iowa Alcoholic Beverages Division, dass es keine geben sollte, also nehmen wir an, dass dies ein Fehler ist.) Dann berechnen wir das Gesamtumsatzvolumen pro Tag in Dollar f√ľr den gesamten Bundesstaat. Dies wird unsere Zeitreihe sein:

SELECT date, SUM(sale_dollars) AS sale_dollarsFROM `bigquery-public-data.iowa_liquor_sales.sales`WHERE EXTRACT(DAYOFWEEK FROM date) NOT IN (1,7)GROUP BY dateORDER BY date

Der vorherige Datensatz hatte 157 Trainingsdatenpunkte. Da dieser Datensatz 8 Jahre (ohne Wochenenden) umfasst , haben wir √ľber 2200 Datenpunkte. Wir k√∂nnen also die Anzahl der Datenpunkte in den Trainingsdaten von 0 bis 2200 variieren und die Leistungen von Prophet und NeuralProphet f√ľr jede Datensatzgr√∂√üe vergleichen.

F√ľr jede Datensatzgr√∂√üe m√ľssen die Modelle das Verkaufsvolumen 30 Tage im Voraus vorhersagen. Die Leistung wird wiederum als sMAPE gemessen.

Diesmal k√∂nnen wir auch den Zirkus der Hyperparameter-Einstellung √ľberspringen. Wir m√ľssen nur die Eingabedimensionen f√ľr AR-Net ausw√§hlen und auf 30 einstellen. Das bedeutet, dass AR-Net die Verkaufsdaten des letzten Monats nutzen kann, um nach Hinweisen auf die Zukunft zu suchen.

Das ist das Ergebnis:

Leistungsvergleich zwischen Prophet und NeuralProphet. Wenn die Kurve positiv ist, gewinnt NeuralProphet.

Das Diagramm scheint unsere Hypothese zu best√§tigen! Wir brauchten nur mehr Daten, damit das AR-Net etwas N√ľtzliches lernen konnte.

Schlussfolgerungen

  • Durch das Hinzuf√ľgen neuronaler Netze verliert NeuralProphet etwas von der Einfachheit und Intuitivit√§t, die Prophet bietet. Au√üerdem gibt es mehr Hyperparameter, die eingestellt werden m√ľssen.
  • Wir haben keine externen Regressoren hinzugef√ľgt. Das k√∂nnte die Prognosen noch weiter verbessern.
  • Fazit der Schlussfolgerung: NeuralProphet liefert bessere Umsatzprognosen als Prophet, wenn man gen√ľgend Datenpunkte hat.

NeuralProphet √ľbertrifft Prophet, wenn Sie gen√ľgend Daten haben.

‚Äć

Verwandte Beiträge

Alle anzeigen
Keine Ergebnisse gefunden.
Es gibt keine Ergebnisse mit diesen Kriterien. Versuchen Sie, Ihre Suche zu ändern.
Großes Sprachmodell
Stiftung Modelle
Unternehmen
Unser Team
Strukturierte Daten
Chat GPT
Nachhaltigkeit
Stimme und Ton
Front-End-Entwicklung
Schutz und Sicherheit von Daten
Verantwortungsvolle/ethische KI
Infrastruktur
Hardware und Sensoren
MLOps
Generative KI
Verarbeitung nat√ľrlicher Sprache
Computer Vision