Buchrezension: Hands-On Machine Learning with Scikit-Learn & TensorFlow

Cover: Hands-On Machine Learning with Scikit-Learn and TensorFlow

Aurélien Géron
Hands-On Machine Learning with Scikit-Learn and TensorFlow

O’Reilly Media
572 Seiten
ISBN 978-1491962299
Zum O`Reilly Media Shop
Deutsche Übersetzung beim O´Reilly Verlag

Maschinelles Lernen (ML) ist mit Sicherheit eines der populärsten Themen dieser Tage. Mein Interesse daran wurde bei der Devoxx UK 2017 geweckt, die – wenig überraschend – dieser Thematik sogar einen eigenen Track widmete. Ich lauschte gespannt einigen Vorträgen und nahm mir vor, mich näher mit der Materie auseinanderzusetzen. Einerseits, um die eigene Neugier zu befriedigen, wie damit Probleme angegangen werden können, für die es keine oder keine gangbare algorithmische Lösung gibt. Andererseits aber auch, um herauszufinden, inwiefern diese Techniken eventuell in eigenen Projekten sinnvoll eingesetzt werden können. Auch wenn online zahlreiche Quellen zu diesem Thema verfügbar sind, so mangelt es meist entweder an Tiefe oder an Breite. Ganz zu schweigen von einer konsistenten Notation und Betrachtungsweise von der Einführung bis hin zu fortgeschrittenen Techniken. Daher war schnell klar, dass für eine gezielte Auseinandersetzung ein Fachbuch sinnvoll ist. Nach kurzer Recherche fiel meine Wahl auf Hands-On Machine Learning with Scikit-Learn & TensorFlow, welches ich im Folgenden gerne vorstellen möchte.

Aufbau und Ansatz

Wie der Name bereits vermuten lässt, handelt es sich um ein Praxisbuch, wobei die praktischen Teile mit Python umgesetzt werden. Die Verwendung der empfohlenen jupyter-Notebooks (Eine Webanwendung für Dokumente mit Live-Code Integration.), welche es u. a. erlauben, Python-Code im Browser auszuführen und die Ergebnisse direkt zu rendern, hat sich als äußerst praktikabel erwiesen, da aus den verwendeten Bibliotheken Plots und andere grafische Darstellungen erzeugt werden können, die eine visuelle Datenanalyse direkt im Kontext des Quelltextes ermöglichen. Der Leser sollte allerdings Grundlagen in Python mitbringen, da hierauf nicht weiter eingegangen wird. Die passende Umgebung einzurichten, ist schnell erledigt und funktionierte problemlos wie im Buch beschrieben.

Neben Python werden grundlegende Kenntnisse in linearer Algebra sowie Analysis (hauptsächlich Differenzialrechnung) vorausgesetzt. Sie bilden die Grundlage der vorgestellten Algorithmen und Techniken und sind daher in Form von Gleichungen und Formeln im Buch fast allgegenwärtig. Vorwissen in Wahrscheinlichkeitsrechnung und Statistik ist sicher auch hilfreich.

Kapitel wie Unterabschnitte machen keine Trennung zwischen Theorie und Praxis. Stattdessen erwartet den Leser eine Mixtur aus Erklärungen, durchsetzt mit Python-Code, mathematischen Formeln sowie Grafiken und Abbildungen. Letztere sind im Buch schwarz-weiß, aber dennoch gut erkennbar und entstammen ohnehin oftmals dem vorgestellten Quelltext, sodass sie mit jupyter in Farbe erzeugt werden können. Ergänzt wird das Ganze noch durch praktische Anmerkungen, die je nach verwendeten Symbol Vorschläge, allgemeine Anmerkungen oder Warnungen zu spezifischen Sachverhalten aussprechen. Diese Mischung aus verschiedenen Informationen und die Verdrahtung von Theorie und Praxis funktioniert erstaunlich gut und die Erläuterungen sind nachvollziehbar. Dabei wird stets besonderes Augenmerk auf allgemeine ML-Vorgehensweisen gelegt. Abgeschlossen wird jedes Kapitel durch eine Menge theoretischer sowie praktischer Übungsaufgaben, deren Lösung im Anhang oder online zu finden sind.

Inhalt

Grob ist das Buch in zwei Teile gegliedert. Der erste Teil vermittelt die Grundlagen von ML und der zweite Teil fokussiert sich auf Künstliche Neuronale Netze (KNN) sowie Deep Learning. Zumindest Neueinsteiger sollten das Buch von vorne bis hinten lesen, da sich spätere Kapitel oft auf die vorherigen beziehen.

Der erste Teil beginnt mit einer Übersicht über die unterschiedlichen Disziplinen des MLs. Die Einteilung ist sinnvoll und hilft später dabei, konkrete Probleme einzuordnen und damit passende Lösungsstrategien auszuwählen.

Anschließend wird ein fiktives ML-Projekt umgesetzt, welches sich mit Regression, also der Vorhersage von Werten, beschäftigt. Der Fokus liegt auf der allgemeinen Vorgehensweise. Schnell wird klar, dass viel Arbeit auf die Analyse und Vorbereitung der Daten entfällt. Die diversen Algorithmen sind in diesem Fall bereits durch Scikit-Learn implementiert und werden mit den in Form gebrachten Daten einfach unterschiedlich parametrisiert verwendet. Den Abschluss der Betrachtung MLs aus der Vogelperspektive bildet ein kleines Beispielprojekt zur Klassifikation von handgeschriebenen Ziffern (Zuordnung Rasterbild zu Zahl).

Im weiteren Verlauf des ersten Teils lernt der Leser außerdem, was genau es bedeutet, Modelle zu trainieren (Stichwort: Lineare Regression, Polynomiale Regression, Gradient Descent, etc.) und wie hohe Dimensionalität – also die Abhängigkeit von zu vielen Merkmalsausprägungen –
reduziert werden kann. Außerdem werden die gängigsten Lernalgorithmen – Support Vector Machines, Entscheidungsbäume und Random Forests – jeweils in einem eigenen Kapitel detaillierter beleuchtet.

Im zweiten Teil geht es im Wesentlichen um KNN. Er beginnt mit einer gelungenen Einführung in selbige Thematik. Während im ersten Teil die Implementierungen der Lernalgorithmen durch SciKit-Learn zur Verfügung gestellt wurden, wird im zweiten Teil TensorFlow eingesetzt, um KNN zu erstellen und zu trainieren. Neben der Einrichtung wird auch eine allgemeine Einführung gegeben und ein komplettes Kapitel der Verteilung der Berechnungen auf CPUs, GPUs und Servern mit Hilfe von TensorFlow spendiert.

Die restlichen Kapitel widmen sich den verschiedenen Arten von KNN: Convolutional Neural Networks, Recurrent Neural Networks und Autoencoders werden im bewährten Stil mit allerhand Praxis erläutert. Abgeschlossen wird das Buch mit dem Thema Reinforcement Learning, welches KNN mit einem Belohnungs- bzw. Bestrafungssystem kombiniert. Diese Kombination verschiedener Techniken bildete beispielsweise die Grundlage von AlphaGo, welches 2016 den Großmeister Lee Sedol im Brettspiel Go bezwang und damit auch in der breiten Öffentlichkeit bekannt wurde.

Fazit

Das vorgestellte Buch bietet einerseits einen soliden Einstieg in das Thema ML, andererseits aber auch genug Tiefe und Hintergrundwissen, um sich eigenständig mit neuen Entwicklungen auseinandersetzen zu können. Obwohl es aufgrund der Popularität zahlreiche Quellen gibt, liegt der Vorteil des Buches in der konsistenten Betrachtung von den Grundlagen bis hin zu fortgeschrittenen Techniken. Vor allem die Verknüpfung von Praxis und Theorie funktioniert hier hervorragend und es macht einfach Spaß, sich durch die Kapitel zu arbeiten. Insbesondere die Verwendung der jupyter-Notebooks zahlt sich aus, zumal diese auch im zum Buch gehörenden Github-Repository abrufbar sind und weiterhin gepflegt werden. Hinzu kommen viele hilfreiche Praxistipps, um Probleme, auf die man zwangsläufig stößt, einordnen und lösen zu können. Aber um es klar zu sagen: es handelt sich um ein Arbeitsbuch, welches nicht eben mal schnell nebenher gelesen werden kann. Die Informationsdichte auf fast 500 Seiten (ohne Anhang) ist enorm und die Materie nicht immer leichte Kost. Oder um das Buch an mancher Stellen zu paraphrasieren, es ist nicht immer ein Spaziergang im Park. Dennoch schafft es Hands-On Machine Learning zu motivieren und komplizierte Sachverhalte eingehend zu erklären. Daher kann es jedem empfohlen werden, der sich näher mit dem Thema ML und KNN auseinandersetzen möchte.

Zum Autor

Peter Süttner ist Senior Consultant bei der buschmais GbR. Seine fachlichen Schwerpunkte liegen in der Konzeption und der Entwicklung von Java-Enterprise- und Java-Standard-Anwendungen sowie in der Persistenz.

Kommentare sind abgeschaltet.