ERP-Technologie

Die Interpretersprache von R als Business-Intelligence-Werkzeug

Eignung, Skalierbarkeit und Optimierung

28. Juni 2016 von Christian Koot, Evren Özel und Paul Heiser

Die Interpretersprache von R als Business-Intelligence-Werkzeug

Die wachsende Datengetriebenheit von Unternehmen führt zu einer das Angebot weit übersteigenden Nachfrage nach Data Scientists, welche durch Quereinsteiger abgedeckt werden muss. Gleichzeitig besitzt R eine stark wachsende Bedeutung für Business Analytics. Der vorliegende Beitrag untersucht die Eignung von R-Interpretercode als Business-Analytics-Werkzeug anhand eines Benchmarks auf Basis der Stichprobenvarianz. Darüber hinaus wird ein Überblick über existierende fortgeschrittene Optimierungsverfahren wie GPU-Computing und DBMS-Sandboxing gegeben. Die Datengetriebenheit von Unternehmen aller Branchen und Größenklassen hat in den vergangenen Jahren zugenommen und wird dies zukünftig auch weiterhin tun. Wenngleich die erfolgreichen Unternehmen der Internet-Ökonomie die sichtbarsten Beispiele dafür darstellen, wie Unternehmen sich durch datenbasierte Entscheidungen fortlaufend optimieren können, nimmt die Notwendigkeit, das eigene Geschäft auf Basis von internen und externen Daten besser zu verstehen, für alle Unternehmen zu.

Entsprechend wächst auch die Nachfrage nach Data Scientists, die in der Lage sind, aufgrund von statistischen, ökonomischen und technischen Kompetenzen die benötigten Datenanalysen durchzuführen. Somit wird ein erheblicher Teil des wachsenden Bedarfs nach Business Analytics in Unternehmen durch Quereinsteiger erbracht werden müssen. Dies scheint auf den ersten Blick kein besonderes Problem darzustellen, da R durch seine Pakete nicht nur umfangreiche statistische Methodenunterstützung, sondern auch eine einfach erlernbare Interpretersprache umfasst.

Dass R für Business Analytics eine stark wachsende Bedeutung besitzt, lässt sich einerseits am Kreis der Anwenderunternehmen und zum anderen durch die inzwischen sehr weitgehende Integration von R in Business-Analytics- und Datenbank-Produkte durch namhafte Anbieter wie SAP, Oracle, IBM und Microsoft ablesen.


Bild 1: Funktion für die Meßreihe Var_loop_R.

Bild 2: Funktion für die Meßreihe Var_vec_R.

Bild 3: Funktion für die Messreihe Var_vec_C.

Im Rahmen der Analyse wurde anhand von Benckmark-Messungen untersucht, wie sich die Interpretersprache von R für den Einsatz als Business-Analytics-Werkzeug eignet.
 

Methodik

Die Benchmarkmessungen wurden auf einem Intel Core i7-4790 (3,6 MHz, vier Kerne, Hyperthreading) mit 32 GB RAM durchgeführt. Als Softwareausstattung kamen R 3.2.0, RStudio 0.98.1103, und Lubuntu 14.04.02 (AMD64) auf einem persistenten Live-USB-System zum Einsatz. Für die Kompilierung der C-Funktionen wurde der in der Distribution mitgelieferte gcc-Compiler (gcc 4.8.2) eingesetzt.

Um den betriebssystemseitigen Overhead möglichst gering zu halten, wurden LXDE sowie X11 deaktiviert und die Messungen am Terminal durchgeführt. Zur Messung der Ausführungszeiten kam die Funktion microbenchmark aus dem gleichnamigen R-Paket zum Einsatz.

Die Datensätze bestehen aus zufälligen Integerzahlen von 18 bis 99, die mittels der R-Funktion sample erzeugt wurden. Für die Messungen wurden Datensätze mit unterschiedlichen Umfängen generiert. Diese reichten für den hier dargestellten Benchmark von 100 bis 900 Millionen Integerzahlen. Die Datensätze wurden nach ihrer Erstellung gesichert, damit alle Implementierungsvarianten auf identischen Datensätzen dem Benchmark unterzogen werden konnten. Die Datensätze werden jeweils einzeln in R als Vektor geladen, um die Messungen nicht durch eine etwaige Nutzung des Swap zu verfälschen.

