iX 3/2018
S. 94
Wissen
Machine Learning
Aufmacherbild

Prognosen stellen mit Facebooks Prophet

Reihenweise

Aussagekräftige Zeitreihenprognosen ohne Expertenwissen erstellen – mit Prophet, Facebooks Open-Source-Bibliothek für R und Python, soll das ohne großen Aufwand möglich sein.

Die Prognose von Zeitreihen beschäftigt viele Unternehmen, insbesondere da durch die deutlich vereinfachte zentrale Speicherung und Vorhaltung beliebiger Daten immer mehr zeitbezogene Prozesse auswertbar werden. Methodiken und Open-Source-Bibliotheken aus dem Machine-Learning-Umfeld (ML) machen einen Einstieg in das Thema ohne großen Aufwand oder Expertenwissen möglich.

Vorhersagen über die Zukunft beeinflussen das Leben aller. Tägliche Wettervorhersagen etwa sind heute eine Selbstverständlichkeit. Ebenso gehören Absatz- oder Neukundenprognosen zur allgegenwärtigen Fragestellung vieler Unternehmen. Bei genauerem Hinsehen offenbaren Unternehmen eine Vielzahl an Prognosezielen, deren präzise Vorhersage einen Mehrwert für die Firma bedeuten kann. Für den Kundensupport ist beispielsweise die erwartete Anzahl eingehender Anrufe hilfreich, um frühzeitig die Kapazitäten im Callcenter zu erhöhen. Gleiches gilt für die erwartete Anzahl an Bestellungen im Onlinehandel, um genug Mitarbeiter im Warenlager verfügbar zu haben. Neben operativen Themen kann der Fokus auch langfristiger sein, wenn es beispielsweise um die Abschätzung des Zweijahrestrends von Sandwich-Toastern geht.

Ungelöste Fragestellungen erschließen

Klassischerweise wurden diese und verwandte Fragestellungen bisher mit Verfahren wie Autoregressive Integrated Moving Average (ARIMA) oder Exponential Smoothing (ES) beantwortet. Viele Unternehmen arbeiten allerdings auch mit nicht dokumentierten, historisch gewachsenen und hochgradig anwenderabhängigen Excel-Formularen, da kein Experte für die genannten Verfahren verfügbar war, eine Prognose aber dringend benötigt wurde. Durch die zunehmende Verbreitung von ML-Algorithmen, getrieben durch die immer größer werdende Verfügbarkeit von Daten, erweitern viele Teams ihre bisherigen Prognoseverfahren um eben diese Techniken, um bisher ungelöste Fragestellungen zu erschließen, vorhandene Prognosen zu verbessern oder Verfahren zu generalisieren und einer großen Zahl von Anwendern zur Verfügung zu stellen.

Diese Zeitreihe beinhaltet die eingegangenen Anrufe in einem fiktiven Callcenter von 2013 bis Ende 2015 (Abb. 1).

Im Folgenden stellt der Artikel diese zusätzlichen Möglichkeiten vor und zeigt, wie man sie ohne großen Aufwand erproben und nutzen kann. Zur Veranschaulichung wird versucht, die Anzahl eingehender Anrufe im Kundensupport der Sauron Ltd. aus Mittelerde zu prognostizieren. Hierfür stehen Daten von Anfang 2013 bis Ende 2015 zur Verfügung (Abbildung 1). Nach der gescheiterten Steigerung der Marktanteile in Mittelerde ist Kundenzufriedenheit ein wichtiges Element in der neuen Unternehmensstrategie.

Ziel ist es, das gesamte Jahr 2016 vorauszusagen. Darüber hinaus soll die Vorhersage jeden Tag erneuert werden, da die Verantwortlichen zwei Wochen vor dem jeweiligen Stichtag noch auf die Personalplanung des Callcenters einwirken können.

Begleitend zum Artikel wurde ein GitHub Repository mit Jupyter-Notebook in einem Docker-Container aufgesetzt, das die Anwendung von Prophet anhand der hier dargestellten Daten durchspielt (siehe [a] unter ix.de/ix1803094). Interessierte können es als Ausgangspunkt verwenden, um eigene Zeitreihen zu prognostizieren. Dazu müssen sie die folgenden Schritte durchführen (detailliert im Readme des Repository beschrieben). Eine Docker-Installation wird vorausgesetzt:

 Repository klonen.

 Innerhalb des geklonten Ordners mit

docker build -t prophet_forecast .

das Image bauen.

 Das Image mit

docker run -it -p 8888:8888 \ 
-v"$(pwd)"/notebooks:/notebooks \ 
prophet_forecast

starten (weicht unter Windows leicht ab). Im Terminal sollte nun eine HTTP-Adresse, beginnend mit 0.0.0.0:8888, erscheinen. Dies ist der Link zum Jupyter-Notebook. Den Link kopieren und die IP (0.0.0.0) durch „localhost“ ersetzen.

 Das dort vorhandene Notebook „Apply Prophet“ öffnen.

 Wer die bereits hinterlegte Zeitreihe verwenden will, kann einfach alle Zellen ausführen. Will man eigene Daten nutzen, kann man diese in den data-Ordner entweder über das Dateisystem oder über die in Jupyter verfügbare „Upload“-Schaltfläche in das Verzeichnis hochladen. Der angepasste Dateiname ist dann auch im Notebook in der zweiten ausführbaren Zelle zu hinterlegen.