R als Tool für Data Science

Neben klassischer Software für statistische Analysen wie SAS, SPSS und Stata gewinnt seit einiger Zeit insbesondere R an Beliebtheit, da es als Freeware verfügbar ist und eine breite Unterstützung durch Foren und detaillierte Dokumentation genießt. R und das ebenfalls kostenlos verfügbare R Studio als IDE (integrated development environment) zur komfortableren Programmierung basieren auf der Programmiersprache S. R Studio teilt sich übersichtlich in verschiedene Fenster für Grafiken, Datentabellen, Code und Output auf und bietet so die Möglichkeit einer komfortablen Gesamtübersicht. Wesentlich für die gestiegene Beliebtheit von R sind sogenannte packages oder Bibliotheken, die vorgeschriebene Funktionen beinhalten und auf die bei Installation zurückgegriffen werden kann, sodass Fragestellungen komfortabel bearbeitet werden können. Diese Bibliotheken können von jedem Nutzer geschrieben und bei Prüfung für alle anderen Nutzer frei verfügbar bereitgestellt werden. Zusätzlich werden Bibliotheken durch eine Dokumentation der beinhalteten Funktionen inklusive Beispiele und einer Vignette, welche die behandelten Problematiken ausführlich beschreibt und herleitet unterstützt, sodass eine breite Informationsgrundlage vor Verwendung der Bibliothek verfügbar ist. Durch diese Möglichkeit wächst R sehr schnell und verschiedene Bibliotheken zu unterschiedlichen komplexen Themen sind verfügbar und ermöglichen eine umgangsfreundliche Bearbeitung von Fragestellungen.

Wichtige R-Bibliotheken im Umfeld Data Science

Dieser Beitrag stellt einige hilfreiche Bibliotheken vor, die im Bereich der Datenmanipulation, Visualisierung und Machine Learning häufig genutzt werden und zum Standard geworden sind.

Zu Beginn jeder fortgeschrittenen Datenbearbeitung steht ein schneller Einblick und die Erstellung einfacher Übersichten der Daten, die wohl beliebteste Bibliothek ist hier dplyr.

dplyr

Die Bibliothek dplyr bietet eine Reihe verschiedener Funktionen zur Datenmanipulation an, die in einfacher Syntax und eindeutig verständlicher Benennung der Befehle gehalten sind. Beispiele solcher Funktionen sind:

  • mutate() – fügt einem Datensatz neue Variablen als Funktionen bestehender Variablen hinzu
  • select() – Variablen anhand der Benennung auswählen
  • filter() – ausgewählte Fälle anhand bestimmter Bedingungen darstellen
  • summarise() – Darstellung zahlreiche Kennwerte (Mittelwerte, Summen, Anzahl Ausprägungen usw.)

Für diese grundlegenden Funktionen ist dplyr die Standardbibliothek. Die einzige Limitation, die sich in der Praxis erwiesen hat, ist, dass bei einer sehr großen Anzahl an Datensätzen die Bibliothek data.table die ähnliche Funktionen aufweist, schneller in der Berechnung ist.

Weitere hilfreiche Bibliotheken sind hier reshape2 oder tidyr. Ausreißer oder andere Anomalitäten in einem Datensatz können mit den Bibliotheken Outliers oder EVIR leicht aufgedeckt werden.

Eine andere Möglichkeit der übersichtlichen Einsicht in einen Datensatz bietet sich mit Hilfe von Grafiken. Hier bietet R mit der Bibliothek ggplot2 eine umfassende und weit verbreitete Bibliothek für die Darstellung verschiedenster publizierbarer Grafiken.

ggplot2

Zur Erstellung grafischer Übersichten baut ggplot2 Schritt für Schritt eine Grafik auf, bis das gewünschte Ziel erreicht ist. Mögliche Kombinationen sind das Hinzufügen von detaillierten Beschriftungen, Farbeffekten, Transformationen von Variablen oder Koordinatensysteme. Unter erstellten Grafiken findet man klassischerweise für ein Merkmal eine Dichtefunktion, ein Histogramm oder ein Balkendiagramm der Ausprägungen. Bei zwei Merkmalen können Zusammenhänge anhand von Punktewolken oder linearen Zusammenhängen oder auch anhand von Balkendiagrammen oder Boxplots dargestellt werden. Auch fortgeschrittene Darstellungen wie Landkarten oder darauf aufbauende Heatmaps sind möglich.

