Data Science, Machine Learning und KI
Kontakt

Auswirkungen von Machine Learning

Die konzeptionellen Grundlagen für Machine Learning (ML) wurden in der zweiten Hälfte des 20. Jahrhunderts entwickelt. Aber Rechenbeschränkungen und Datenknappheit haben die Begeisterung für künstliche Intelligenz (KI) auf die letzten Jahre verschoben. Seitdem sind Computer exponentiell schneller geworden und Cloud-Dienste mit nahezu unbegrenzten Ressourcen entstanden. Der Fortschritt in der Rechenleistung, kombiniert mit der Fülle an Daten, macht Machine Learning Algorithmen heute in vielen Bereichen anwendbar.

KI-Systeme schlagen menschliche Domänenexperten bei komplexen Spielen wie dem Brettspiel Go oder Videospielen wie Dota2. Überraschenderweise können die Algorithmen Wege finden, um die Aufgabe zu lösen, an die menschliche Experten nicht einmal gedacht haben. In diesem Sinne kann der Mensch auch von künstlichen Systemen lernen.

All diese Erfolgsgeschichten müssen in einen Kontext gesetzt werden. ML Algorithmen eignen sich gut für spezifische Aufgaben; jedoch verallgemeinern sie heute noch schlecht.

Eine aktuelle Ausnahme sind riesige Modell in Natural Language Processing – die Verwendung einer menschlichen Sprache (z. B. Englisch) durch einen Computer. Eines der Modelle heißt GPT-3 und hat sich bei mehreren Aufgaben außergewöhnlich gut bewährt. Der Erfolg von GPT-3 beruht unter anderem auf Self-Supervised Learning, ein Ansatz in Machine Learning, den ich später erläutere.

Machine Learning ist ein Zweig der Künstlichen Intelligenz

In den frühen Anfängen der Künstlichen Intelligenz wurden Anwendungen auf regelbasierten Programmen aufgebaut, das heißt, der Mensch hat sein Wissen in den Computer codiert. Dieser Ansatz ist äußerst starr, da nur Szenarien abgedeckt werden, die der Entwickler berücksichtigt hat, und es findet kein Lernen statt. Mit der deutlichen Steigerung der Rechenleistung und der damit einhergehenden Datengenerierung können Algorithmen Aufgaben ohne menschliches Zutun lernen. Die Begriffe Algorithmus und Modell werden hier als Synonyme verwendet.

Der Prozess Wissen aus Daten zu extrahieren, wird als Machine Learning bezeichnet und ist ein Teilbereich der KI. Es gibt verschiedene Machine Learning Modelle, die alle unterschiedliche Ansätze verwenden. Die meisten basieren auf zwei Elementen: Parametern und einer Zielfunktion. Die Zielfunktion gibt einen Wert zurück, der die Leistung des Modells signalisiert, und Parameter kann man sich als Stellschrauben vorstellen. Daher besteht das Ziel darin, die Parameter zu finden, die die bestmögliche Leistung des Modells für einen bestimmten Datensatz ergeben.

Das Format der Daten bestimmt, welche Algorithmen anwendbar sind. Daten können strukturiert oder unstrukturiert sein. Strukturierte Daten sind tabellenartig angeordnet, während unstrukturierte Daten Bilder, Audio oder Text darstellen. Darüber hinaus können Daten gekennzeichnet oder nicht gekennzeichnet sein. Im Fall von gekennzeichneten Daten hat jeder Datenpunkt eine Kennzeichnung (Label). In Abbildung 1 ist beispielsweise jedes Bild im Datensatz mit der Beschreibung des dargestellten Tieres versehen. Nicht gekennzeichnete Daten (unlabeled data) enthalten keine Beschreibung. Wie Sie in Abbildung 1 sehen können, enthält der Datensatz auf der rechten Seite keine Kennzeichnung mehr.

Darstellung von gekennzeichneten und nicht gekennzeichneten Daten anhand von Bildern. Bild 1: Darstellung von gekennzeichneten und nicht gekennzeichneten Daten anhand von Bildern.

Bei der Arbeit mit unstrukturierten Daten gibt es oft keine natürliche Kennzeichnung, die gesammelt werden kann. Normalerweise müssen Menschen alle Beispiele durchgehen und sie mit vordefinierten Labels versehen. Modelle benötigen jedoch viele Daten, um eine Aufgabe zu lernen – ähnlich wie der Mensch, der in seinen ersten Lebensjahren viele Erfahrungen sammelt, bevor ihm das Gehen und Sprechen gelingt. Das hat Fei Fei Li, die ehemalige Direktorin von Stanfords AI Lab, dazu motiviert, eine große Datenbank mit sauber beschrifteten Bildern zu erstellen, das ImageNet. Derzeit umfasst ImageNet mehr als 14 Millionen Bilder mit mehr als 20.000 Kategorien – so finden Sie zum Beispiel mehrere hundert Mal Bilder, die eine Banane zeigen. ImageNet wurde zur größten Datenbank mit beschrifteten Bildern und ist der Ausgangspunkt für die meisten modernen Computer Vision Modelle.

Wir begegnen ML Modellen in unserem täglichen Leben. Einige sind praktisch, wie der Übersetzungsdienst Google Translate; andere machen Spaß, wie Snapchat-Filter. Unsere Interaktion mit künstlicher Intelligenz wird in den nächsten Jahren höchstwahrscheinlich zunehmen. Angesichts der potenziellen Auswirkungen von ML Modellen auf unser zukünftiges Leben möchte ich dir die fünf Zweige von ML und ihre Schlüsselkonzepte vorstellen.

5 Typen von Machine Learning Algorithmen

Supervised Learning

Was ist überwachtes Lernen (Supervised Learning)

Bei Supervised Learning Aufgaben basiert das Training eines Modells auf Daten mit bekannten Labels. Diese Modelle verwenden Daten als Eingabe und liefern eine Vorhersage als Ausgabe. Die Vorhersagen werden dann mit den Kennzeichnungen verglichen, die als Wahrheit gelten. Ziel ist es, die Diskrepanz zwischen Wahrheit und Vorhersage zu minimieren.

Supervised Learning Aufgaben lassen sich in zwei Bereiche unterteilen: Klassifikation und Regression. Klassifikationsprobleme sagen voraus, zu welcher Klasse ein Datenpunkt gehört. Zum Beispiel die Klassifikation eines Bildes – ist ein Hund oder eine Katze zu sehen? Es wird zwischen binärer Klassifikation, bei der nur zwei Klassen beteiligt sind, und Mehrklassenklassifikation mit mehr als zwei Klassen unterschieden. Andererseits sagen Regressionsprobleme eine reellwertige Zahl voraus. Ein typisches Regressionsproblem ist die Absatzprognose, z. B. die Vorhersage, wie viele Produkte im nächsten Monat verkauft werden.

Use Case

