Machine Learning: Vergleich von R und Python

Mit dem Einzug von Big Data in industrielle Anwendungen entsteht auch ein neues Aufgabenfeld: das der Data Scientists. Ihre Aufgabe ist es, gemeinsam mit den Experten aus Fertigungs- und Prozesstechnik beispielsweise Verfahren für die vorausschauende Instandhaltung und Qualitätssicherung zu entwickeln. Machine Learning ist dabei oft das Mittel der Wahl, um dafür geeignete Prognose-Modelle zu erstellen. Bei der Entwicklung müssen Data Scientists abwägen, welche Sprache dafür am geeignetsten ist. Gegenwärtig fallen in diesem Kontext vor allem zwei Namen: R und Python. Im Folgenden sollen die Vorzüge der beiden APIs dargestellt und diskutiert werden.

R und Python – Nutzeranteil im Zeitverlauf (Quelle: KDnuggets)

Hintergrund
Python wurde 1991 von Guido van Rossum eingeführt. Im Vordergrund stand dabei der Anspruch, einfach und schnell Codes schreiben zu können. R wurde 1995 als Implementierung der S-Programmiersprache entwickelt, um Datenanalyse-Tasks zu vereinfachen. Beide Sprachen sind open source per Download verfügbar. Wie sich aus der Grafik oben ableiten lässt, verwenden knapp 90% der Data Scientists entweder R oder Python. Dabei hat die Python-Nutzung über die letzten Jahre immer weiter zugenommen und 2017 R an der Spitze abgelöst.

Methodenvielfalt vs. Performanz
R besitzt die umfangreichste Bibliothek für statistische Verfahren sowie eigens dafür entwickelte Datenstrukturen. Die Entwicklungsumgebung R Studio bietet eine intuitive Oberfläche zur Datenexploration. R ist dann vorteilhaft, wenn Daten lokal statistisch analysiert, modelliert oder grafisch aufbereitet werden sollen. Dabei wird eine große Bandbreite von der Erzeugung von Häufigkeitsverteilungen bis hin zu komplexen Verfahren wie Deep Learning abgedeckt, wozu umfangreiche Dokumentationen vorliegen. Die Single-Thread-Verarbeitung hat aber in vielen Fällen Runtime-Nachteile zur Folge.

Die Skriptsprache Python kombiniert eine große Machine Learning-Bibliothek mit schnellen Laufzeiten. Anders als bei R gibt es für Python unterschiedliche Entwicklungsumgebungen: Spyder und Rodeo eignen sich sehr gut zur Datenexploration, während PyCharm in erster Linie Programmierer anspricht. Python stellt eine vollwertige Programmiersprache dar, während R primär für Datenanalysen verwendet wird. Müssen Programme oder erzeugte Modelle deployed werden, sollte man insbesondere aufgrund der Laufzeitvorteile Python bevorzugen.

Für beide Sprachen gibt es sogenannte Notebooks, also interaktive Programmierumgebungen, die Passagen aus Code, Text und Grafiken kombinieren können. Zur Entwicklung von Webapplikationen existieren für beide APIs mehrere Bibliotheken, die entsprechend der individuellen Anforderungen ausgewählt werden sollten.

Big Data Frameworks
Beide APIs eignen sich für die Verwendung von Cluster Frameworks wie H2O.ai und Apache Spark. Auf diese Weise können äußerst performante parallelisierte Methoden verwendet werden. Der Anwender ist in der Lage, die Arbeitsspeicher-Auslastung auf den einzelnen Knoten selbst verwalten zu können. H2O.ai verfügt über verteilte SQL-Methoden (bspw. Filter oder Join) sowie alle gängigen Machine Learning-Methodenklassen, die laufend aktualisiert werden. Diese decken sowohl Algorithmen für überwachtes (z. B. Regressionsmodelle und Klassifikationen) als auch für unüberwachtes Lernen (z. B. Clustering-Verfahren) ab.

Die Daten können dabei aus unterschiedlichen Datenquellen (bspw. HDFS, S3, SQL und NoSQL) bezogen werden. Die Kommunikation erfolgt über REST-APIs: Dabei müssen die Daten nicht mehr lokal gespeichert bzw. verarbeitet werden. Dies kann stattdessen auf den dafür vorgesehenen Clustern geschehen. Dieser Schritt entlastet den physischen Arbeitsspeicher, da im Idealfall nur noch ein Java-Namensobjekt lokal gespeichert wird.

Entsprechende Bibliotheken liegen open source in den jeweiligen Repositories (in erster Linie Cran und PyPi) vor.

Vorkenntnisse
Ein wichtiges Entscheidungskriterium stellt die Erfahrung der Data Scientists dar: Hat die Mehrheit bspw. bereits profunde Skills in R, liegt der Einsatz dieser API nahe. So kann das bestehende Wissen direkt genutzt und in der Praxis vertieft werden, während zeit- und somit kostenintensive Weiterbildungen weitgehend vermieden werden.

 

Hinterlassen Sie einen Kommentar

Nach oben