Die Programmiersprachen in Data Science – Teil 1

Einleitung

In diesem Blog werde ich über die verschiedenen Programmiersprachen für Data Science sprechen. Dabei habe ich mir vorgenommen die jeweiligen Programmiersprachen vorzuknöpfen und sie dann untereinander auf Beliebtheit, Nutzung, Struktur und eventuell andere Elemente zu vergleichen.
Zur Information, ich gehe jetzt nicht nach einem bestimmten Ranking. Ich werde erstmal einfach etwas zu den bekanntesten Programmiersprachen für Data Science schreiben und diese dann zum Schluss nach Popularität usw. kategorisieren.

Python

Die erste Programmiersprache, über die ich schreiben werde, ist Python.  Python ist eine “interpreted, object-oriented, high-level programming language with dynamic semantics.”[1]
Interpretierte Sprachen benutzen keinen Compiler, der den geschriebenen Algorithmus in die Zielsprache der Maschine übersetzen. Stattdessen gibt es einen “Interpreter”(der üblicherweise in der Sprache der nativen Maschine geschrieben ist) , der dann den Algorithmus liest und ausführt.[2] Objekt-orientiert bedeutet, dass man sich die Daten in den Programmen als sogenannte “echte Objekte der Welt” vorstellen kann. Dabei haben diese Objekte 1. Attribute, die das Objekt beschreiben und 2. Verhalten, was diese Objekte “machen” können.[3] Als leichtes Beispiel hätten wir einen Hund. Ein Hund hat ein Gewicht, eine Größe, ein Alter usw. (Attribut) und ein Hund kann bellen oder laufen (Verhalten). “High-Level Programming Languages” sind Programmiersprachen, die es ermöglicht in einer Syntax zu schreiben, welche dann mehr oder weniger Unabhängig vom jeweiligen System sind. Sie sind also näher an der “Menschensprache” und so einfacher zu verstehen und lernen. Im Gegensatz hätten wir dann “assembly languages”, welche “low-level” genannt werden, weil sie eben sehr nahe der Maschinensprache kommt.[4]
“Dynamic Semantics” lässt sich am besten mit einem Beispiel erklären. Folgender Programmcode (zur Veranschaulichung sehr vereinfacht) wäre zum Beispiel in einer Programmiersprache mit dynamischer Semantik erlaubt :

Mitarbeitername = 9; (Mitarbeitername ist hierbei ein Objekt)
Mitarbeitername = “Steve Ferg”;

In einer Programmiersprache mit statischer Semantik wäre das nicht erlaubt, man würde eine “Type Exception” bekommen als Fehler. Bei den Sprachen mit statischer Semantik ist das so : Wenn man einmal einen Variablennamen einem Datentyp zugewiesen hat, kann es nur noch an Objekte desselben Datentypen verknüpft werden, es kann niemals zu einem Objekt mit anderem Datentyp zugewiesen werden.[5] Aufgrund der oben genannten Eigenschaften ist Python sehr attraktiv für “Rapid Application Development”.
“Rapid Application Development” ist eine Form der agilen Softwareentwicklung. “Die agile Softwareentwicklung zeichnet sich durch Flexibilität während des Entwicklungsprozesses aus. Diese wird dadurch erreicht, dass nicht erst das fertige Produkt an den Kunden geliefert wird, sondern bereits funktionierende Teile vom Kunden getestet und genehmigt werden und folglich darauf weiter aufgebaut werden kann.”[6] Zusätzlich ist Python auch gut um Scripte zu schreiben oder es wird gerne auch als “Glue Language” benutzt. Glue Language heißt einfach nur , dass man mit Python existierende Programmkomponente zusammenfügen kann. Aufgrund der einfachen Syntax von Python lassen sich etwaige Wartungskosten für Software und Programme reduzieren, da die Sprache leicht zu lernen und lesen ist. “Python supports modules and packages, which encourages program modularity and code reuse ” bedeutet einfach nur, dass ein Hauptprogramm in kleinere funktionierende Einheiten aufgesplited wird.[7] Der Python “Interpreter” und seine ausführtliche “Library” sind verfügbar in “source” oder “binary form”. “Binary form” bedeutet, dass es in der Maschinensprache hinterlegt ist und es deinem Betriebssystem “matchen” muss. Bei “source form” ist es eher in der Entwicklersprache, weshalb es vorher kompiliert (übersetzt) werden muss, damit dein System den Algorithmus lesen und umsetzen kann.[8]

Warum wird Python für Data Science genutzt?

Wie oben schon genannt, ist Python eine leicht zu erlernende Sprache und sie hat eine aktive Community mit einer riesen Auswahl von “Libraries” und Ressourcen. Data Scientists wollen ihre Aufgaben unkompliziert erledigt haben. Zusätzlich hat Python auch eine große Auswahl von “Machine Learning Libraries”. Man könnte Python mit einem schweizer Taschenmesser vergleichen, weil Python einfach dafür bekannt ist, ein Alleskönner zu sein, wenn es um Data Science geht.[9][10]
Weiter geht’s zur nächsten Programmiersprache!

R

R ist eine Programmiersprache und Umgebung für statistische Berechnungen und Grafiken. Es ist ein Projekt des GNU und hat Ähnlichkeiten mit der Programmiersprache S. Wenn Sie wissen möchten was genau GNU ist, empfehle ich ihnen den Blog von Prof. Dr. Marcus Birkenkrahe Blog von Birkenkrahe oder mehr dazu auf der Hauptseite GNU.