Bauern bauen an und liefern verderbliche Waren. Eine der Entscheidungen, die ein Tomatenbauer nach der Ernte treffen muss, ist die Bündelung seines Produkts. Ästhetisch aussehende Tomaten sollten den Endverbrauchern angeboten werden, während Tomaten mit kleinen Schönheitsfehlern an Zwischenproduzenten, z. B. Tomatensaucenhersteller, verkauft werden können. Andererseits sollten ungenießbare Tomaten herausgefiltert und als natürlicher Dünger verwendet werden.

Dies ist ein spezialisierter und sich wiederholender Job, den Machine Learning-Algorithmen leicht automatisieren können. Die Qualität der Tomaten kann mittels Computer Vision klassifiziert werden. Jede Tomate wird von einem Sensor gescannt und von einem Modell ausgewertet. Das Modell ordnet jede Tomate einer bestimmten Gruppe zu.

Bevor solche Modelle in der Produktion eingesetzt werden, müssen sie auf Daten trainiert werden. Input für das Modell wären Bilder von Tomaten mit entsprechenden Labels (z. B. Endverbraucher, Zwischenproduzent, Dünger). Die Ausgabe des Modells wäre die Wahrscheinlichkeit – wie sicher ist sich das Modell bei der Vorhersage. Eine hohe Wahrscheinlichkeit signalisiert, dass das Modell von der Klassifizierung überzeugt ist. In Fällen, in denen das Modell nicht sicher ist, könnte ein menschlicher Experte es sich noch einmal ansehen. Auf diese Weise erfolgt eine Vorfilterung von eindeutigen Fällen, während nicht eindeutige Fälle einzeln ermittelt werden müssen.

Der Einsatz des Modells könnte einen effizienteren Prozess ermöglichen. Darüber hinaus gilt dieser Use Case für zahlreiche Probleme bei der Qualitätskontrolle.

Frameworks

Der Reifegrad von Frameworks für Supervised Learning ist im Vergleich zu anderen Bereichen des Machine Learning hoch. Die meisten relevanten Programmiersprachen haben ein bewährtes Paket für Supervised Learning Aufgaben. Darüber hinaus erleichtern Cloud-Anbieter und KI-Plattformen die Nutzung von Supervised Learning Modellen durch benutzerfreundliche Schnittstellen und Tools.

Überlegungen

Für Supervised Learning Aufgaben sind gekennzeichnete Daten erforderlich. In vielen Fällen ist es teuer, gekennzeichnete Daten zu sammeln. Im obigen Use Case musste beispielsweise mindestens ein menschlicher Experte jede Probe von Hand beschriften. Noch kostspieliger wird es, wenn für die Kennzeichnung umfangreiches Wissen erwartet wird, etwa das Erkennen von Tumoren auf Röntgenbildern. Aus diesem Grund haben sich verschiedene Unternehmen auf die Bereitstellung von Kennzeichnungsdienstleistungen spezialisiert. Sogar die großen Cloud-Anbieter – Microsoft, Amazon und Google – bieten diese Dienste an. Der bekannteste ist Amazon Web Services Mechanical Turk.

Daten sind jedoch reichlich vorhanden – aber oft unbeschriftet. Im Bereich des unüberwachten Lernens (Unsupervised Learning) wurden Algorithmen entwickelt, um auch Daten ohne Kennzeichnung zu nutzen.

Unsupervised Learning

Was ist unüberwachtes Lernen (Unsupervised Learning)?

Unsupervised Learning Algorithmen konzentrieren sich darauf, Probleme zu lösen, ohne von gekennzeichneten Daten abhängig zu sein. Im Gegensatz zum Supervised Learning gibt es keinen Vergleichswert, der die Wahrheit repräsentiert. Die Leistung des Modells wird anhand der Eingabedaten selbst bewertet.

Dieses Feld des Machine Learnings lässt sich in drei Teilbereiche zusammenfassen – Dimensionsreduktion, Clustering und Anomalieerkennung. Diese Teilbereiche werden im Folgenden vorgestellt.

Datensätze können aufgrund der Anzahl der Observationen und der darin enthaltenen Merkmale (Features) enorm sein. Im Allgemeinen sollte die Anzahl der Observationen viel höher sein als die Anzahl der Features, um sicherzustellen, dass Modelle ein Muster in den Daten finden können. Es gibt ein Problem, wenn die Features die Anzahl der Beispiele in den Daten überwiegen.

Dimensionsreduktionsalgorithmen gehen dieses Problem an, indem sie eine Abstraktion des ursprünglichen Datensatzes erstellen und dabei so viele Informationen wie möglich beibehalten. Das bedeutet, dass ein Datensatz mit 100 Features und nur 50 Observationen zu einem neuen Datensatz mit 10 Features und 50 Beispielen komprimiert werden kann. Die neuen Features sind so aufgebaut, dass sie möglichst viel Information beibehalten. Eine kleine Menge an Informationen aus dem ursprünglichen Datensatz wird geopfert, um sicherzustellen, dass ein Modell zuverlässige Vorhersagen liefert.

Bei Clustering-Ansätzen versuchen wir, die Beobachtungen in verschiedene Untergruppen zu unterteilen. Das Ziel besteht darin, Cluster zu erhalten, bei denen Beobachtungen innerhalb von Clustern ähnlich sind, während Beobachtungen in anderen Clustern abweichen.

Jede Beobachtung des Datensatzes kann man sich als Punkt in einem Raum vorstellen. Die erfassten Features bestimmen die Position des Punktes. Betrachtet man zwei Beobachtungen, kann eine Entfernung berechnet werden. Der Abstand ist dann ein Signal dafür, wie ähnlich sich diese beiden Punkte sind.

Clustering-Algorithmen erzeugen zunächst zufällige Cluster und passen diese iterativ an, um die Abstände von Punkten innerhalb eines Clusters zu minimieren. Die resultierenden Cluster enthalten Beobachtungen mit ähnlichen Eigenschaften.

Bei der Anomalieerkennung besteht das Ziel darin, Beobachtungen zu identifizieren, die aufgrund des Datensatzes seltsam erscheinen. Diese Beobachtungen können auch als Ausreißer oder Ausnahmen bezeichnet werden. Ein Beispiel sind betrügerische Bankaktivitäten, bei denen die Zahlung aus einem anderen Land als üblich ausgelöst wurde. Der Versuch wird als Anomalie identifiziert und löst einen Verifizierungsprozess aus.

Use Case

Große Einzelhandelsunternehmen bieten oft Treuekarten an, um Punkte zu sammeln. Nach jedem Einkauf kann die Karte gescannt werden, um Punkte zu sammeln. Monatlich erhält der/die Kunde:in einen Bericht über das Einkaufsverhalten. Welche Produkte hat der Kunde am häufigsten gekauft? Wie hoch ist der Anteil nachhaltiger Produkte im Warenkorb? Der Kunde erhält auch eine Art Rabatt- oder Cashback-Gutschein. Je mehr Punkte ein Kunde sammelt, desto höher ist der Wert des Gutscheins. Dies kann zu einer höheren Kundenbindung und -zufriedenheit führen, da sie für ihr Verhalten belohnt werden. Die gesammelten Daten über das Einkaufsverhalten der Kunden sind sehr wertvoll.

