Jörg Frochte möchte dem Leser einen umfassenden Überblick über maschinelles Lernen geben. Dies ist eine Herkules Aufgabe, angesichts der raschen Entwicklung und des stetigen Wachstums in diesem Bereich. Viele Bücher versuchen deshalb, sich auf bestimmte Werkzeuge oder Themen zu beschränken. Wie zum Beispiel auf Keras oder scikit-learn. Dem Autor ist es wichtig, dem Leser so viele Informationen wie möglich zu geben. Ihm gelingt es dadurch, dass er sehr kurze Einführungen und Beispiele liefert. Der Umgfang des Themas entwickelt sich jedoch so rasch, dass selbst ein über 600 Seiten starkes Buch es nicht schafft, alle Themen in voller Tiefe zu behandeln. Der Autor lässt den Leser aber nicht allein mit dem Problem, sondern gibt durch Internet-Links und Hinweise auf Bücher Empfehlungen, die dem Leser weiterhelfen. Angenehm fand ich es, dass er direkt in der Anleitung auf Beschränkungen hinweist und nicht vorgibt, sein Buch sei umfassend und vollkommen. Die Themen, die es nicht in sein Buch geschafft haben, benennt er und gibt Empfehlungen, mit welchen Themen sich der Leser nach der Lektüre des Buches beschäftigen sollte. Für die Einarbeitung in diese neusten Entwicklungen bietet dieses Buch eine solide Grundlage.
Als Programmiersprache verwendet er Python. Mir hat es sehr gefallen, dass er die Python-Distribution Anaconda und als IDE Spyder empfiehlt, um Neulingen eine schnelle Installation der notwendigen Umgebung zu ermöglichen. Mit Anaconda werden bereits alle notwendigen Pakete, wie zum Beipiel Matplotlib, installiert.
Andere Bücher setzen danach auf den von ihr genannten Umgebungen auf und der Lesefluss wird durch Screenshots gestört. In diesem Buch werden nur wichtige Teile des Programmcodes abgebildet und erklärt. Der gesamte Quellcode wird vom Autor bereit gestellt. Ich selber nutze Anaconda nicht, sondern meine eigene Installation und eine andere IDE. Den Beipielen konnte ich trotzdem sehr gut folgen.
Die didaktische Erfahrung des Autors macht sich im Aufbau des Buches angenehm bemerkbar. Alle Themen werden so einfach, wie möglich, besprochen und an Hand von Graphiken oder Beispielen veranschaulicht. Eine Einführung in Python beschränkt sich, auf das im weiteren Verlauf Notwendige. Pakete wie Pandas (Kapitel 9), werden nicht in dieser Einführung (Kapitel 3) besprochen, sondern erst, wenn sie thematisch benötigt werden. Man muss nicht im Buch vor- und zurückspringen. Der rote Faden und der Lesefluss bleiben erhalten. Dies gilt auch für die benötigte Mathematik. Es wird nur das Notwendige, so kurz und einfach wie möglich, besprochen. Möchte oder benötigt man eine umfangreichere Behandlung, dann folgt man der Buch Empfehlung im Literatur Anhang. Der Author benutzt Beispiel Daten, die mit den Tools (Entscheidungsbäume, Keras und so weiter) untersucht werden. Dabei werden die Ergebnisse der Tools verglichen und alle Vor- und Nachteile, benannt und veranschaulicht. Es werden Aufgaben gestellt, die zu einem tieferen Verständnis führen. Der Autor gibt dem Leser Empfehlungen aus seiner Erfahrung mit den Tools und aus der Praxis, die dem Leser beim eigenen Anwenden und experimentieren weiterhelfen.
Das Buch macht einen soliden Eindruck: mehr als 600 Seiten gesammeltes Wissen zu dem Thema maschinelles Lernen. Es ist zweifelsohne als Lehrbuch konzipiert und erfüllt diesen Zweck hervorragend. Das Thema maschinelles Lernen setzt einiges voraus: Mathematische Kenntnisse im Bereich lineare Algebra und Statistik sowie Erfahrungen in der Softwareentwicklung. Meiner Meinung nach werden sowohl Mathematiker als auch die Informatiker dieses Buch schätzen. In der Einführung wird der KDD-Prozess dargestellt und die Rolle des Maschinellen Lernens im KDD-Prozess. Es folgt eine Unterteilung des Maschinellen Lernens in Überwachtes Lernen, Unüberwachtes Lernen und Bestärkendes Lernen. Danach bekommt man eine Einführung in Python. Bevor ich das Buch gelesen habe, habe ich keine Berührungspunkte mit der Programmiersprache Python gehabt. Die Einführung im Kapitel 3 war für mich jedoch ausreichend, um die Beispiele im Buch nachvollziehen zu können. In weiteren Teilen des Buches werden unterschiedliche Verfahren für Überwachtes Lernen, Unüberwachtes Lernen und Bestärkendes Lernen vorgestellt. Ich würde das Buch sowohl zum Selbststudium, als auch als eine Begleitung im Studium, uneingeschränkt empfehlen.
Einführender Disclaimer: Das Buch wurde mir vom Verlag mit der Bitte um eine, diese Rezension gestellt.
Das Buch vermittelt einen fundierten Überblick über die verschiedenen Gebiete des maschinellen Lernens und bietet zahlreiche Beispiele, die auch auf einem handelsüblichen Laptop in akzeptabler Zeit ausgeführt werden können. Mir fehlten hier Hinweise auf die Namen der zugehörigen Dateien in dem zur Verfügung stehenden Paket der Code-Beispiele, welches ansonsten recht umfangreich ist und dem Leser alle benötigten Beispieldatensätze an die Hand gibt. Ebenfalls positiv: Die Beispiele hängen nicht übermäßig von Keras-APIs ab, sondern bauen stark auf den Grundlagen (Python mit NumPy, SciPy, Matplotlib) auf.
Entwickler bin ich ja und irgendwo ist auch noch das geforderte "Basiswissen der Hochschulmathematik" abrufbar, aber ich bin nicht erfahren in Python, somit waren die ersten Kapitel nicht optional. Hier hatte ich dann doch ein wenig zu kämpfen, weil die Sprache selbst zwar gut lesbar und die Darstellung im Buch verständlich ist, in diesem Teil des Buches wird aber auch gleich auf die später verwendeten Bibliotheken und die dort gängigen Idiome im Mix mit einem gar nicht so kleinen Quantum Mathematik hingearbeitet, hier wäre mir eine gemächlichere Vorgehensweise angenehmer gewesen.
Man darf allerdings nicht vergessen, dass das Buch Grundlagen vermitteln will und keine vertiefenden Themen abdeckt, der Umfang an Seiten würde sonst deutlich steigen. Auch deshalb hätte ich an einigen Stellen gerne mehr weiterführenden Literaturhinweise gesehen, doch insgesamt bin ich der Meinung, dass das Buch einen hervorragenden Einstieg in das Thema bietet und man es jedem empfehlen kann, der schnell selbst aktiv werden möchte, am besten mit dem Wissen der mathematischen Grundlagen, damit man sich auf
die Verfahren und deren Implementierung konzentrieren kann.
Das Buch gibt einen breiten und umfassenden Überblick über verschiedene wichtige Bereiche des Maschinellen Lernens. Die große Fachkompetenz des Autors ist in allen Kapiteln zu bemerken, sehr positiv fallen auch die vielen Hinweise auf weiterführende Literatur zu speziellen Themen und zu vertiefenden Darstellungen der mathematischen Grundlagen auf. Gleichwohl ist der Einstieg in das Buch ein wenig langatmig, insbesondere die Kapitel mit einer „Einführung“ in Python und NumPy sind meiner Meinung von einem eher überschaubaren Wert. Wer sich damit noch nicht auskennt, dem ist auch nach dem Lesen dieser Abschnitt nicht wirklich viel weitergeholfen, aber das weiß man erst hinterher. Daher vergeht eine gewisse Zeit, bis es dann endlich mit dem eigentlichen Thema losgeht. Für das detaillierte Nachvollziehen jeder Formel und jeder Zeile in den Listings ist daher auch ein gewisses Durchhaltevermögen erforderlich, insbesondere bei einem Einstieg als "Neuling" in das Thema. Kleine Ungenauigkeiten (z.B. erreicht man die auf Seite 96 genannten Werte für my und sigma nur mit einem random.seed(42) und nicht mit dem im Listing auf Seite 83 genannten Wert von 45; das Listing auf Seite 119 für den Plot der Histogramme ist unvollständig und lässt den Leser mit wenig Kenntnissen in matplotlib daher zunächst etwas ratlos zurück, etc.) sind bei dem Thema und Umfang Buches vermutlich nicht völlig zu vermeiden.
Der Verzicht auf die Einhaltung des Python Style Guides für den Quellcode erweist sich beim Durcharbeiten und Verstehen des Codes dann aber doch als wenig hilfreich, da die Verwendung von Groß- und Kleinschreibung recht beliebig erscheint. Auch sind Konventionen wie die Leerzeichen vor und nach (mathematischen) Operatoren nicht aus Selbstzweck heraus entstanden, sondern deren Einhaltung würde natürlich deutlich die Lesbarkeit des Codes erhöhen. Da das Buch im (Unter-) Titel Python als Programmiersprache ausdrücklich erwähnt wird, ist man als Leser hier in programmiertechnischer Sicht ein wenig enttäuscht, aber das hängt natürlich auch sehr vom persönlichen Background diesbezüglich ab.
Wenn man den bereits erwähnten Willen zum Durchhalten und die Motivation für Recherche auch über die in den einzelnen Kapiteln erläuterten Inhalte hinaus mitbringt, kann einem das Buch viele Grundlagen und erste Einblicke in Aspekte des Maschinellen Lernens vermitteln, die einigermaßen anschaulich anhand der Programmbeispiele nachvollzogen werden können.
Struktur und Stil
Der strukturelle Aufbau ist logisch und berücksichtigt die steigende Komplexität der angesprochenen Themen. Zu jedem Kapitel gibt es eine Einleitung. Visuelle Elemente, die den trockenen akademischen Stoff auflockern und lebendiger machen, sind leider selten vorhanden.
Der Leser bekommt den Inhalt in einem lockeren umgangssprachlichen Stil präsentiert, bedauerlicherweise mit Mängeln in Bezug auf die Lesbarkeit.
Stärken und Schwächen
- (+) Die eindrucksvolle Kompetenz des Autors in der Thematik
- (+) Die teilweise Nachvollziehbarkeit des Inhalts an Hand von Python-Code
- (+) Die umfangreichen Referenzen
- (-) Eine teilweise absolut schlechte Lesbarkeit durch:
- bis zu 20 und mehr DIN A4 Zeilen ohne Absatz, in der Einleitung und in weiteren Kapiteln
- (-) Python wird als »das Werkzeug« angepriesen, daher sollte auch ein sauberer Programmierstil (PEP8) als elementar wichtig angesehen werden
Persönliche Empfehlung
Wenn ich die Stärken und Schwächen abwäge, bleibt immer noch ein gutes Plus. Für die in dem Buch genannte Zielgruppe also eine positive Empfehlung. Wer das erforderliche Hochschulniveau (noch) nicht besitzt, sollte es sich überlegen, es gibt außerordentlich gute und verständliche YouTube-Videos für Einsteiger zum Thema »Maschinelles Lernen«.
Prof. Dr. Jörg Frochte lehrt und forscht seit 2010 an der Hochschule Bochum. Als Professor für Angewandte Informatik und Mathematik hält er hier Vorlesungen in Mathematik, Simulation&Modellbildung und maschinellem Lernen.
Prof. Dr. Jörg Frochte lehrt und forscht seit 2010 an der Hochschule Bochum. Als Professor für Angewandte Informatik und Mathematik hält er hier Vorlesungen in Mathematik, Simulation&Modellbildung und maschinellem Lernen.