Abbildung 1: ggplot2 Grafik

Wenige Bibliotheken sind derart umfassend dokumentiert und werden so zahlreich genutzt wie ggplot2. Wird weniger Wert auf optisch hochwertige Grafiken, sondern mehr Wert auf einen schnellen Einblick in Datenverteilungen gelegt, ist ggplot2 im Vergleich zu Basis R Funktionen umständlich und zeitaufwendiger. Schnelle Einblicke können mit Basis R Funktionen wie plot(), boxplot() oder plot(density()) erreicht werden.

Aufbauend auf diesen Möglichkeiten des Einblicks in die Daten sollen meist Zusammenhänge zwischen verschiedenen Merkmalen oder Vorhersagen für zukünftige Ergebnisse basierend auf den Merkmalen getroffen werden. Fortfolgend werden einige R Bibliotheken vorgestellt, die häufig Verwendung im Bereich des Machine Learnings finden.

Über Standardfunktionen zu linearen Modellen oder generalisierten linearen Modellen hinaus gehen linear mixed models der Bibliothek lme4.

lme4

Linear mixed models werden insbesondere relevant, wenn Unterschiede zwischen Gruppen interessant sind. Eine solche Datenstruktur, die unterstellt, dass Beobachtungen innerhalb einer Gruppe miteinander korreliert sind, werden typischerweise als geclusterte Daten bezeichnet. Mithilfe der Basisfunktion lmer() der Bibliothek lme4 kann das lineare Modell um eine random Komponente erweitert werden, die Zufallsschwankungen zwischen diesen Gruppen aufnehmen kann. Diese Art der Modellierung kann zwischen dem random intercept model und dem random slope model unterscheiden. Unter Bezugnahme auf das interessierende Merkmal unterstellen random intercept models, dass jede Gruppe unterschiedliche Startvoraussetzungen in Bezug auf das interessierende Merkmal haben. Dem entgegengesetzt unterstellen random slope models, dass die Effektstärke der erklärenden Merkmale in den Gruppen unterschiedlich ist.

In der praktischen Anwendung auf geclusterte Daten erweist sich lme4 als sehr schnell und ansprechender als der Vorgänger lme. Die unterschiedlichen Effekte lassen sich mit einfachen Funktionen aus dem Modell rausziehen und Zusammenhänge sind leicht grafisch darstellbar. Der typische Output aus Vorhersagen eines in R berechneten linear mixed models sind Summen oder Mittelwerte, sodass schnell erste Unterschiede zwischen Gruppen herausgefunden werden können.

Eine verbreitete Methode im Bereich des Machine Learnings stellen Entscheidungsbaumalgorithmen dar. Die Basisbibliothek in R ist rpart.

rpart

Entscheidungsbaumalgorithmen lassen sich in Regressionsbäume und Klassifizierungsbäume unterteilen. Ist das interessierende Merkmal kontinuierlich, werden Regressionsbäume aufgebaut. Wenn das interessierende Merkmal in Klassen einteilbar ist, werden Klassifizierungsbäume erstellt. Diese Art der Modellierung wird deshalb als Baum bezeichnet, weil alle möglichen Abspaltungen in einem Datensatz bis hin zur Erklärung des interessierenden Merkmals binär, ausgehend von einem Startwert (der Wurzel – root) aufgebaut werden. Zum detaillierten Aufbau von Entscheidungsbäumen sei auf den Blogbeitrag „Einführung in Decision Trees“ verwiesen. Die Bibliothek rpart verfügt über die Grundfunktionen zum Aufbau solcher Entscheidungsbäume. Die Funktion rpart() spezifiziert das Modell und legt fest, welche Art des Entscheidungsbaums verwendet werden soll. Mit den Funktionen printcp() und plotcp() können die Ergebnisse dargestellt werden. Die Visualisierung durch printcp() gibt Einblick in verschiedene Fehlerrechnungen zur Modellgüte, plotcp() zeigt den Aufbau in der Baumstruktur.