Es ist davon auszugehen, dass es eine gewisse Heterogenität unter den Kunden gibt, da alle ihr Einkaufsverhalten haben. Clustering könnte verwendet werden, um Gruppen mit ähnlichen Präferenzen zu identifizieren. Dies ist ein Problem des unüberwachten Lernens, da die Gruppen vorher unbekannt sind.

Beispielsweise können drei Cluster entstehen. Ein Cluster umfasst Kunden mit vegetarischer Ernährung, Fleischesser und Kunden, die Fleisch und vegetarische Ersatzprodukte mischen. Basierend auf den drei Kundenprofilen können Marketingkampagnen clusterspezifisch angepasst werden.

Clustering der Kunden in drei Gruppen auf der Grundlage ihres Einkaufsverhaltens. Bild 2: Clustering der Kunden in drei Gruppen auf der Grundlage ihres Einkaufsverhaltens.

Frameworks/Maturity

Dimensionsreduktions-, Clustering- und Anomalieerkennungsalgorithmen sind relativ ausgereifte Ansätze und in den meisten Machine Learning Paketen verfügbar.

Überlegungen

Neuere Forschungen legen einen Schwerpunkt auf unüberwachte Methoden. Der Hauptgrund dafür ist, dass eine Fülle von Daten zur Verfügung steht, aber nur ein winziger Teil sind gekennzeichnete Daten. Self-Supervised und Semi-Supervised Learning Ansätze entstanden aus dem Ziel, gekennzeichnete und nicht gekennzeichnete Daten zu kombinieren, um eine Aufgabe zu lernen.

Self-Supervised Learning

Was ist selbstüberwachtes Lernen (Self-Supervised Learning)?

Self-Supervised Learning ist ein neuer Ansatz im Machine Learning, der hauptsächlich in Computer Vision und Natural Language Processing angewendet wird. Diese Felder erfordern große Datensätze, um eine Aufgabe zu erlernen, aber wie bereits erwähnt, ist es teuer, einen sauberen, großen Datensatz zu generieren.

Jeden Tag werden große Mengen nicht gekennzeichneter Daten erstellt – Tweets, Instagram-Posts und vieles mehr. Die Idee des selbstüberwachten Lernens besteht darin, alle verfügbaren Daten zu nutzen.

Die Lernaufgabe wird mit nicht gekennzeichneten Daten zu einem überwachten Problem konstruiert. Der Trick ist, dass die Labels für die überwachte Aufgabe eine Teilmenge des Inputs sind. Mit anderen Worten, die Daten werden so transformiert, dass ein Teil der Eingabe als Label verwendet wird und das Ziel des Modells darin besteht, den fehlenden Teil der Eingabe vorherzusagen. Auf diese Weise überwachen sich die Daten selbst.

Es gibt verschiedene Möglichkeiten, Eingabedaten zu transformieren. Eine einfache ist durch Rotation. Wie in Abbildung 2 dargestellt, wird auf jedes Eingabebild eine Transformation angewendet. Das modifizierte Bild wird für das Modell eingegeben, und die angewendete Drehung ist das vorherzusagende Ziel. Um verschiedene Drehungen für dasselbe Bild vorherzusagen, muss das Modell ein grobes Verständnis der Welt entwickeln – bspw. wo ist der Himmel.

Self Supervised Learning Illustration Bild 3: Illustration des Self-Supervised Learnings unter Verwendung der Drehung des Eingabebildes. Das Modell lernt, die angewendete Rotation vorherzusagen.

Zusammenfassend ist die Vorhersage der Rotation irrelevant; es ist nur ein Mittel zum Zweck. Beim Lösen der Rotationsvorhersageaufgabe lernt das Modell implizit ein allgemein gutes Verständnis von Bildern.

Im Kontext von Sprachmodellen könnte ein erstes Ziel darin bestehen, das nächste Wort im Text vorherzusagen. Durch diese Aufgabe lernt das Modell bereits die Struktur einer Sprache. Der Vorteil ist, dass das Modell ein breites Verständnis erlernt hat, auf dem man weiter aufbauen kann. So fängt man nicht bei jedem Training von Null an.

Use Case

Spracherkennungsmodelle können menschliche Sprache in Text übersetzen. Es wird in vielen Diensten verwendet, vor allem in Heimassistenzsystemen wie Alexa von Amazon.

Im selbstüberwachten Kontext können nicht gekennzeichnete Daten (z.B. Hörbücher) für das Vortraining verwendet werden. Durch eine Hilfsaufgabe lernt das Modell ein initiales Verständnis von Sprache. Nach dem Training können Supervised Learning Techniken angewendet werden, um das Modell auf eine spezifische Aufgabe zu trainieren. Daher kann Self-Supervised Learning verwendet werden, um die Leistung von Supervised Learning-Ansätzen zu verbessern.

Frameworks

Im Internet gibt es zahlreiche mit Self-Supervision vortrainierte Modelle. Diese kann man auf Tensorflow Hub, PyTorch Hub, Hugging Faces und anderen Plattformen herunterladen und nutzen.

Überlegungen

Neuere Arbeiten zeigen vielversprechende Ergebnisse, konzentrieren sich jedoch oft auf einen Bereich. So bringt Self-Supervised Learning nachweisbare Verbesserungen bei der Bildklassifizierung. Die Übertragung des Fortschritts auf die Objekterkennung hat sich jedoch als knifflig erwiesen. Dennoch sind die Ansätze und Verbesserungen spannend.

Aktuell entwickeln wir uns in die Richtung, dass immer weniger Unternehmen in der Lage sind, Self-Supervised Learning Modelle zu trainieren. Dies liegt an den hohen Kosten für Rechenleistung, enormen Datenmengen, die benötigt werden und an der Knappheit von relevantem Wissen. Zudem ist es effizienter, einige wenige Self-Supervised Learning Modelle zu haben anstelle von vielen.

Semi-Supervised Learning

Was ist teilüberwachtes Lernen (Semi-Supervised Learning)?

Supervised und Unsupervised Learning werden im Semi-Supervised Learning kombiniert. Es gibt verschiedene Ansätze für das Semi-Supervised Learning. Normalerweise ist es in mehrere Schritte unterteilt.

Zunächst wird ein Modell Self-Supervised trainiert. Zum Beispiel lernt das Modell ein gutes Verständnis einer Sprache mithilfe von unbeschrifteten Textdaten und einer Hilfsaufgabe (ein Beispiel wäre die Vorhersage des nächsten Wortes im Text). Die für das Gelingen der Hilfsaufgabe verantwortlichen Elemente des Modells können extrahiert werden. Der Rest des Modells enthält ein hohes Verständnis einer Sprache.