Als Benchmark wird die Stichprobenvarianz herangezogen (in R mit Hilfe der Funktion var realisiert). Diese wird in R-Interpretercode unter Einsatz von Schleifen nachgebildet (Var_loop_R, Bild 1), dann unter Einsatz der Vektoroperationen (Var_vec_R, Bild 2) und jeweils mit Hilfe von compiler cmpfun in Bytecode übersetzt (Var_loop_R_bc und Var_vec_R_bc), der durch den R-Interpreter effizienter als der ursprünglich Quellcode ausgeführt wird. Zum Vergleich wird noch compilierter C-Code (Var_vec_C, Bild 3) und die in R integrierte Funktion var (Var) herangezogen.
 

Ergebnisse

Die Messergebnisse sind tabellarisch in Tabelle 1 dargestellt. Es handelt sich um die mit Hilfe von microbenchmark in 100 Durchläufen ermittelten durchschnittlichen Ausführungszeiten (in Sekunden).

Bild 4 wurde mit Hilfe von ggplot anhand einer logarithmischen Skala erstellt, um die größenordnungsmäßig deutlich abweichenden Messergebnisse der einzelnen Implementierungen in einem Diagramm darstellen zu können.


Tabelle 1: Messergebnisse.

Die beträchtlichen Performanceunterschiede zwischen den einzelnen Implementierungen treten hierbei deutlich zu Tage.
 

Optimierungsansätze für R

Die dynamische Entwicklung von R und seinen Paketen hat eine Reihe von Optimierungsansätzen hervorgebracht. Diese basieren typischerweise auf der Parallelisierung von Berechnungen mit Hilfe von Multithreading und GPU-Berechnungen, Mapping-Techniken zum Umgang mit der begrenzten Hauptspeichergröße und die Integration in DBMS zur Beschleunigung von Datenoperationen. Die nachfolgend kurz vorgestellten Ansätze stellen nur einen Ausschnitt der sehr dynamischen Entwicklungstätigkeit in diesem Bereich dar.

Einen wichtigen Ansatz zur Parallelisierung von Auswertungen stellen die Pakete parallel, foreach, snow und doParallel bereit [1]. Hiermit wird es mit Hilfe eines Worker-Konzepts möglich, Berechnungen auf mehrere Threads oder Tasks zu aufzuteilen, welche mit Hilfe mehrere Prozessorkerne oder auch auf Rechner-Cluster verteilt durchgeführt werden können, wohingegen R standardmäßig lediglich in einem Einzelthread rechnet.

Während das genannte Paket-Ensemble für vielfältige Klassen parallelisierbarer Berechnungen eingesetzt werden kann, existieren daneben auch problemklassenspezifische Parallelisierungsansätze, wie das Paket amap, welches Verfahren der multivariaten Datenanalyse wie z. B. die Hauptkomponentenanalyse parallelisiert [1].

Für die Nutzung der Vielzahl paralleler Rechenkerne moderner Grafikprozessoren (GPUs) existieren eine ganze Reihe von Paketen, z. B. gputools [1], OpenCL [1] und rpud [5], die sich der standardisierten Programmierschnittstellen CUDA (nur für nVidia) und OpenCL (herstellerübergreifend) bedienen. Da aktuelle GPU-Generationen von nVidia und AMD die ursprünglich gravierenden Nachteile älterer Designs überwunden haben (bspw. mussten IEEE-754-Gleitkommazahlen und zugehörige Operationen aufwändig softwareseitig emuliert werden), eignen sich inzwischen vielfältige, massiv parallelisierbare Datenanalyseprobleme für die GPU-basierte Berechnung. Allerdings zeigen sich auch hier die prinzipbedingten Schwächen des dezentralen Entwicklungsmodells von R: So wurde das Paket rpud [1] inzwischen wegen ausbleibender Fehlerkorrekturen vom CRAN entfernt.