R kann man als eine andere Implementation von S betrachten, es gibt zwar wichtige Unterschiede aber das meiste an Code, was für S geschrieben wurde, findet man unverändert auch in R.
R bietet eine hohe Reichweite von statistischen und grafischen Techniken an(lineare und nicht lineare Modellierung, klassische statistische Tests, Zeitreihenanalyse, Klassifizierung und “Clustering”.)[11]

Erklärung von linearen und nicht linearen Modellen :

Die ersten beiden Beispiele zeigen lineare Modelle, das letzte Beispiel ist nicht linear. “Lineare Modelle sind in den geschätzten Parametern linear, aber nicht unbedingt in den unabhängigen Variablen. Das erklärt, warum die mittlere Abbildung eine lineare Entscheidungslinie zwischen den zwei Klassen zeigt, obwohl die Linie nicht linear im Sinne von “gerade” ist.[12] Mehr dazu können Sie beim hinterlegten Link in den Quellen nachlesen.

statistische Tests :

“Ein statistischer Test ist eine Möglichkeit zur Auswertung der von den Daten mit Blick auf eine Hypothese gelieferten Evidenz. Diese Hypothese wird Nullhypothese genannt und wird oft auch als H0 bezeichnet. Unter H0 werden Daten durch Zufallsprozesse generiert. Mit anderen Worten haben die kontrollierten Prozesse (z. B. die experimentellen Manipulationen) keine Auswirkung auf die Daten. In der Regel sagt H0 aus, dass Gleichheit besteht (z. B. Gleichheit zwischen Mittelwerten oder zwischen Varianzen oder zwischen einem Korrelationskoeffizient und Null).”[13] Mehr dazu in den Quellen.

Zeitreihenanalyse :

“In Zeitreihenanalysen untersuchst Du viele Beobachtungen einer Variablen über die Zeit. Zeitreihen liegen zum Beispiel als Verkaufszahlen oder Aktienkurse eines Unternehmens, als Energieverbräuche in Haushalten oder als Temperaturverläufe in der Atmosphäre vor. Zeitreihen erkennst Du daran, dass Aktienkurse, Verbrauchszahlen oder Temperaturen über eine längere Zeit beschrieben werden. Moderne Methoden der Zeitreihenanalyse zeichnen sich insbesondere dadurch aus, dass Verbrauchszahlen, Aktienkurse oder Temperaturen der Zukunft mithilfe von Beobachtung in der Vergangenheit erklärt und fortgeschrieben werden. Beobachtungen von heute oder morgen sind eine Funktion aus den Beobachtungen von gestern. Mit anderen Worten: Deine Beobachtungen sind zeitlich gesehen nicht unabhängig voneinander. Dies ist das wesentliche Merkmal der Zeitreihenanalyse.” [14]

Clustering und Klassifizierung :
Hierzu habe ich einen sehr interessanten Blog Data Science Blog.

Warum wird R für Data Science benutzt?

R setzt seinen Fokus deutlich auf statistische Methoden und Grafiken. R wurde mit dem Ziel entwickelt, eine mehr “User-freundliche” Oberfläche anzubieten, mit dem man komplexe Datenanalysis, Statistik und grafische Modelle leicht erstellen kann.[15]
Data Scientists bei Facebook benutzen R zum Beispiel um schnell eine Veranschaulichung von neu gesammelten Daten zu erstellen. Die visualisierenden Komponenten von R erleichtern es, die riesigen Zahlen zu überschauen, in dem es zum Beispiel diese Zahlen in leicht verständliche lineare Tabellen umwandelt.[16]

Weiter schreibe ich in dem nächsten Blog, da ich schon etwas über mittlerweile 1000 Wörter bin.
Wir sehen uns dann demnächst!

 

Quellen :

[1] https://www.python.org/doc/essays/blurb/
[2] https://stackoverflow.com/questions/3265357/compiled-vs-interpreted-languages
[3] https://realpython.com/lessons/what-object-oriented-programming-oop/
[4] https://www.webopedia.com/TERM/H/high_level_language.html
[5] https://pythonconquerstheuniverse.wordpress.com/2009/10/03/static-vs-dynamic-typing-of-programming-languages/
[6] https://www.rechnungswesen-verstehen.de/lexikon/agile-softwareentwicklung.php
[7] http://aosd.net/importance-of-modularity-in-programming/
[8] https://stackoverflow.com/questions/5280906/difference-between-binary-release-and-source-release
[9] https://www.cbtnuggets.com/blog/2018/09/why-data-scientists-love-python/
[10] https://www.quora.com/Why-is-Python-a-language-of-choice-for-data-scientists
[11 ]https://www.r-project.org/about.html
[12] http://www.statistics4u.info/fundstat_germ/cc_linvsnonlin.html
[13] https://help.xlstat.com/customer/de/portal/articles/2062453-what-is-a-statistical-test-?b_id=9283
[14] https://www.statistik-nachhilfe.de/ratgeber/statistik/induktive-statistik/statistische-modellbildung-und-weitere-methoden/zeitreihenanalyse
[15] https://www.kdnuggets.com/2015/05/r-vs-python-data-science.html
[16] https://www.datasciencegraduateprograms.com/data-science-with-r/

Print Friendly, PDF & Email

Bildquellen

  • 2019-05-20 21_26_05-Window: https://www.vizteams.com/wp-content/uploads/2013/08/python-logo-master.png
  • R_logo.svg: https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/R_logo.svg/2000px-R_logo.svg.png
  • 2019-05-20 21_20_51-Window: https://upload.wikimedia.org/wikipedia/en/thumb/2/22/Heckert_GNU_white.svg/1048px-Heckert_GNU_white.svg.png
  • hl_linnonlin_classif: http://www.statistics4u.info/fundstat_germ/cc_linvsnonlin.html

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.