Das verkürzte Modell wird dann auf die beschrifteten Daten mit Hilfe von Supervised Learning trainiert. Da das Modell bereits ein gewisses Verständnis einer Sprache erlernt hat, benötigt es keine riesige Menge an gekennzeichneten Daten, um eine andere spezialisierte Aufgabe im Zusammenhang mit dem Sprachverständnis zu erlernen. Semi-Supervised Learning wird hauptsächlich in den Bereichen Computer Vision und Natural Language Processing eingesetzt.

Use Case

Täglich teilen Menschen ihre Gedanken und Meinungen in den sozialen Medien. Diese Kommentare in Textform können für Unternehmen wertvoll sein. Die Verfolgung der Kundenzufriedenheit im Zeitverlauf führt zu einem besseren Verständnis der Kundenerfahrung. Die Stimmungsanalyse, ein Teilgebiet des Natural Language Processing, kann verwendet werden, um die Kundenansichten basierend auf Tweets, Facebook-Kommentaren oder Blog-Posts zu klassifizieren. Bevor die Stimmung anhand von Text klassifiziert werden kann, wird das Modell anhand von Textdokumenten aus Wikipedia, Büchern und vielen anderen Ressourcen vortrainiert. Normalerweise besteht die Aufgabe des Modells darin, das nächste Wort in einem Satz vorherzusagen. Ziel ist es, in einem ersten Schritt den Aufbau einer Sprache zu erlernen, bevor man sich auf eine bestimmte Aufgabe spezialisieren kann. Nach dem Vortraining werden die Modellparameter an einem Datensatz mit Labels feinabgestimmt. In diesem Szenario wird das Modell an einem Datensatz mit Tweets trainiert, die jeweils mit einem Tag versehen sind, je nachdem, ob das Stimmungsbild negativ, neutral oder positiv ist.

Frameworks

Semi-Supervised Learning umfasst alle Ansätze, die Unsupervised und Supervised Learning kombinieren. Daher können Praktiker gut etablierte Frameworks aus beiden Bereichen verwenden.

Überlegungen

Semi-Supervised Learning kombiniert nicht gekennzeichnete und gekennzeichnete Daten, um die Vorhersageleistung des Modells zu erhöhen. Voraussetzung ist jedoch, dass die Größe der unbeschrifteten Daten im Vergleich zu den beschrifteten Daten wesentlich größer ist. Andernfalls könnte nur Supervised Learning verwendet werden.

Reinforcement Learning

Was ist Reinforcement Learning?

Im Reinforcement Learning interagiert ein Agent (ein Modell) mit einer Umgebung. Der Agent beobachtet den Zustand der Umgebung und kann basierend auf seinen Beobachtungen eine Aktion auswählen. Der Agent erhält von der Umgebung ein Feedback. Wenn die Aktion gut war, fällt das Feedback positiv aus und vice versa. Das Ziel des Agenten ist es, seine zukünftige kumulative Belohnung zu maximieren. Mit anderen Worten, es muss für jede Situation die beste Aktion finden.

In vielen Fällen wird die Interaktion des Agenten mit der Umgebung simuliert. Auf diese Weise kann der Agent Millionen von Zuständen erleben und das richtige Verhalten lernen.

Illustration Reinforcement Learning Bild 4: Illustration des Lernprozesses beim Reinforcement Learning.

Use Case

Personalisierte Werbung kann die Effizienz einer neuen Marketingkampagne verbessern. Anzeigen für ein Produkt, beispielsweise ein Auto, werden oft allen Homepage Besuchern gleich angezeigt. Interessanter wäre es Besuchern, die wiederholt die Seite aufsuchen, schrittweise das Produkt schmackhaft zu machen, bevor das finale Angebot vorgestellt wird. Zunächst könnte die Anzeige die Verfügbarkeit günstiger Finanzierungskonditionen beschreiben, dann beim nächsten Besuch eine exzellente Serviceabteilung loben und am Ende den finalen Rabatt präsentieren. Dies kann zu mehr Klicks eines Nutzers und bei guter Umsetzung zu mehr Verkäufen führen.

Im oben beschriebenen Fall würde ein Agent je nach Profil des Benutzers auswählen, welche Anzeige geschaltet werden soll. Das Profil basiert auf den Interessen und Präferenzen des Benutzers, die aus der Online-Aktivität abgeleitet werden. Der Agent passt seine Aktionen an – indem er verschiedene Anzeigen auswählt – basierend auf dem Feedback des Benutzers. In dieser Einstellung erhält der Agent nicht bei jeder Aktion ein Signal, da es eine Weile dauert, bis sich der Nutzer für den Kauf eines Autos entscheidet. Beispielsweise kann die Schaltung einer bestimmten Anzeige das Interesse des Nutzers wecken, aber nicht sofort zu einem Verkauf führen. Dies wird als Kreditzuweisungsproblem bezeichnet. Aber der Agent kann eine Weile warten. Falls eine Folge von Maßnahmen zu einem Verkauf führt, wird die Wahrscheinlichkeit der ergriffenen Maßnahmen bei gleichem Input erhöht. Andernfalls wird der Agent in Zukunft eine neue Strategie fahren.

Frameworks

Im Bereich des Reinforcement Learning existieren verschiedene Ansätze. Daher gibt es kein standardisiertes Framework. Aber gym und baselines – beide entwickelt von OpenAI, einem gemeinnützigen KI-Forschungsunternehmen – etablieren sich als wichtige Ausgangspunkte für Reinforcement Learning-Anwendungen.

Überlegungen

Der Agent lernt auf der Grundlage vieler Interaktionen mit der Umgebung. Diese Interaktionen in Echtzeit durchzuführen, würde lange dauern und ist oft nicht machbar – zum Beispiel kann ein Autopilot in der realen Welt nicht lernen, weil er Menschenleben gefährden könnte. Daher werden Simulationen der realen Welt erstellt, in denen der Agent durch Trial & Error lernen kann. Um einen Agenten erfolgreich zu trainieren, muss die Lücke zwischen Simulation und Realität so klein wie möglich sein.

Neben der Simulation ist die Konzeption der Belohnung entscheidend für die Leistung des Agenten. Bei der Maximierung seiner Belohnung kann der Agent unbeabsichtigtes Verhalten erlernen, das zu höheren Belohnungen führt, aber die Aufgabe nicht löst.

Der Lernprozess des Agenten ist probenineffizient. Das bedeutet, dass er sehr viele Interaktionen braucht, um eine Aufgabe zu lernen.

Reinforcement Learning zeigt in vielen Bereichen vielversprechende Ergebnisse. Allerdings basieren nur wenige reale Anwendungen darauf. Dies könnte sich in ein paar Jahren ändern.

Zusammenfassung

Die Zukunft von Künstlicher Intelligenz

Künstliche Intelligenz hat einen langen Weg zurückgelegt – von regelbasierten Skripten bis hin zu Algorithmen des Machine Learnings, die menschliche Experten schlagen. Das Feld ist in den letzten Jahren stark gewachsen. ML-Modelle werden verwendet, um verschiedene Domänenprobleme anzugehen, und ihr Einfluss auf unser Leben nimmt stetig zu.