Rpart ist hilfreich, wenn die bloße Modellierung und Gütebewertung im Zentrum der Aufmerksamkeit stehen. Sollen die Entscheidungsbäume für Zuweisungen von neuen Datensätzen genutzt werden, gibt es komfortablere Bibliotheken als rpart, die auf dieser aufbauen. In der Verwendung als nicht-parametrische Methode zur Ergänzung fehlender Daten ist eine praktische Implementierung in der Bibliothek mice enthalten. Weitaus verbreiteter im Machine Learning ist die Nutzung sogenannter random Forest Methoden, die eine Vielzahl an Entscheidungsbäumen aufbauen und so die Modellstärke erhöhen. Diese können in R mit der Bibliothek randomforest erstellt werden, die rpart als Grundlage hat.

Sollen beispielsweise Vorhersagen basierend auf vorhandenen Zeitreihendaten getroffen werden, bildet die Bibliothek forecast in Kombination mit der Bibliothek tseries die Grundlage der R Bibliotheken.

forecast

Innerhalb der forecast Bibliothek wird das sogenannte ARIMA (Auto-Regressive Integrated Moving Average) Modell verwendet. Diese Modelle errechnen aus verfügbaren Zeitreihendaten Trends und sagen entsprechend dieser Trends zukünftige Entwicklungen voraus. Zu Beginn können mit einfachen plot Funktionen erste Übersichten über die zeitliche Entwicklung der Daten getroffen werden. Anhand verschiedener Teststatistiken wie dem Augmented Dickey-Fuller Test (ADF) oder dem Kwiatkowsi-Phillips-Schmidt-Shin Test (KPSS) wird überprüft, ob Schwankungen in den Daten tatsächlich zeitabhängig sind oder dem Zufall unterliegen. Abhängig von den Ergebnissen kann mit der auto.arima() Funktion das optimale Modell zur Vorhersage zukünftiger Ereignisse aufgestellt werden. Anhand der forecast() Funktion werden nun diese Ereignisse vorhergesagt. Diese können grafisch dargestellt werden, der graue Bereich beinhaltet die aufgrund des Modells getroffenen Vorhersagen.

Abbildung 2: Vorhersagemodell mit forecast

Zur Vorhersage von zukünftigen Werten anhand von Zeitreihendaten ist die forecast Bibliothek die am weitesten verbreitetste und weitestgehend konkurrenzlos aufgrund sehr hoher Performanz. Anhand der Dokumentationen ist die schrittweise Bearbeitung nachvollziehbar und es können belastbare Ergebnisse produziert werden. Eine Alternative bei kurzen Zeitreihendaten ist die bsts Bibliothek die Bayesianische ARIMA Modelle berechnet.

R bietet darüber hinaus mit den Paketen caret (Classification and Regression Training), survival für Survival-Daten oder car mit der anova() oder der predict() Funktion weitere zahlreiche Bibliotheken zur Modellierung und Vorhersage von Daten an.

Zur Validierung aufgestellter Modelle kann in R beispielsweise die Bibliothek RegTest für Regressionsmodelle, ClustEval für geclusterte Modelle oder LSMeans für eine generelle Modellvalidierung angewendet werden.

Schlussendlich werden verschiedene Pakete zur optisch ansprechenden Präsentation von Ergebnissen und Zwischenschritten geboten. Am bekanntesten ist hier shiny und RMarkdown.

RMarkdown

RMarkdown ist eine Erweiterung von R, die es erlaubt, Texte, Grafiken und Präsentationen unmittelbar in einem R File zu schreiben, sodass ein präsentierfähiges Dokument inklusive Codeabschnitte in einem geschrieben und erstellt werden kann. Darüber hinaus kann mit der Erweiterung knitr Code aus anderen Sprachen wie Python, SQL oder Stan eingefügt werden. Befehle innerhalb von RMarkdown sind intuitiv gehalten, wie beispielsweise title, output, oder author.

Fazit

Diese vorgestellten Pakete stellen eine Auswahl an R Bibliotheken zur Lösung von Data Science Problemen dar, die häufig genutzt werden und sich in der Praxis als hilfreich und performant erweisen. Aufgrund der erwähnten Fülle an verfügbaren Bibliotheken wird nur ein kleiner Teil abgedeckt, der beliebig erweiterbar ist.