data > opinion

Tom Alby

9 Applikationen bereitstellen mit Shiny

2020-11-29


Interaktive Web-Applikationen erstellen mit Shiny

Ein funktionierendes Machine Learning-Modell soll in der Regel auch in einem Live-Betrieb verwendet werden. Bisher haben wir Modelle lediglich auf unserer Festplatte oder vielleicht in der Cloud in der R-Umgebung laufen lassen, aber um ein Modell auch in der Realität zu testen, muss es in einer Produktionsumgebung installiert beziehungsweise “deployed” werden. Oft sind hier weitere Rollen der Data Science-Welt tätig, zum Beispiel Data Engineers oder ein Data Architect. So können neue Daten über eine Pipeline zu dem Modell fließen, das dann Werte über eine API ausgibt, die woanders wieder verwendet werden können. Der Data Architect würde so eine Anwendung planen, der Data Engineer würde dafür sorgen, dass dies technisch implementiert wird.

Modelle können aber auch über interaktive Dashboards zur Verfügung gestellt werden. Shiny ist eine Erweiterung zu R, die in einem Package zur Verfügung gestellt wird. Hier können mit sehr geringem Aufwand HTML-Seiten erstellt werden, die je nach Eingaben verschiedene Ausgaben ermöglichen.

Jede Shiny-Applikation besteht aus zwei Teilen

Der Input, der in das User Interface eingegeben wird, ist der Input für den Server, die Berechnungsergebnisse des Servers, sein Output, ist wiederum im User Interface zu sehen. Man kann den Code einer Shiny-App also nicht einfach von unten nach unten lesen.

Beide Teile können in einer Datei vorhanden sein, die dann als App.R in einem Verzeichnis abgespeichert wird, meistens ShinyApps auf einem RStudio Server. Zum Testen reicht die Datei App.R aber im Arbeitsverzeichnis. Dateien, die dazu benötigt werdenn, sollten immer in relativen und nicht absoluten Pfaden eingebunden werden. Unter Windows kann es generell Probleme mit den Pfaden geben. Manche Studierende hatten Erfolg mit zwei Backslashes in Pfaden. Da auf dem Shiny-Server in der Regel keine Windows-Nomenklatur vorhanden ist, laufen diese aber eh ins Leere.

Um ein Machine Learning-Modell in einer Applikation nutzen zu können, muss dieses zunächst gespeichert und dann in der Applikation geladen werden. Dies kann zum Beispiel mit readRDS geschehen; allerdings funktioniert das nicht unbedingt bei jedem Modell. Die Dokumentation und Stack Overflow helfen hier weiter :)

Um ein Modell dann in einer Applikation zu nutzen, ist es notwendig dafür zu sorgen, dass die Variablen, die dem Modell übergeben werden, dieselben Namen und auch dieselben Datentypen haben.

Bereitstellen auf einem Shiny Server

RStudio bietet eine einfache Möglichkeit, Shiny-Applikationen bereitzustellen. Hierzu muss ein Account auf shinyapps.io eingerichtet werden. Im RStudio-Interface wird dann der Account anhand des Secret Tokens konfiguriert. Dann muss nur noch auf den Publish to Server-Button geklickt werden, um die Applkation zu veröffentlichen:

Es ist wichtig, dass nicht nur die Datei App.R, sondern auch alle benötigten Daten wie Modelle auch mit hochgeladen werden.