Dennoch bleiben wichtige Fragen offen. Um zuverlässigere Modelle zu erstellen, müssen wir uns diesen Fragen stellen.

Ein entscheidender Punkt ist die Messung der Intelligenz. Wir haben noch keine allgemeine Definition von Intelligenz. Die aktuellen Modelle, die wir als künstlich intelligent bezeichnen, lernen, indem sie sich die von uns bereitgestellten Daten merken. Das führt bereits zu erstaunlichen Ergebnissen. Die Einführung einer Intelligenzmetrik und deren Optimierung wird in Zukunft zu weitaus leistungsfähigeren Modellen führen. Es ist spannend, die Fortschritte in der KI zu erleben.

Quellen

  1. „Google AI defeats human Go champion“
  2. „OpenAI Five Defeats Dota 2 World Champions“
  3. https://www.alexirpan.com/2018/02/14/rl-hard.html
  4. Reinforcement Learning, Sutton R. and Barto A., 2018

Fran Peric Fran Peric

Mein Blogbeitrag zielt auf Data Science Einsteiger ab, die vor der Wahl stehen, welche Programmiersprache sie als Erstes lernen wollen. Wir bei statworx arbeiten mit den zwei beliebtesten Sprachen R und Python. Beide Sprachen haben ihre Stärken und Schwächen, weshalb man idealerweise beide beherrschen sollte. Für den Einstieg empfehlen wir eine Sprache zu erlernen und sich dann in der anderen fortzubilden. Um die Entscheidung zu erleichtern, mit welcher Programmiersprache man beginnen möchte, stelle ich Euch beide vor und vergleiche sie anschließend miteinander.

Überblick R und Python

Sowohl Python als auch R sind Open-Source-Programmiersprachen. Das bedeutet, dass die Quellcodes öffentlich zugänglich sind und gratis verwendet werden können. Während Python eine General Purpose Programmiersprache (Allzwecksprache) ist, wurde R für statistische Analysen entwickelt. Daher weisen die Nutzer der Sprachen oftmals unterschiedliche Hintergründe auf. Verallgemeinernd kann man sagen, dass Softwareentwickler Python nutzen und Statistiker R.

  R Python
Veröffentlichung 1993 1991
Entwickler R Core Team Python Software Foundation
Package Management CRAN Conda (empfohlen für Einsteiger)

Eine Fülle an Erweiterungen

Beide Sprachen verfügen über einen Grundstock an Funktionen, die mit Paketen (packages) erweitert werden können.

Das Comprehensive R Archive Network (CRAN) ist eine Plattform für R Pakete. Um ein Paket auf CRAN bereit zu stellen, müssen eine ganze Reihe an Richtlinien eingehalten werden. CRAN gewährleistet dadurch, dass alle Pakete, die dort zum Download zur Verfügung stehen auch tatsächlich funktionieren. Insgesamt stehen auf CRAN 10.000 Pakete zur Verfügung. Da R die Standard-Sprache für Statistiker ist, findet man in CRAN für fast jedes Problem im Bereich Statistik eine passende Lösung. Es ist also genau die richtige Anlaufstelle für die neuesten statistischen Methoden und Analysen.

Bei Python gibt es zwei Paket-Verwaltungsplattformen: conda und PyPI (Python Package Index). Auch für Python gibt es über 10.000 Pakete, die im Gegensatz zu R einen sehr breiten Anwendungsbereich abdecken. Da es zu Komplikationen kommen kann, wenn Python Pakete global installiert werden, nutzt man dafür virtuelle Umgebungen. Die sorgen für reibungslose Abläufe innerhalb der verschiedenen Pakete und bei Abhängigkeiten von Paket zu Paket. Für Anfänger ist es daher nicht so einfach, sich da zurecht zu finden.

Mit Hilfe von Paketen besteht die Möglichkeit in R Python Code auszuführen sowie vice versa. Falls dich das interessiert, check den Blogbeitrag von meinem Kollegen Manuel ab. Er stellt das Paket reticulate vor.

IDEs als Hilfestellung

Programmierer nutzen oftmals eine integrierte Entwicklungsumgebung (IDE), die ihnen die Arbeit durch kleine aber feine Hilfsmittel erleichtert.

Für R Nutzer hat sich RStudio als Standard-IDE durchgesetzt. Die IDE wird vom gleichnamigen Unternehmen vertrieben, das kommerziell hinter R steht. RStudio bietet nicht nur ein angenehmes Arbeitsumfeld, sondern entwickelt auch aktiv Pakete und Erweiterungen für die R Sprache. Vom RStudio-Team stammen beispielsweise wichtige Pakete wie tidyverse, packrat und devtools sowie beliebte Erweiterungen wie shiny (Dashboards) und RMarkdown (Berichte).

Python Nutzer haben die Wahl zwischen verschiedenen IDEs (PyCharm, Visual Studio Code, Spyder, …). Allerdings gibt es kein Unternehmen, das hinter Python steht und vergleichbar mit RStudio wäre. Dennoch werden dank der Bemühungen der riesigen Community und der Python Software Foundation ständig neue Erweiterungen für Python zusammengestellt.

Die Kunst der Datenvisualisierung

Die meist verwendeten Pakete für Datenvisualisierung mit Python sind matplotlib und seaborn. Dashboards lassen sich in Python mit dash erstellen.

Aber R hat bei der Datenvisualisierung einen Trumpf im Ärmel: Das Paket ggplot2, das auf dem Buch The Grammar of Graphics von Leland Wilkinson basiert. Mit diesem Paket kannst Du ansprechende und maßgeschneiderte Grafiken erstellen, die Du wiederum auf Dashboards mit Hilfe von shiny für Andere zugänglich machen kannst.

Beide Programmiersprachen bieten die Möglichkeit, schöne Grafiken leicht zu erstellen. Trotzdem überzeugt das R Paket ggplot2 mit seiner Flexibilität und seinen visuellen Möglichkeiten.

Pluspunkte für Lesbarkeit

Python wurde nach dem Motto Readability counts konzipiert. Somit können auch Leute, die nicht mit der Programmiersprache vertraut sind, interpretieren was im Code gemacht wird.

Das ist in R Code eher nicht der Fall. Die Sprache ist weniger intuitiv aufgebaut als Python. Aufgrund der guten Lesbarkeit bietet Python daher einen leichteren Einstieg ins Programmieren.

Schnelligkeit in verschiedenen Observationsgrößen

Als nächstes vergleiche ich, wie lange es dauert in R und Python einen simulierten Datensatz zu erstellen. Für eine faire Gegenüberstellung sollten die Bedingungen möglichst gleich sein. Die Daten werden mit den Paketen Xy und XyPy in R und Python respektive simuliert. Für die Zeitmessung habe ich microbenchmark in R und timeit in Python benutzt. Um die Simulation schnellstmöglich zu generieren, wird der Prozess parallelisiert auf acht Kernen (R: parallel, Python: multiprocessing).