R besitzt die grundlegende Einschränkung, dass zu analysierende Datensätze komplett im Hauptspeicher gehalten werden müssen, was insbesondere bei Big-Data-Analysen zum Problem wird. Beispielhaft ermöglicht das Paket ff [1] die Analyse von Datensätzen, die nicht in den Hauptspeicher passen würden, indem der Datensatz in einer persistenten Datei gehalten wird und lediglich die zur Analyse angeforderten Bereiche in den Hauptspeicher geholt werden.

Schließlich bieten namhafte DBMS für den Unternehmenseinsatz die Möglichkeit R-Befehle in einer Sandbox auszuführen und ermöglichen so einen effizienteren Zugriff auf die gespeicherten Daten. 
 

Diskussion

Die in Tabelle 1 und Bild 4 gezeigten Messergebnisse machen deutlich, dass nicht optimierter R-Interpretercode die Berechnung der Varianz gegenüber der in R integrierten Funktion var um mehr als den Faktor 200 verlangsamt. Die einfachen Optimierungen mittels Bytecode und Vektoroperationen können den Performancenachteil in Kombination ungefähr auf Faktor 14 abmildern. Nach den Erfahrungen der Autoren können die Größenordnungen der Performanceunterschiede für gängige statistische Funktionen, die in den Business Analytics zum Einsatz kommen, verallgemeinert werden. Die nachfolgend dargestellten weitergehenden Optimierungsansätze bergen das Potenzial, die Performance in etwa auf das Niveau der R-eigenen Implementierung (und bisweilen auch darüber hinaus) zu steigern.


Bild 4: Grafische Visualisierung der Messergebnisse.

Somit ist es offensichtlich, dass R-Interpretercode nur für Teilaufgaben einer Datenanalyse eingesetzt werden sollte, für die R und zugehörigen Pakete keine geeigneten Funktionen bereitstellen. Für aufwändige Berechnungen und große Datensätze ist nicht-optimierter R-Interpretercode auch auf leistungsfähiger Hardware ungeeignet. 

Entsprechend darf sich die Qualfizierung von Quereinsteigern in das Berufsfeld Data Science nicht in der Vermittlung der Interpretersprache erschöpfen, sondern muss auch die gängigen Optimierungsansätze für R umfassen.“

Im Zusammenhang mit der Optimierung von Business-Analytics-Auswertungen in R stellen die schnelle Release-Abfolge von R-Versionen (allein im Jahr 2015 listet das CRAN fünf Releases [1]), die unkoordinierte und gelegentlich unstetige Entwicklung von Paketen, deren Pflege bisweilen auch eingestellt wird (siehe oben das Beispiel rpud) beträchtliche Herausforderungen für die Reliabilität von Analysen dar. 

Kommerzielle R-Distributionen schaffen hier zwar ein gewisses Maß an Verlässlichkeit. Auf sorgfältige Tests beim Wechsel des eingesetzten R-Releases sollte aber dennoch kein Unternehmensanwender verzichten.     

 

 

 

 

Business AnalyticsData ScientistProgrammiersprache R


[1] https://cran.r-project.org/ (Abruf am 28.01.2016).




Das könnte Sie auch interessieren

Anbieterportal


alle Anbieter
Sharer Icon: facebookSharer Icon: TwitterSharer Icon: LindekInSharer Icon: XingSharer Icon: EnvelopeSharer Icon: Print
Banner

Mit ERP aus der Krise

Der neu erschienene Sammelband Zukunftsfähig mit ERP-Systemen enthält ausgewählte Artikel namhafter Forscher und Praktiker, um Expertenwissen rund um das Thema eines erfolgreichen ERP-Einsatzes für Anwendungen in der Praxis nutzbar zu machen. Er wendet sich vor allem an IT-Entscheider, die Digitalisierungsanstren- gungen planen und dabei auf einen optimierten ERP-Einsatz setzen.
E-Book bestellen

Wir verwenden Cookies, um die Nutzererfahrung stetig zu verbessern. Mehr Erfahren.

Essentielle Cookies

Cookie Settings
Speichert Einstellungen, die hier getroffen werden. (1 Jahr)

Statistik

Google Analytics | Google LLC | Datenschutz
Cookie von Google für Website-Analysen. Erzeugt statistische Daten darüber, wie der Besucher die Website nutzt. Alle Informationen werden anonymisiert gespeichert. (2 Jahre)