Suche
Suche Menü

Schlangen: Die Brücke zwischen Data Science und Anwendung

In unserer Stormingphase haben wir verschiedene DataScience-Tasks in Subteams bearbeitet, die sich hauptsächlich für R und Python entschieden haben. Beide Sprachen bieten sich für folgende DataScience-Tasks super an:

  • Explorieren
  • Säubern
  • Filtern
  • Aggregieren
  • Visualisieren
  • Verwenden von Machine Learning Algorithmen
  • Fremdbibliotheken für schnelles Prototyping einbinden

R ist auf dem Feld des Statistical Learning als Nachfolger der Programmiersprache S etwas länger unterwegs als Python und bietet daher vieles aus einer Hand. Dazu gehören neben sehr vielen Bibliotheken auch die Entwicklungsumgebung RStudio sowie die Möglichkeit, Dokumentationen mit knitr oder dynamische Webapplikationen mit R Shiny zu erstellen. Python hingegen merkt man an, dass R in diesem speziellen Feld als Vorbild gedient hat, so hat man mit pandas beispielsweise die DataFrame API zur Datenverarbeitung nachimplementiert. Es gibt auch Bemühungen mit DataSypre, die in die selbe Richtung wie Shiny gehen. Bezüglich knitr hat Python aber mit dem iPython Notebook nicht das Nachsehen, da „reproducible research“ während des eigenen Explorierens der Daten erstellt werden kann, ohne dass man ein gesondertes Dokument erstellen muss.

Unsere Erfahrung für Data Science Aufgaben in beiden Welten hat gezeigt, dass beide geeignet sind, um erste Prototypen zu bauen. Während R scheinbar aus einem Guss kommt und mit RStudio eine angenehme Bedienung ermöglicht und mit ggplot2 eine Visualisierungsbibliothek mitbringt, die sich sehen lässt, hat man mit Python eine weitreichende Sprache, die nicht nur auf Statistical Learning spezialisiert ist. Weiterhin hat sich gezeigt, dass es zu unterschiedlichen Ergebnissen kommen kann, obwohl mutmaßlich das gleiche Modell implementiert wurde. Die ersten Versuche der Entwickler bestanden darin, die Modelle irgendwie in ihre Java Welt zu überführen oder später zumindest die Datenbeschaffung über Java Services zu realisieren. Es hat sich aber schnell herausgestellt, dass es durchaus sinnvoll ist, sowohl die Modelle als auch die Anwendung in Python zu verfassen. Wir sind aktuell an einem Punkt angelangt, dass wir uns Python als generelle Sprache für die meisten Aufgaben ausgesucht haben. Im folgenden zählen wir nochmal die Vorteile auf, die wir darin sehen.

 

Vorteile

Data Science Unser wichtigstes Tool ist pandas, das auf numpy und scipy aufsetzt und versucht, die Datenanalyse mit Python dichter an die Features von R zu bringen, ohne R benutzen zu müssen. Desweiteren sind die IPython Notebooks ein wunderbares Mittel, um sein Vorgehen und die Ergebnisse zu dokumentieren. Hier werden wir in naher Zukunft wohl auch einmal Zeppelin ausprobieren um unsere Notebook direkt auf dem Cluster zu entwicklen.

Modelle Wenn die Modelle der Data Scientists in Python geschrieben werden, macht es wenig Sinn, die funktionierenden Modelle noch einmal in einem anderen Framework und in einer anderen Sprache neu zu schreiben. Es gibt hier zwar schon seit gewisser Zeit Ansätze und Tools, siehe PMML, aber das hat sich für die ersten Anwendungen als zu umständlich erwiesen, auch weil der die Unterstützung des Standard durch die Softwarepakete im Hadoop-Umfeld noch nicht vollständig gegeben ist. Desweiteren lassen sich die Modelle aus pandas sehr gut serialisieren und deserialisieren, was den Austausch zwischen den kleinen Subteams noch einmal erheblich erleichtert hat. Somit konnte eine Gruppe ein Modell trainieren und optimieren und am Ende des Tages einfach eine Datei produzieren, die auf der anderen Seite zur Vorhersage, Auswertung und Visualisierung verwendet werden konnte.

Spark Pandas selbst bietet schon viele Möglichkeiten, um Daten aus Dateien zu lesen und weiter zu verarbeiten. Da aber viele unserer Tabellen und Daten im Cluster liegen, haben wir uns PySpark angenommen. Somit können wir direkt auf Hive und alle Tabellen darin zugreifen und diese nach Spark-Manier bearbeiten.

Server Damit unsere Ergebnisse auch außerhalb des Teams sichtbar sind, war schnell klar, dass wir Webanwendungen schreiben müssen. Und auch hier gibt es schon viele Frameworks für Python. Wir haben uns für das minimale Webframework Flask entschieden. Somit konnten wir mit Hilfe uns bereits bekannter Webtechnologien wie D3.js unsere Ergebnisse visuell darstellen.

Bildschirmfoto vom 2015-09-10 11-55-18

Nachteile

Plotting Andere Sprachen und Frameworks haben integrierte Plotting Lösungen, so auch RStudio. Es gibt zwar Ansätze diese Funktionalität auch für Python im Web zu bieten. Diese sind jedoch in keinem uns zufriedenstellenden Stadium. Deswegen sind wir gezwungen, unsere Plots noch einmal in D3.js nachzuimplementieren. Auf der anderen Seite bietet dies aber auch deutlich bessere Möglichkeiten, da man die Plots mit den D3.js-spezifischen Funktionen viel interaktiver gestalten kann, statt nur simple Plots zu generieren. Da kann unserer Meinung nach auch ggplot2 nicht mithalten.

Bildschirmfoto vom 2015-09-09 10-39-45

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


Agile Softwareentwicklung