Für das Experiment wird ein Datensatz mit 100 Observationen und 50 Variablen 100 Mal simuliert. Die Zeit, die der Rechner benötigt, um die Simulation durchzuführen, wird für jede Simulation einzeln gemessen. Und das wird dann für 1.000, 10.000, 100.000 und 1.000.000 Observationen wiederholt.

Die R und Python Code Snippets sind unten abgebildet.

# R
# devtools::install_github("andrebleier/Xy")
# install.packages("parallel")
# install.packages("microbenchmark")

# Load packages
library(Xy)
library(microbenchmark)
library(parallel)

# Extract function definition from for loop
sim_this <- function(n_sim) {
  sim <- microbenchmark(Xy(n = n_sim,
                           numvars = c(50,0),
                           catvars = 0), 
                        times = 100, unit = "s")
  data.frame(n = n_sim, 
             mean = summary(sim)[, 4])
}

# Time measurement for different number of simulations
n_sim <- c(1e2, 1e3, 1e4, 1e5, 1e6)
sim_in_r <- data.frame(n = rep(0, length(n_sim)),
                       t = rep(0, length(n_sim)))
for(i in 1:length(n_sim)){
  out <- mclapply(n_sim[i],
                  FUN = sim_this,
                  mc.cores = 8)

  sim_in_r[i, 1] <- out[[1]][1]
  sim_in_r[i, 2] <- out[[1]][2]
}

# Python
# In terminal: pip install xypy
import multiprocessing as mp
import numpy as np
import timeit
from xypy import Xy

# Predefine function of interest
def sim_this(n_sim):
  return(timeit.timeit( lambda: Xy(n = int(n_sim),
      numvars = [50, 0],
      catvars = [0, 0],
      weights = [5, 10],
      stn = 4.0,
      cor = [0, 0.1],
      interactions = 1,
      noisevars = 5), number = 100))

# Paralleled computation 
pool = mp.Pool(processes = 8)
n_sim = np.array([1e2, 1e3, 1e4, 1e5, 1e6])
results = [pool.map(sim_this, n_sim)]

Die durchschnittliche Dauer, sortiert nach Datensatzgröße, wird für R und Python im unteren Plot dargestellt. Die X-Achse wird hier auf einer logarithmischen Skala mit Basis 10 dargestellt, um die Grafik übersichtlicher zu machen.

Während R bei einer Datensatzgröße von 100 und 1.000 Observationen etwas schneller ist, hängt Python R bald darauf deutlich ab.

r-python-speed-comparison

Für weitere Vergleiche kann ich die folgenden STATWORX Blogbeiträge empfehlen: pandas vs. data.table und pandas vs. data.table part 2, dabei wird der Fokus auf Datenmanipulation gelegt.

Der Standard bei Deep Learning

Wenn Dich vor allem Deep Learning Methoden interessieren, eignet sich Python als Sprache besser. Die meisten Deep Learning Bibliotheken wurden in Python geschrieben und implementiert.

Auch in R ist Deep Learning möglich, aber die R Deep Learning Community ist deutlich kleiner. Implementationen wie Keras und TensorFlow lassen sich zwar auch in R aufrufen, dies läuft dann aber über Pakete von Drittanbietern. Die Pakete bieten daher nicht die volle Flexibilität für die Nutzer, z.B. sind nicht alle TensorFlow Funktionen erhältlich. Zu dem kommt der Aspekt der Schnelligkeit. Deep Learning mit Python ist schneller als mit R.

Umfrage in der Community: Wie ticken die Anwender?

Als angehende Data Scientists ist Kaggle eine wichtige Plattform für Euch. Dort kann man an spannenden Machine Learning Wettkämpfen teilnehmen, selbst experimentieren und aus den Erfahrungen der Community lernen.

2018 hat Kaggle eine Machine Learning & Data Science Umfrage durchgeführt. Die Umfrage war zwei Wochen lang online und es gingen insgesamt 23.859 Antworten ein. Aus den Ergebnissen dieser Umfrage habe ich verschiedene Plots erstellt, aus denen sich einige interessante Schlüsse im Hinblick auf mein Blogthema ziehen lassen. Der Code zu den einzelnen Plots ist öffentlich zugänglich auf Github.

Exkurs: Python & R im Vergleich zu anderen Sprachen

Bevor wir uns auf R und Python stürzen, schauen wir uns an, wie die beiden im Vergleich zu anderen Programmiersprachen abschneiden. Jeder Umfragenteilnehmer gab an, welche Sprache er vorrangig benutzt. Im unteren Plot wurde nach Sprache aggregiert und das Ergebnis lautet: Die große Mehrzahl der Teilnehmer benutzt vor allem Python! Gefolgt von R auf dem zweiten Platz. In dieser Umfrage unterscheiden wir nicht zwischen den Arbeitsbereichen, weshalb Python – als General Purpose Programmiersprache – vermutlich so stark hervorsticht.

Languages

Die Gegenüberstellung R & Python

Im direkten Vergleich zwischen R und Python sieht man, dass sehr viele R-Nutzer auch Python benutzen. Wohingegen die Python-Nutzer oftmals ausschließlich mit Python arbeiten.

Venndiagram

Wenn man die Nutzung der Sprachen nach Arbeitsbereich vergleicht, sieht man eine klare Dominanz von Python. In allen Arbeitsfeldern, bis auf Statistiker, wird mehrheitlich Python benutzt.

Relative_shares

Die Teilnehmer wurden außerdem gefragt: Welche Sprache empfiehlst Du angehenden Data Scientists zuerst zu lernen? Die Antworten auf die Frage sind in der unteren Tabelle zusammengefasst.

Sprache Empfehlung Nutzer Differenz
Python 14.181 8.180 6.001
R 2.342 2.046 296
SQL 914 1.211 -297
C++ 339 739 -400
Matlab 256 355 -99
Java 184 903 -719
Scala 74 106 -32
Javascript 72 408 -336
SAS 69 228 -159
VBA 38 135 -97
Go 26 46 -20
Other 161 117 44

Wenn man die Anzahl Empfehlungen und die Anzahl Nutzer vergleicht, dann sieht man, dass R und Python die einzigen Sprachen sind, die eine positive Differenz aufweisen.

Auch bei dieser Frage liegt Python (14.181) wieder weit vor R (2.342).

Recommendation

Fazit

Eine Sache vorweg: beide Sprachen sind sehr mächtig. Daher kann man keine falsche Wahl treffen! Die Wahl der Sprache hängt davon ab, welche Projekte man verwirklichen möchte.

Als universelle Programmiersprache ist Python für diverse Anwendungsgebiete geeignet. Weshalb ich Dir grundsätzlich empfehle mit Python anzufangen. Falls aber statistische Auswertungen oder Datenvisualisierungen bei Deinen Projekten im Vordergrund stehen, hat R gegenüber Python einen Vorteil.

