[Hinweis: Hier kannst du das Machine Learning Modell mit unserem interaktiven Jupyter Notebook selbst trainieren. Keine Programmiererfahrung notwendig.]
Wenn es dir ähnlich geht wie mir, begreifst du ein Thema erst dann am besten, wenn du damit selbst herumexperimentieren kannst. Deshalb haben wir hier anhand eines simplen Beispiels eine einfache Erklärung geschrieben, wie Machine Learning funktioniert.
Du wirst dein eigenes Machine Learning Modell entwickeln, um die Überlebenswahrscheinlichkeit von Passagieren auf der Titanic vorherzusagen. Das Modell wird dabei eigenständig lernen gut Prognosen zu machen, indem es Muster in Beispieldaten findet.
Wie aus Daten ein Machine Learning Modell wird
In unserer Anleitung gehen wir durch folgende Schritte:
- Daten laden und genauer verstehen (anhand von Tabellen & Visualisierungen);
- Daten aufbereiten um damit sie im passenden Format für unseren Machine Learning Algorithmus sind;
- Modell trainieren - unser Algorithmus lernt aus den Daten;
- Modell evaluieren – Wir finden heraus, wie gut unser Modell auf neuen Daten performt;
- Modell optimieren - wir testen, mit wie vielen Daten wir trainieren sollten um ein gutes Ergebnis zu bekommen.
Um das Machine Learning Modell Schritt-für-Schritt selbst zu trainieren, öffne das begleitende Jupyter Notebook. Mit dem Notebook kannst du ganz einfach und ohne irgendein Setup oder Vorkenntnisse selbst Machine Learning Code ausführen – den Code haben wir bereits dort hinterlegt.
Machine Learning Tools
Die Auswahl an Machine Learning Tools ist groß. In diesem Guide nutzen wir ein paar der am weitesten verbreiteten und leistungsstärksten Machine Learning Bibliotheken, und zwar:
- Python: eine high-level Programmiersprache, besonders bekannt für ihre einfache Lesbarkeit. Die weltweit am häufigsten eingesetzte Programmiersprache für Machine Learning.
- Pandas: eine Python-Bibliothek, die Spreadsheet-ähnliche Funktionen in Python ermöglicht.
- Seaborn: Eine Bibliothek zum Erstellen von Diagrammen und anderen Grafiken.
- Scikit learn: Eine Machine Learning-Bibliothek für Python, die einfache Werkzeuge fürs Training und Evaluieren verschiedener Algorithmen bereitstellt.
- DRLearn: Unser eigenes Data Revenue Codemodul, das für diesen Datensatz erstellt wurde und ein paar Operationen vereinfacht.
Diese Tools werden sowohl von Einsteigern als auch von großen Unternehmen (wie J.P. Morgan) eingesetzt und sind ein sehr guter Startpunkt.
1.1 Daten laden
Wir werden mit dem berühmten "Titanic"-Datensatz arbeiten - ein etwas morbider, aber faszinierender Datensatz mit Angaben zu den Passagieren der Titanic. Uns stehen eine Menge Daten von jedem Passagier zur Verfügung, unter anderem:
- Name,
- Geschlecht,
- Alter,
- Ticket Kategorie, und
- Ob dieser Passagier das Unglück überlebt hat oder nicht
Unsere Daten sind standardmäßig in Zeilen und Spalten angeordnet, wo jede Zeile einen Passagier und jede Spalte ein Merkmal dieses Passagiers darstellt. Hier ein Beispiel:
1.2 Daten visualisieren
Machine Learning Modelle sind zwar intelligent, können aber auch nur so intelligent sein wie die Daten, mit denen sie gefüttert werden. Um die Daten richtig aufzubereiten müssen wir unseren Datensatz erst einmal gut verstehen.
Ein guter Ausgangspunkt für die Analyse der Daten ist die Überprüfung einer Hypothese.
Z.B: Menschen mit Tickets erster Klasse hatten wahrscheinlich eine höhere Überlebenswahrscheinlichkeit. Wir können prüfen, ob unsere Daten das bestätigen.
Den Code zur Erstellung dieser Visualisierung kannst du im begleitenden Notebook finden und selber ausführen.
Mehr als 60% der Passagiere mit einem ersten Klasse Ticket haben überlebt, in der dritten Klasse waren es jedoch weniger als 30%. Unsere Annahme scheint eindeutig richtig zu sein.
Vielleicht kennen Sie die Maxime "Frauen und Kinder zuerst" - schlägt sich das in der Überlebenschance nieder? Betrachten wir einmal, wie das Geschlecht und die Überlebensrate zusammenhängen.
Auch hier zeigt sich, dass unsere Hypothese stimmt. Über 70% der Frauen, jedoch nur etwa 20% der Männer überlebten.
Und schon haben wir zwei einfache Visualisierungen unseres Datensatzes erstellt. An dieser Stelle könnte man noch weitaus mehr machen (v.a. bei Machine Learning Modellen aus denen wir später ein lauffähige Lösunge bauen möchten). Zum Beispiel könnte man mit einer multivariaten Analyse untersuchen, was passiert, wenn mehrere Variablen gleichzeitig berücksichtigt werden. – Aber dafür haben wir ja Machine Learning: Um alle Zusammenhänge zu finden und richtig anzuwenden.
2. Unsere Daten aufbereiten
Bevor wir unsere Daten in einen Machine Learning Algorithmus einspeisen, um unser Modell zu trainieren, müssen wir sie für den Algorithmus verständlicher aufbereiten. Dazu werden einige Spalten ausgeblendet und andere neu formatiert.
Überflüssige Spalten entfernen
Wir wissen, dass ein Zusammenhang zwischen der Ticketnummer eines Passagiers und seiner Überlebenschance sehr unwahrscheinlich ist, deswegen können wir diese Spalte ignorieren. Bevor wir dem Algorithmus unsere Daten geben, löschen wir die Ticketnummer also aus dem Datensatz.
Daten neu formatieren
Einige Merkmale sind zwar an sich hilfreich, aber nicht in der Form in der sie aktuelle in unserem Datensatz sind. Zum Beispiel sind die Bezeichnungen "männlich" und "weiblich" für einen Menschen aussagekräftig, eine Maschine bevorzugt jedoch Zahlen. Daher kodieren wir diese Kennzeichnungen stattdessen als "0" bzw. "1".
Ähnlich arbeiten wir die andere Spalten auf. Nun ist das Format für Maschinen wesentlich einfacher zu “interpretieren”. Im Beispiel unten sieht man, dass wir viele überflüssige Spalten eliminiert haben und die übrigen Spalten nun nur noch Zahlen enthalten.
2.1 Wir teilen unseren Datensatz in zwei Hälften
Nun wollen wir unser Modell trainieren und dann anschließend testen wie gut es ist. Das Prinzip funktioniert ähnlich wie bei Schulkindern, die zur Prüfungsvorbereitung Beispielaufgaben erhalten, und dann bei der eigentlichen Prüfung neue Fragen beantworten müssen: Wir trainieren unser Modell anhand einem Teil der Daten und testen dann, wie gut er für den Rest der Daten funktioniert (das ist dann der zweite Teil der Daten die wir unserem Modell erst einmal enthalten haben).
2.2. Wir trainieren unser Modell!
Und nun zum spannenden Teil! Wir geben die Trainingsdaten unserem Algorithmus und er findet in den Daten die richtigen Mustern. In diesem Schritt liefern wir dem Algorithmus sowohl die Daten als auch die entsprechenden Antworten (ob der Passagier überlebt hat oder nicht).
Das Modell lernt aus diesen Daten dann bestimmte Muster.
3. Wir testen unser Modell
Jetzt testen wir unser Modell, indem wir ihm die zweite Hälfte des Datensatzes geben, aber diesmal nur mit den Angaben zu den Passagiere, ohne die Information ob der Passagier überlebt hat oder nicht. Der Algorithmus weiß also nicht was die richtige Antwort für den jeweiligen Passagier ist, wird aber anhand dessen, was er aus dem Trainingsset gelernt hat, aus den Daten über den Passagier eine Prognose machen.
4. Wir analysieren unser Modell
Um besser nachvollziehen zu können, wie unser Modell funktioniert, können wir:
- Überprüfen, auf welche Datenpunkte sich das Modell bei Vorhersagen stützt; und
- Testen, wie sich die Genauigkeit verändert, wenn wir weniger Daten einsetzen.
Ersteres hilft uns, unsere Daten besser zu verstehen. Das Zweite gibt uns eine Einschätzung dafür, wie sinnvoll es ist, einen größeren Datensatz zu sammeln um die Genauigkeit des Modells zu verbessern.
4.1 Nachvollziehen, wie unser Modell zu den Prognosen kommt
Nicht alle Daten sind gleich interessant für unser Modell. Im Training hat der Algorithmus Muster gelernt und bestimmte Informationen über die Passagiere unterschiedlich gewichtet. Wir können uns diese Gewichtungen ansehen und damit besser verstehen welche Faktoren für die Überlebenschance entscheidend sind.
In der Grafik unten sind diese Gewichtungen für unser Modell. Wir sehen, dass das Geschlecht für die Vorhersage der Überlebensrate der mit Abstand wichtigste Faktor ist.
Open sehen wir die Wichtigkeit eines Merkmals allgemein über den gesamten Datensatz.
Wir können auch herausfinden, mit welchen Faktoren das Modell bei einem bestimmten Passagier die Überlebenswahrscheinlichkeit wie errechnet hat.
Weiter unten sehen wir einen Passagier, bei dem das Modell davon ausgeht, dass er mit hoher Wahrscheinlichkeit überlebt. Ausschlaggebend für diese Prognose war, dass:
- Der Passagier nicht in der dritten Klasse reiste (also entweder ein erste oder zweite Klasse Ticket hatte);
- Der Passagier weiblich war.
Die Überlebenswahrscheinlichkeit wurde etwas dadurch gesenkt, dass der Passagier nicht in der ersten sondern in der zweiten Klasse war. Insgesamt kam die Überlebensprognose damit dann auf 93%. Alle anderen Faktoren hatten ein deutlich kleineres Gewicht und tauchen nicht in der Übersicht auf.
4.2 Der Einfluss der Datenmenge auf unser Modell
Wir können unser Modell mehrmals trainieren (mit jeweils mehr Beispiel-Passagieren) und dabei beobachten, wie sehr es sich durch zusätzliche Daten verbessert. Hier plotten wir sowohl die Genauigkeit auf den Trainings- als auch den Testerdaten. Das Ergebnise auf den Testdaten ist weitaus interessanter, da diese Performance uns zeigt wie gut das Modell bei ungesehenen Daten abschneidet.
Das Trainingsergebnis kann man sich wie einen "open-book"-Test vorstellen: Das Modell kennt die Antworten bereits, sodass es verglichen mit dem Testergebnis besser abzuschneiden scheint. Für das Modell ist es aber natürlich viel einfacher für Daten, die es bereits kennt, richtige Vorhersagen zu machen.
Hier wird deutlich: Je mehr Daten dem Modell zur Verfügung stehen, desto präziser wird es. Vor allem am Anfang ist das sehr auffällig, später bringen zusätzliche Daten nur noch wenig Verbesserungen.
Indem wir unsere Modelle auf diese - und andere - Arten analysieren, finden wir heraus, wie sie funktionieren und wie wir sie verbessern können. Machine Learning Modelle müssen keine "Black-Box"-Algorithmen sein.
Fazit
Und das war's schon - du hast dein eigenes Machine Learning Modell trainiert. Wir hoffen diese Einführung hilft dir dabei:
- Das Alltagsgeschäft von Data Science Teams zu verstehen;
- Mit Data Science oder Machine Learning Teams besser zu kommunizieren;
- Besser einzuschätzen, für welche Arten von Problemen Machine Learning gut geeignet ist;
- Zu verstehen, dass Machine Learning gar nicht so kompliziert sein muss.
Der komplexe Teil von Machine Learning Lösungen besteht darin, alle Einzelheiten zu einer maßgeschneiderten und verlässlichen Lösung zusammenzufügen. Und genau das ist unser Spezialgebiet. Wenn du bei den nächsten Schritten Richtung einer Machine Learning Lösung noch Hilfe benötigst, meld dich bei uns.