Suchen und Finden
Mehr zum Inhalt
Machine Learning mit Python und Keras, TensorFlow 2 und Scikit-learn - Das umfassende Praxis-Handbuch für Data Science, Deep Learning und Predictive Analytics
Cover
1
Unbenannt
5
Impressum
6
Inhaltsverzeichnis
7
Über die Autoren
19
Über die Korrektoren
21
Über den Fachkorrektor der deutschen Ausgabe
22
Einleitung
23
Kapitel 1: Wie Computer aus Daten lernen können
31
1.1 Intelligente Maschinen, die Daten in Wissen verwandeln
31
1.2 Die drei Arten des Machine Learnings
32
1.2.1 Mit überwachtem Lernen Vorhersagen treffen
33
1.2.2 Interaktive Aufgaben durch Reinforcement Learning lösen
36
1.2.3 Durch unüberwachtes Lernen verborgene Strukturen erkennen
37
1.3 Grundlegende Terminologie und Notation
38
1.3.1 Im Buch verwendete Notation und Konventionen
39
1.3.2 Terminologie
40
1.4 Entwicklung eines Systems für das Machine Learning
41
1.4.1 Vorverarbeitung: Daten in Form bringen
42
1.4.2 Trainieren und Auswählen eines Vorhersagemodells
42
1.4.3 Bewertung von Modellen und Vorhersage anhand unbekannter Dateninstanzen
43
1.5 Machine Learning mit Python
44
1.5.1 Python und Python-Pakete installieren
44
1.5.2 Verwendung der Python-Distribution Anaconda
45
1.5.3 Pakete für wissenschaftliches Rechnen, Data Science und Machine Learning
45
1.6 Zusammenfassung
46
Kapitel 2: Lernalgorithmen für die Klassifikation trainieren
47
2.1 Künstliche Neuronen: Ein kurzer Blick auf die Anfänge des Machine Learnings
47
2.1.1 Formale Definition eines künstlichen Neurons
48
2.1.2 Die Perzeptron-Lernregel
50
2.2 Implementierung eines Perzeptron-Lernalgorithmus in Python
53
2.2.1 Eine objektorientierte Perzeptron-API
53
2.2.2 Trainieren eines Perzeptron-Modells mit der Iris-Datensammlung
57
2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens
63
2.3.1 Straffunktionen mit dem Gradientenabstiegsverfahren minimieren
64
2.3.2 Implementierung eines adaptiven linearen Neurons in Python
66
2.3.3 Verbesserung des Gradientenabstiegsverfahrens durch Merkmalstandardisierung
71
2.3.4 Large Scale Machine Learning und stochastisches Gradientenabstiegsverfahren
73
2.4 Zusammenfassung
79
Kapitel 3: Machine-Learning-Klassifikatoren mit scikit-learn verwenden
81
3.1 Auswahl eines Klassifikationsalgorithmus
81
3.2 Erste Schritte mit scikit-learn: Trainieren eines Perzeptrons
82
3.3 Klassenwahrscheinlichkeiten durch logistische Regression modellieren
88
3.3.1 Logistische Regression und bedingte Wahrscheinlichkeiten
89
3.3.2 Gewichte der logistischen Straffunktion ermitteln
93
3.3.3 Konvertieren einer Adaline-Implementierung in einen Algorithmus für eine logistische Regression
95
3.3.4 Trainieren eines logistischen Regressionsmodells mit scikit-learn
100
3.3.5 Überanpassung durch Regularisierung verhindern
103
3.4 Maximum-Margin-Klassifikation mit Support Vector Machines
106
3.4.1 Maximierung des Randbereichs
107
3.4.2 Handhabung des nicht linear trennbaren Falls mit Schlupfvariablen
108
3.4.3 Alternative Implementierungen in scikit-learn
110
3.5 Nichtlineare Aufgaben mit einer Kernel-SVM lösen
111
3.5.1 Kernel-Methoden für linear nicht trennbare Daten
111
3.5.2 Mit dem Kernel-Trick Hyperebenen in höherdimensionalen Räumen finden
113
3.6 Lernen mit Entscheidungsbäumen
117
3.6.1 Maximierung des Informationsgewinns: Daten ausreizen
118
3.6.2 Konstruktion eines Entscheidungsbaums
122
3.6.3 Mehrere Entscheidungsbäume zu einem Random Forest kombinieren
126
3.7 k-Nearest-Neighbors: Ein Lazy-Learning-Algorithmus
129
3.8 Zusammenfassung
132
Kapitel 4: Gut geeignete Trainingsdatenmengen: Datenvorverarbeitung
135
4.1 Umgang mit fehlenden Daten
135
4.1.1 Fehlende Werte in Tabellendaten
136
4.1.2 Instanzen oder Merkmale mit fehlenden Daten entfernen
137
4.1.3 Fehlende Werte ergänzen
138
4.1.4 Die Schätzer-API von scikit-learn
139
4.2 Handhabung kategorialer Daten
140
4.2.1 Codierung kategorialer Daten mit pandas
141
4.2.2 Zuweisung von ordinalen Merkmalen
141
4.2.3 Codierung der Klassenbezeichnungen
142
4.2.4 One-hot-Codierung der nominalen Merkmale
143
4.3 Aufteilung einer Datensammlung in Trainings- und Testdaten
147
4.4 Anpassung der Merkmale
150
4.5 Auswahl aussagekräftiger Merkmale
152
4.5.1 L1- und L2-Regularisierung als Straffunktionen
153
4.5.2 Geometrische Interpretation der L2-Regularisierung
153
4.5.3 Dünn besetzte Lösungen mit L1-Regularisierung
155
4.5.4 Algorithmen zur sequenziellen Auswahl von Merkmalen
159
4.6 Beurteilung der Bedeutung von Merkmalen mit Random Forests
166
4.7 Zusammenfassung
169
Kapitel 5: Datenkomprimierung durch Dimensionsreduktion
171
5.1 Unüberwachte Dimensionsreduktion durch Hauptkomponentenanalyse
171
5.1.1 Schritte bei der Hauptkomponentenanalyse
172
5.1.2 Schrittweise Extraktion der Hauptkomponenten
173
5.1.3 Totale Varianz und erklärte Varianz
176
5.1.4 Merkmalstransformation
178
5.1.5 Hauptkomponentenanalyse mit scikit-learn
181
5.2 Überwachte Datenkomprimierung durch lineare Diskriminanzanalyse
185
5.2.1 Hauptkomponentenanalyse kontra lineare Diskriminanzanalyse
185
5.2.2 Die interne Funktionsweise der linearen Diskriminanzanalyse
186
5.2.3 Berechnung der Streumatrizen
187
5.2.4 Auswahl linearer Diskriminanten für den neuen Merkmalsunterraum
189
5.2.5 Projektion in den neuen Merkmalsraum
192
5.2.6 LDA mit scikit-learn
193
5.3 Kernel-Hauptkomponentenanalyse für nichtlineare Zuordnungen verwenden
195
5.3.1 Kernel-Funktionen und der Kernel-Trick
196
5.3.2 Implementierung einer Kernel-Hauptkomponentenanalyse in Python
200
5.3.3 Projizieren neuer Datenpunkte
208
5.3.4 Kernel-Hauptkomponentenanalyse mit scikit-learn
212
5.4 Zusammenfassung
213
Kapitel 6: Bewährte Verfahren zur Modellbewertung und Hyperparameter-Optimierung
215
6.1 Arbeitsabläufe mit Pipelines optimieren
215
6.1.1 Die Wisconsin-Brustkrebs-Datensammlung
215
6.1.2 Transformer und Schätzer in einer Pipeline kombinieren
217
6.2 Beurteilung des Modells durch k-fache Kreuzvalidierung
219
6.2.1 Holdout-Methode
220
6.2.2 k-fache Kreuzvalidierung
221
6.3 Algorithmen mit Lern- und Validierungskurven debuggen
225
6.3.1 Probleme mit Bias und Varianz anhand von Lernkurven erkennen
226
6.3.2 Überanpassung und Unteranpassung anhand von Validierungskurven erkennen
229
6.4 Feinabstimmung eines Lernmodells durch Grid Search
231
6.4.1 Optimierung der Hyperparameter durch Grid Search
232
6.4.2 Algorithmenauswahl durch verschachtelte Kreuzvalidierung
234
6.5 Verschiedene Kriterien zur Leistungsbewertung
236
6.5.1 Interpretation einer Verwechslungsmatrix
236
6.5.2 Optimierung der Genauigkeit und der Trefferquote eines Klassifikationsmodells
238
6.5.3 Receiver-Operating-Characteristic-Diagramme
240
6.5.4 Bewertungskriterien für Mehrklassen-Klassifikationen
243
6.6 Handhabung unausgewogener Klassenverteilung
244
6.7 Zusammenfassung
247
Kapitel 7: Kombination verschiedener Modelle für das Ensemble Learning
249
7.1 Ensemble Learning
249
7.2 Klassifikatoren durch Mehrheitsentscheidung kombinieren
253
7.2.1 Implementierung eines einfachen Mehrheitsentscheidungs- Klassifikators
253
7.2.2 Vorhersagen nach dem Mehrheitsentscheidungsprinzip treffen
260
7.3 Bewertung und Abstimmung des Klassifikator-Ensembles
263
7.4 Bagging: Klassifikator-Ensembles anhand von Bootstrap-Stichproben entwickeln
270
7.4.1 Bagging kurz zusammengefasst
271
7.4.2 Klassifikation der Wein-Datensammlung durch Bagging
272
7.5 Schwache Klassifikatoren durch adaptives Boosting verbessern
276
7.5.1 Funktionsweise des Boostings
276
7.5.2 AdaBoost mit scikit-learn anwenden
280
7.6 Zusammenfassung
284
Kapitel 8: Machine Learning zur Analyse von Stimmungslagen nutzen
285
8.1 Die IMDb-Filmdatenbank
285
8.1.1 Herunterladen der Datensammlung
286
8.1.2 Vorverarbeiten der Filmbewertungsdaten
286
8.2 Das Bag-of-words-Modell
288
8.2.1 Wörter in Merkmalsvektoren umwandeln
289
8.2.2 Beurteilung der Wortrelevanz durch das Tf-idf-Maß
291
8.2.3 Textdaten bereinigen
293
8.2.4 Dokumente in Tokens zerlegen
295
8.3 Ein logistisches Regressionsmodell für die Dokumentklassifikation trainieren
297
8.4 Verarbeitung großer Datenmengen: Online-Algorithmen und Out-of-Core Learning
300
8.5 Topic Modeling mit latenter Dirichlet-Allokation
304
8.5.1 Aufteilung von Texten mit der LDA
305
8.5.2 LDA mit scikit-learn
305
8.6 Zusammenfassung
309
Kapitel 9: Einbettung eines Machine-Learning- Modells in eine Webanwendung
311
9.1 Serialisierung angepasster Schätzer mit scikit-learn
311
9.2 Einrichtung einer SQLite-Datenbank zum Speichern von Daten
315
9.3 Entwicklung einer Webanwendung mit Flask
317
9.3.1 Die erste Webanwendung mit Flask
318
9.3.2 Formularvalidierung und -ausgabe
320
9.4 Der Filmbewertungsklassifikator als Webanwendung
326
9.4.1 Dateien und Ordner – die Verzeichnisstruktur
328
9.4.2 Implementierung der Hauptanwendung app.py
328
9.4.3 Einrichtung des Bewertungsformulars
331
9.4.4 Eine Vorlage für die Ergebnisseite erstellen
332
9.5 Einrichtung der Webanwendung auf einem öffentlich zugänglichen Webserver
335
9.5.1 Erstellen eines Benutzerkontos bei PythonAnywhere
335
9.5.2 Hochladen der Filmbewertungsanwendung
336
9.5.3 Updaten des Filmbewertungsklassifikators
337
9.6 Zusammenfassung
340
Kapitel 10: Vorhersage stetiger Zielvariablen durch Regressionsanalyse
341
10.1 Lineare Regression
341
10.1.1 Ein einfaches lineares Regressionsmodell
342
10.1.2 Multiple lineare Regression
343
10.2 Die Boston-Housing-Datensammlung
344
10.2.1 Einlesen der Datenmenge in einen DataFrame
344
10.2.2 Visualisierung der wichtigen Eigenschaften einer Datenmenge
346
10.2.3 Zusammenhänge anhand der Korrelationsmatrix erkennen
348
10.3 Implementierung eines linearen Regressionsmodells mit der Methode der kleinsten Quadrate
350
10.3.1 Berechnung der Regressionsparameter mit dem Gradientenabstiegsverfahren
351
10.3.2 Schätzung der Koeffizienten eines Regressionsmodells mit scikit-learn
355
10.4 Anpassung eines robusten Regressionsmodells mit dem RANSAC-Algorithmus
357
10.5 Bewertung der Leistung linearer Regressionsmodelle
360
10.6 Regularisierungsverfahren für die Regression einsetzen
363
10.7 Polynomiale Regression: Umwandeln einer linearen Regression in eine Kurve
365
10.7.1 Hinzufügen polynomialer Terme mit scikit-learn
366
10.7.2 Modellierung nichtlinearer Zusammenhänge in der Boston-Housing-Datensammlung
368
10.8 Handhabung nichtlinearer Beziehungen mit Random Forests
371
10.8.1 Entscheidungsbaum-Regression
372
10.8.2 Random-Forest-Regression
373
10.9 Zusammenfassung
377
Kapitel 11: Verwendung von Daten ohne Label: Clusteranalyse
379
11.1 Gruppierung von Objekten nach Ähnlichkeit mit dem k-Means-Algorithmus
379
11.1.1 k-Means-Clustering mit scikit-learn
380
11.1.2 Der k-Means++-Algorithmus
385
11.1.3 »Crisp« und »soft« Clustering
386
11.1.4 Die optimale Anzahl der Cluster mit dem Ellenbogenkriterium ermitteln
388
11.1.5 Quantifizierung der Clustering-Güte mit Silhouettendiagrammen
390
11.2 Cluster als hierarchischen Baum organisieren
395
11.2.1 Gruppierung von Clustern
395
11.2.2 Hierarchisches Clustering mittels einer Distanzmatrix
397
11.2.3 Dendrogramme und Heatmaps verknüpfen
401
11.2.4 Agglomeratives Clustering mit scikit-learn
403
11.3 Bereiche hoher Dichte mit DBSCAN ermitteln
404
11.4 Zusammenfassung
409
Kapitel 12: Implementierung eines künstlichen neuronalen Netzes
411
12.1 Modellierung komplexer Funktionen mit künstlichen neuronalen Netzen
411
12.1.1 Einschichtige neuronale Netze
413
12.1.2 Mehrschichtige neuronale Netzarchitektur
415
12.1.3 Aktivierung eines neuronalen Netzes durch Vorwärtspropagation
418
12.2 Klassifikation handgeschriebener Ziffern
420
12.2.1 Die MNIST-Datensammlung
421
12.2.2 Implementierung eines mehrschichtigen Perzeptrons
428
12.3 Trainieren eines künstlichen neuronalen Netzes
440
12.3.1 Berechnung der logistischen Straffunktion
441
12.3.2 Ein Gespür für die Backpropagation entwickeln
443
12.3.3 Trainieren neuronaler Netze durch Backpropagation
445
12.4 Konvergenz in neuronalen Netzen
449
12.5 Abschließende Bemerkungen zur Implementierung neuronaler Netze
450
12.6 Zusammenfassung
450
Kapitel 13: Parallelisierung des Trainings neuronaler Netze mit TensorFlow
453
13.1 TensorFlow und Trainingsleistung
453
13.1.1 Herausforderungen
453
13.1.2 Was genau ist TensorFlow?
455
13.1.3 TensorFlow erlernen
456
13.2 Erste Schritte mit TensorFlow
457
13.2.1 TensorFlow installieren
457
13.2.2 Tensoren in TensorFlow erstellen
458
13.2.3 Datentyp und Format eines Tensors ändern
459
13.2.4 Anwendung mathematischer Operationen auf Tensoren
460
13.2.5 Tensoren aufteilen, stapeln und verknüpfen
462
13.3 Eingabe-Pipelines mit tf.data erstellen – die Dataset-API von TensorFlow
464
13.3.1 Ein TensorFlow-Dataset anhand vorhandener Tensoren erstellen
464
13.3.2 Zwei Tensoren zu einer Datenmenge vereinen
465
13.3.3 Durchmischen, Batch erstellen und wiederholen
467
13.3.4 Erstellen einer Datenmenge anhand lokal gespeicherter Dateien
470
13.3.5 Zugriff auf die Datenmengen der tensorflow_datasets-Bibliothek
474
13.4 Entwicklung eines NN-Modells mit TensorFlow
480
13.4.1 Die Keras-API (tf.keras) von TensorFlow
480
13.4.2 Entwicklung eines linearen Regressionsmodells
481
13.4.3 Trainieren des Modells mit den Methoden .compile() und .fit()
486
13.4.4 Entwicklung eines mehrschichtigen Perzeptrons zur Klassifikation der Iris-Datensammlung
487
13.4.5 Bewertung des trainierten Modells mit der Testdatenmenge
492
13.4.6 Das trainierte Modell speichern und einlesen
492
13.5 Auswahl der Aktivierungsfunktionen mehrschichtiger neuronaler Netze
493
13.5.1 Die logistische Funktion kurz zusammengefasst
494
13.5.2 Wahrscheinlichkeiten bei der Mehrklassen-Klassifikation mit der softmax-Funktion schätzen
496
13.5.3 Verbreiterung des Ausgabespektrums mittels Tangens hyperbolicus
497
13.5.4 Aktivierung mittels ReLU
500
13.6 Zusammenfassung
501
Kapitel 14: Die Funktionsweise von TensorFlow im Detail
503
14.1 Grundlegende Merkmale von TensorFlow
504
14.2 TensorFlows Berechnungsgraphen: Migration nach TensorFlow v2
505
14.2.1 Funktionsweise von Berechnungsgraphen
505
14.2.2 Erstellen eines Graphen in TensorFlow v1.x
506
14.2.3 Migration eines Graphen nach TensorFlow v2
507
14.2.4 Eingabedaten einlesen mit TensorFlow v1.x
508
14.2.5 Eingabedaten einlesen mit TensorFlow v2
508
14.2.6 Beschleunigung von Berechnungen mit Funktionsdekoratoren
509
14.3 TensorFlows Variablenobjekte zum Speichern und Aktualisieren von Modellparametern
511
14.4 Gradientenberechnung durch automatisches Differenzieren und GradientTape
516
14.4.1 Berechnung der Gradienten der Verlustfunktion bezüglich trainierbarer Variablen
516
14.4.2 Berechnung der Gradienten bezüglich nicht trainierbarer Tensoren
518
14.4.3 Ressourcen für mehrfache Gradientenberechnung erhalten
518
14.5 Vereinfachung der Implementierung gebräuchlicher Architekturen mit der Keras-API
519
14.5.1 Lösen einer XOR-Klassifikationsaufgabe
523
14.5.2 Flexiblere Modellerstellung mit Keras’ funktionaler API
528
14.5.3 Modelle mit Keras’ »Model«-Klasse implementieren
530
14.5.4 Benutzerdefinierte Keras-Schichten
531
14.6 TensorFlows Schätzer
535
14.6.1 Merkmalsspalten
536
14.6.2 Machine Learning mit vorgefertigten Schätzern
540
14.6.3 Klassifikation handgeschriebener Ziffern mit Schätzern
545
14.6.4 Benutzerdefinierte Schätzer anhand eines Keras-Modells erstellen
547
14.7 Zusammenfassung
550
Kapitel 15: Bildklassifikation mit Deep Convolutional Neural Networks
551
15.1 Bausteine von Convolutional Neural Networks
551
15.1.1 CNNs und Merkmalshierarchie
552
15.1.2 Diskrete Faltungen
554
15.1.3 Subsampling
563
15.2 Implementierung eines CNNs
565
15.2.1 Verwendung mehrerer Eingabe- oder Farbkanäle
565
15.2.2 Regularisierung eines neuronalen Netzes mit Dropout
568
15.2.3 Verlustfunktionen für Klassifikationen
572
15.3 Implementierung eines tiefen CNNs mit TensorFlow
574
15.3.1 Die mehrschichtige CNN-Architektur
575
15.3.2 Einlesen und Vorverarbeiten der Daten
576
15.3.3 Implementierung eines CNNs mit TensorFlows Keras-API
577
15.4 Klassifikation des Geschlechts anhand von Porträtfotos mit einem CNN
584
15.4.1 Einlesen der CelebA-Datenmenge
584
15.4.2 Bildtransformation und Datenaugmentation
585
15.4.3 Training eines CNN-Klassifikators
592
15.5 Zusammenfassung
598
Kapitel 16: Modellierung sequenzieller Daten durch rekurrente neuronale Netze
599
16.1 Sequenzielle Daten
599
16.1.1 Modellierung sequenzieller Daten: Die Reihenfolge ist von Bedeutung
600
16.1.2 Repräsentierung von Sequenzen
600
16.1.3 Verschiedene Kategorien der Sequenzmodellierung
601
16.2 Sequenzmodellierung mit RNNs
603
16.2.1 Struktur und Ablauf eines RNNs
603
16.2.2 Aktivierungen eines RNNs berechnen
605
16.2.3 Rückkopplung mit der verdeckten Schicht oder der Ausgabeschicht
608
16.2.4 Probleme bei der Erkennung weitreichender Interaktionen
611
16.2.5 LSTM-Speicherzellen
612
16.3 Implementierung von RNNs zur Sequenzmodellierung mit TensorFlow
614
16.3.1 Projekt 1: Vorhersage der Stimmungslage von IMDb-Filmbewertungen
614
16.3.2 Projekt 2: Sprachmodellierung durch Zeichen mit TensorFlow
631
16.4 Sprache mit dem Transformer-Modell verstehen
644
16.4.1 Der Mechanismus der Selbst-Aufmerksamkeit
645
16.4.2 Multi-Head-Attention und Transformer-Block
648
16.5 Zusammenfassung
649
Kapitel 17: Synthetisieren neuer Daten mit Generative Adversarial Networks
651
17.1 Einführung in GANs
651
17.1.1 Autoencoder
652
17.1.2 Generative Modelle zum Synthetisieren neuer Daten
654
17.1.3 Mit GANs neue Beispiele erzeugen
656
17.1.4 Die Verlustfunktion des Generator- und Diskriminator-Netzes in einem GAN-Modell
657
17.2 Ein GAN von Grund auf implementieren
660
17.2.1 GAN-Modelle mit Google Colab trainieren
660
17.2.2 Implementierung der Generator- und Diskriminator-Netze
663
17.2.3 Definition der Trainingsdatenmenge
667
17.2.4 Trainieren des GAN-Modells
669
17.3 Verbesserung der Qualität synthetisierter Bilder durch Convolutional GAN und Wasserstein-GAN
678
17.3.1 Transponierte Faltung
679
17.3.2 Batchnormierung
680
17.3.3 Implementierung des Generators und des Diskriminators
683
17.3.4 Maße für den Unterschied zwischen zwei Verteilungen
690
17.3.5 Verwendung der EM-Distanz in der Praxis
693
17.3.6 Strafterm
694
17.3.7 Implementierung von WGAN-GP zum Trainieren des DCGAN-Modells
695
17.3.8 Zusammenbrechen des Verfahrens
699
17.4 Weitere GAN-Anwendungen
701
17.5 Zusammenfassung
702
Kapitel 18: Entscheidungsfindung in komplexen Umgebungen per Reinforcement Learning
703
18.1 Einführung: Aus Erfahrung lernen
704
18.1.1 Reinforcement Learning
704
18.1.2 Definition der Agent-Umgebung-Schnittstelle für ein Reinforcement-Learning-System
706
18.2 Theoretische Grundlagen des RLs
707
18.2.1 Markov-Entscheidungsprozesse
707
18.2.2 Mathematische Formulierung von Markov-Entscheidungsprozessen
708
18.2.3 RL-Terminologie: Return, Policy und Wertfunktion
712
18.2.4 Dynamische Programmierung und Bellman-Gleichung
716
18.3 Reinforcement-Learning-Algorithmen
717
18.3.1 Dynamische Programmierung
717
18.3.2 Reinforcement Learning mit Monte-Carlo-Algorithmen
720
18.3.3 Temporal Difference Learning
722
18.4 Implementierung eines RL-Algorithmus
725
18.4.1 OpenAI Gym
725
18.4.2 Lösung der Grid-World-Aufgabe mit Q-Learning
736
18.4.3 Ein Blick auf Deep Q-Learning
741
18.5 Zusammenfassung und Schlusswort
749
Stichwortverzeichnis
753
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.