Wie schon erwähnt haben beide Sprachen ihre Vor- und Nachteile. Als fortgeschrittener Data Scientist solltest Du idealerweise beide Sprachen beherrschen.

Ich hoffe, dass Dir dieser Beitrag bei der Suche nach dem richtigen Einstieg in die Data Science Welt weiterhilft.

Happy Coding!

Falls Du Interesse an Schulungen hast, kannst du dir gerne unter AI Academy unsere Kurse durchschauen.

Referenzen

Fran Peric Fran Peric

Mein Blogbeitrag zielt auf Data Science Einsteiger ab, die vor der Wahl stehen, welche Programmiersprache sie als Erstes lernen wollen. Wir bei statworx arbeiten mit den zwei beliebtesten Sprachen R und Python. Beide Sprachen haben ihre Stärken und Schwächen, weshalb man idealerweise beide beherrschen sollte. Für den Einstieg empfehlen wir eine Sprache zu erlernen und sich dann in der anderen fortzubilden. Um die Entscheidung zu erleichtern, mit welcher Programmiersprache man beginnen möchte, stelle ich Euch beide vor und vergleiche sie anschließend miteinander.

Überblick R und Python

Sowohl Python als auch R sind Open-Source-Programmiersprachen. Das bedeutet, dass die Quellcodes öffentlich zugänglich sind und gratis verwendet werden können. Während Python eine General Purpose Programmiersprache (Allzwecksprache) ist, wurde R für statistische Analysen entwickelt. Daher weisen die Nutzer der Sprachen oftmals unterschiedliche Hintergründe auf. Verallgemeinernd kann man sagen, dass Softwareentwickler Python nutzen und Statistiker R.

  R Python
Veröffentlichung 1993 1991
Entwickler R Core Team Python Software Foundation
Package Management CRAN Conda (empfohlen für Einsteiger)

Eine Fülle an Erweiterungen

Beide Sprachen verfügen über einen Grundstock an Funktionen, die mit Paketen (packages) erweitert werden können.

Das Comprehensive R Archive Network (CRAN) ist eine Plattform für R Pakete. Um ein Paket auf CRAN bereit zu stellen, müssen eine ganze Reihe an Richtlinien eingehalten werden. CRAN gewährleistet dadurch, dass alle Pakete, die dort zum Download zur Verfügung stehen auch tatsächlich funktionieren. Insgesamt stehen auf CRAN 10.000 Pakete zur Verfügung. Da R die Standard-Sprache für Statistiker ist, findet man in CRAN für fast jedes Problem im Bereich Statistik eine passende Lösung. Es ist also genau die richtige Anlaufstelle für die neuesten statistischen Methoden und Analysen.

Bei Python gibt es zwei Paket-Verwaltungsplattformen: conda und PyPI (Python Package Index). Auch für Python gibt es über 10.000 Pakete, die im Gegensatz zu R einen sehr breiten Anwendungsbereich abdecken. Da es zu Komplikationen kommen kann, wenn Python Pakete global installiert werden, nutzt man dafür virtuelle Umgebungen. Die sorgen für reibungslose Abläufe innerhalb der verschiedenen Pakete und bei Abhängigkeiten von Paket zu Paket. Für Anfänger ist es daher nicht so einfach, sich da zurecht zu finden.

Mit Hilfe von Paketen besteht die Möglichkeit in R Python Code auszuführen sowie vice versa. Falls dich das interessiert, check den Blogbeitrag von meinem Kollegen Manuel ab. Er stellt das Paket reticulate vor.

IDEs als Hilfestellung

Programmierer nutzen oftmals eine integrierte Entwicklungsumgebung (IDE), die ihnen die Arbeit durch kleine aber feine Hilfsmittel erleichtert.

Für R Nutzer hat sich RStudio als Standard-IDE durchgesetzt. Die IDE wird vom gleichnamigen Unternehmen vertrieben, das kommerziell hinter R steht. RStudio bietet nicht nur ein angenehmes Arbeitsumfeld, sondern entwickelt auch aktiv Pakete und Erweiterungen für die R Sprache. Vom RStudio-Team stammen beispielsweise wichtige Pakete wie tidyverse, packrat und devtools sowie beliebte Erweiterungen wie shiny (Dashboards) und RMarkdown (Berichte).

Python Nutzer haben die Wahl zwischen verschiedenen IDEs (PyCharm, Visual Studio Code, Spyder, …). Allerdings gibt es kein Unternehmen, das hinter Python steht und vergleichbar mit RStudio wäre. Dennoch werden dank der Bemühungen der riesigen Community und der Python Software Foundation ständig neue Erweiterungen für Python zusammengestellt.

Die Kunst der Datenvisualisierung

Die meist verwendeten Pakete für Datenvisualisierung mit Python sind matplotlib und seaborn. Dashboards lassen sich in Python mit dash erstellen.

Aber R hat bei der Datenvisualisierung einen Trumpf im Ärmel: Das Paket ggplot2, das auf dem Buch The Grammar of Graphics von Leland Wilkinson basiert. Mit diesem Paket kannst Du ansprechende und maßgeschneiderte Grafiken erstellen, die Du wiederum auf Dashboards mit Hilfe von shiny für Andere zugänglich machen kannst.

Beide Programmiersprachen bieten die Möglichkeit, schöne Grafiken leicht zu erstellen. Trotzdem überzeugt das R Paket ggplot2 mit seiner Flexibilität und seinen visuellen Möglichkeiten.

Pluspunkte für Lesbarkeit

Python wurde nach dem Motto Readability counts konzipiert. Somit können auch Leute, die nicht mit der Programmiersprache vertraut sind, interpretieren was im Code gemacht wird.

Das ist in R Code eher nicht der Fall. Die Sprache ist weniger intuitiv aufgebaut als Python. Aufgrund der guten Lesbarkeit bietet Python daher einen leichteren Einstieg ins Programmieren.

Schnelligkeit in verschiedenen Observationsgrößen

Als nächstes vergleiche ich, wie lange es dauert in R und Python einen simulierten Datensatz zu erstellen. Für eine faire Gegenüberstellung sollten die Bedingungen möglichst gleich sein. Die Daten werden mit den Paketen Xy und XyPy in R und Python respektive simuliert. Für die Zeitmessung habe ich microbenchmark in R und timeit in Python benutzt. Um die Simulation schnellstmöglich zu generieren, wird der Prozess parallelisiert auf acht Kernen (R: parallel, Python: multiprocessing).

Für das Experiment wird ein Datensatz mit 100 Observationen und 50 Variablen 100 Mal simuliert. Die Zeit, die der Rechner benötigt, um die Simulation durchzuführen, wird für jede Simulation einzeln gemessen. Und das wird dann für 1.000, 10.000, 100.000 und 1.000.000 Observationen wiederholt.

Die R und Python Code Snippets sind unten abgebildet.

# R
# devtools::install_github("andrebleier/Xy")
# install.packages("parallel")
# install.packages("microbenchmark")

# Load packages
library(Xy)
library(microbenchmark)
library(parallel)

# Extract function definition from for loop
sim_this <- function(n_sim) {
  sim <- microbenchmark(Xy(n = n_sim,
                           numvars = c(50,0),
                           catvars = 0), 
                        times = 100, unit = "s")
  data.frame(n = n_sim, 
             mean = summary(sim)[, 4])
}

# Time measurement for different number of simulations
n_sim <- c(1e2, 1e3, 1e4, 1e5, 1e6)
sim_in_r <- data.frame(n = rep(0, length(n_sim)),
                       t = rep(0, length(n_sim)))
for(i in 1:length(n_sim)){
  out <- mclapply(n_sim[i],
                  FUN = sim_this,
                  mc.cores = 8)

  sim_in_r[i, 1] <- out[[1]][1]
  sim_in_r[i, 2] <- out[[1]][2]
}

# Python
# In terminal: pip install xypy
import multiprocessing as mp
import numpy as np
import timeit
from xypy import Xy

# Predefine function of interest
def sim_this(n_sim):
  return(timeit.timeit( lambda: Xy(n = int(n_sim),
      numvars = [50, 0],
      catvars = [0, 0],
      weights = [5, 10],
      stn = 4.0,
      cor = [0, 0.1],
      interactions = 1,
      noisevars = 5), number = 100))

# Paralleled computation 
pool = mp.Pool(processes = 8)
n_sim = np.array([1e2, 1e3, 1e4, 1e5, 1e6])
results = [pool.map(sim_this, n_sim)]

Die durchschnittliche Dauer, sortiert nach Datensatzgröße, wird für R und Python im unteren Plot dargestellt. Die X-Achse wird hier auf einer logarithmischen Skala mit Basis 10 dargestellt, um die Grafik übersichtlicher zu machen.

Während R bei einer Datensatzgröße von 100 und 1.000 Observationen etwas schneller ist, hängt Python R bald darauf deutlich ab.

r-python-speed-comparison

Für weitere Vergleiche kann ich die folgenden STATWORX Blogbeiträge empfehlen: pandas vs. data.table und pandas vs. data.table part 2, dabei wird der Fokus auf Datenmanipulation gelegt.

Der Standard bei Deep Learning

Wenn Dich vor allem Deep Learning Methoden interessieren, eignet sich Python als Sprache besser. Die meisten Deep Learning Bibliotheken wurden in Python geschrieben und implementiert.

Auch in R ist Deep Learning möglich, aber die R Deep Learning Community ist deutlich kleiner. Implementationen wie Keras und TensorFlow lassen sich zwar auch in R aufrufen, dies läuft dann aber über Pakete von Drittanbietern. Die Pakete bieten daher nicht die volle Flexibilität für die Nutzer, z.B. sind nicht alle TensorFlow Funktionen erhältlich. Zu dem kommt der Aspekt der Schnelligkeit. Deep Learning mit Python ist schneller als mit R.

Umfrage in der Community: Wie ticken die Anwender?

Als angehende Data Scientists ist Kaggle eine wichtige Plattform für Euch. Dort kann man an spannenden Machine Learning Wettkämpfen teilnehmen, selbst experimentieren und aus den Erfahrungen der Community lernen.

2018 hat Kaggle eine Machine Learning & Data Science Umfrage durchgeführt. Die Umfrage war zwei Wochen lang online und es gingen insgesamt 23.859 Antworten ein. Aus den Ergebnissen dieser Umfrage habe ich verschiedene Plots erstellt, aus denen sich einige interessante Schlüsse im Hinblick auf mein Blogthema ziehen lassen. Der Code zu den einzelnen Plots ist öffentlich zugänglich auf Github.

Exkurs: Python & R im Vergleich zu anderen Sprachen

Bevor wir uns auf R und Python stürzen, schauen wir uns an, wie die beiden im Vergleich zu anderen Programmiersprachen abschneiden. Jeder Umfragenteilnehmer gab an, welche Sprache er vorrangig benutzt. Im unteren Plot wurde nach Sprache aggregiert und das Ergebnis lautet: Die große Mehrzahl der Teilnehmer benutzt vor allem Python! Gefolgt von R auf dem zweiten Platz. In dieser Umfrage unterscheiden wir nicht zwischen den Arbeitsbereichen, weshalb Python – als General Purpose Programmiersprache – vermutlich so stark hervorsticht.

Languages

Die Gegenüberstellung R & Python

Im direkten Vergleich zwischen R und Python sieht man, dass sehr viele R-Nutzer auch Python benutzen. Wohingegen die Python-Nutzer oftmals ausschließlich mit Python arbeiten.

Venndiagram

Wenn man die Nutzung der Sprachen nach Arbeitsbereich vergleicht, sieht man eine klare Dominanz von Python. In allen Arbeitsfeldern, bis auf Statistiker, wird mehrheitlich Python benutzt.

Relative_shares

Die Teilnehmer wurden außerdem gefragt: Welche Sprache empfiehlst Du angehenden Data Scientists zuerst zu lernen? Die Antworten auf die Frage sind in der unteren Tabelle zusammengefasst.

Sprache Empfehlung Nutzer Differenz
Python 14.181 8.180 6.001
R 2.342 2.046 296
SQL 914 1.211 -297
C++ 339 739 -400
Matlab 256 355 -99
Java 184 903 -719
Scala 74 106 -32
Javascript 72 408 -336
SAS 69 228 -159
VBA 38 135 -97
Go 26 46 -20
Other 161 117 44

Wenn man die Anzahl Empfehlungen und die Anzahl Nutzer vergleicht, dann sieht man, dass R und Python die einzigen Sprachen sind, die eine positive Differenz aufweisen.

Auch bei dieser Frage liegt Python (14.181) wieder weit vor R (2.342).

Recommendation

Fazit

Eine Sache vorweg: beide Sprachen sind sehr mächtig. Daher kann man keine falsche Wahl treffen! Die Wahl der Sprache hängt davon ab, welche Projekte man verwirklichen möchte.

Als universelle Programmiersprache ist Python für diverse Anwendungsgebiete geeignet. Weshalb ich Dir grundsätzlich empfehle mit Python anzufangen. Falls aber statistische Auswertungen oder Datenvisualisierungen bei Deinen Projekten im Vordergrund stehen, hat R gegenüber Python einen Vorteil.

Wie schon erwähnt haben beide Sprachen ihre Vor- und Nachteile. Als fortgeschrittener Data Scientist solltest Du idealerweise beide Sprachen beherrschen.

Ich hoffe, dass Dir dieser Beitrag bei der Suche nach dem richtigen Einstieg in die Data Science Welt weiterhilft.

Happy Coding!

Falls Du Interesse an Schulungen hast, kannst du dir gerne unter AI Academy unsere Kurse durchschauen.

Referenzen

Fran Peric Fran Peric