Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive...

43

Transcript of Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive...

Page 1: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen
Page 2: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

5

Inhaltsverzeichnis

Über die Autoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Über die Korrektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1 Wie Computer aus Daten lernen können . . . . . . . . . . . . . . . . . . . . . . 251.1 Intelligente Maschinen, die Daten in Wissen verwandeln . . . . . . . . . 251.2 Die drei Arten des Machine Learnings . . . . . . . . . . . . . . . . . . . . . . . . 26

1.2.1 Mit überwachtem Lernen Vorhersagen treffen . . . . . . . . . . . 261.2.2 Interaktive Aufgaben durch verstärkendes Lernen lösen . . . 291.2.3 Durch unüberwachtes Lernen verborgene Strukturen

erkennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.3 Grundlegende Terminologie und Notation . . . . . . . . . . . . . . . . . . . . . 321.4 Entwicklung eines Systems für das Machine Learning . . . . . . . . . . . 34

1.4.1 Vorverarbeitung: Daten in Form bringen. . . . . . . . . . . . . . . . 351.4.2 Trainieren und Auswählen eines Vorhersagemodells. . . . . . 361.4.3 Bewertung von Modellen und Vorhersage anhand

unbekannter Dateninstanzen . . . . . . . . . . . . . . . . . . . . . . . . . 371.5 Machine Learning mit Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

1.5.1 Python-Pakete installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.5.2 Verwendung der Python-Distribution Anaconda. . . . . . . . . . 381.5.3 Pakete für wissenschaftliches Rechnen, Data Science und

Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2 Lernalgorithmen für die Klassifizierung trainieren . . . . . . . . . . . . . . 412.1 Künstliche Neuronen: Ein kurzer Blick auf die Anfänge des

Machine Learnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.1.1 Formale Definition eines künstlichen Neurons. . . . . . . . . . . 422.1.2 Die Perzeptron-Lernregel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.2 Implementierung eines Perzeptron-Lernalgorithmus in Python . . . 472.2.1 Eine objektorientierte Perzeptron-API . . . . . . . . . . . . . . . . . . 472.2.2 Trainieren eines Perzeptron-Modells auf die

Iris-Datensammlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 3: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

6

2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 562.3.1 Straffunktionen mit dem Gradientenabstiegsverfahren

minimieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572.3.2 Implementierung eines adaptiven linearen Neurons in

Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.3.3 Verbesserung des Gradientenabstiegsverfahrens durch Merkmalstandardisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.3.4 Großmaßstäbliches Machine Learning und stochastisches Gradientenabstiegsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 66

2.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

3 Machine-Learning-Klassifizierer mit scikit-learn verwenden . . . . . . . 733.1 Auswahl eines Klassifizierungsalgorithmus . . . . . . . . . . . . . . . . . . . . 733.2 Erste Schritte mit scikit-learn: Trainieren eines Perzeptrons . . . . . . . 743.3 Klassenwahrscheinlichkeiten durch logistische Regression

modellieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803.3.1 Logistische Regression und bedingte Wahrscheinlichkeiten 813.3.2 Gewichtungen der logistischen Straffunktion ermitteln . . . . 843.3.3 Konvertieren einer Adaline-Implementierung in einen

Algorithmus für eine logistische Regression . . . . . . . . . . . . . 873.3.4 Trainieren eines logistischen Regressionsmodells mit

scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913.3.5 Überanpassung durch Regularisierung verhindern . . . . . . . 93

3.4 Maximum-Margin-Klassifizierung mit Support Vector Machines. . . 963.4.1 Maximierung des Randbereichs . . . . . . . . . . . . . . . . . . . . . . . 973.4.2 Handhabung des nicht linear trennbaren Falls mit

Schlupfvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983.4.3 Alternative Implementierungen in scikit-learn . . . . . . . . . . . 100

3.5 Nichtlineare Aufgaben mit einer Kernel-SVM lösen . . . . . . . . . . . . . 1013.5.1 Kernel-Methoden für linear nicht trennbare Daten . . . . . . . . 1013.5.2 Mit dem Kernel-Trick Hyperebenen in höherdimensionalen

Räumen finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033.6 Lernen mit Entscheidungsbäumen . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

3.6.1 Maximierung des Informationsgewinns: Daten ausreizen . . 1083.6.2 Konstruktion eines Entscheidungsbaums . . . . . . . . . . . . . . . 1123.6.3 Mehrere Entscheidungsbäume zu einem Random Forest

kombinieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163.7 k-Nearest-Neighbor: Ein Lazy-Learning-Algorithmus . . . . . . . . . . . . . 1193.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 4: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

7

4 Gut geeignete Trainingsdatenmengen: Datenvorverarbeitung . . . . . 1254.1 Umgang mit fehlenden Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

4.1.1 Fehlende Werte in Tabellendaten . . . . . . . . . . . . . . . . . . . . . . 1264.1.2 Exemplare oder Merkmale mit fehlenden Daten

entfernen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.1.3 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284.1.4 Die Schätzer-API von scikit-learn . . . . . . . . . . . . . . . . . . . . . . 129

4.2 Handhabung kategorialer Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1304.2.1 Nominale und ordinale Merkmale . . . . . . . . . . . . . . . . . . . . . 1304.2.2 Erstellen einer Beispieldatenmenge . . . . . . . . . . . . . . . . . . . . 1304.2.3 Zuweisung von ordinalen Merkmalen . . . . . . . . . . . . . . . . . . 1314.2.4 Codierung der Klassenbezeichnungen . . . . . . . . . . . . . . . . . . 1324.2.5 One-hot-Codierung der nominalen Merkmale. . . . . . . . . . . . 133

4.3 Aufteilung einer Datensammlung in Trainings- und Testdaten . . . . 1364.4 Anpassung der Merkmale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1384.5 Auswahl aussagekräftiger Merkmale . . . . . . . . . . . . . . . . . . . . . . . . . . 140

4.5.1 L1- und L2-Regularisierung als Straffunktionen . . . . . . . . . . 1414.5.2 Geometrische Interpretation der L2-Regularisierung . . . . . . 1414.5.3 Dünnbesetzte Lösungen mit L1-Regularisierung . . . . . . . . . 1434.5.4 Algorithmen zur sequenziellen Auswahl von

Merkmalen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1474.6 Beurteilung der Bedeutung von Merkmalen mit Random

Forests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1544.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

5 Datenkomprimierung durch Dimensionsreduktion . . . . . . . . . . . . . 1595.1 Unüberwachte Dimensionsreduktion durch

Hauptkomponentenanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595.1.1 Schritte bei der Hauptkomponentenanalyse . . . . . . . . . . . . . 1605.1.2 Schrittweise Extraktion der Hauptkomponenten. . . . . . . . . . 1615.1.3 Totale Varianz und Varianzaufklärung. . . . . . . . . . . . . . . . . . 1645.1.4 Merkmalstransformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655.1.5 Hauptkomponentenanalyse mit scikit-learn . . . . . . . . . . . . . 168

5.2 Überwachte Datenkomprimierung durch lineare Diskriminanzanalyse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.2.1 Hauptkomponentenanalyse vs. lineare

Diskriminanzanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725.2.2 Die interne Funktionsweise der linearen

Diskriminanzanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 5: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

8

5.2.3 Berechnung der Streumatrizen . . . . . . . . . . . . . . . . . . . . . . . . 1745.2.4 Auswahl linearer Diskriminanten für den neuen

Merkmalsunterraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1765.2.5 Projektion in den neuen Merkmalsraum . . . . . . . . . . . . . . . . 1795.2.6 LDA mit scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

5.3 Kernel-Hauptkomponentenanalyse für nichtlineare Zuordnungen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815.3.1 Kernel-Funktionen und der Kernel-Trick . . . . . . . . . . . . . . . . 1825.3.2 Implementierung einer Kernel-Hauptkomponentenanalyse

in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865.3.3 Projizieren neuer Datenpunkte . . . . . . . . . . . . . . . . . . . . . . . . 1935.3.4 Kernel-Hauptkomponentenanalyse mit scikit-learn . . . . . . . 197

5.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

6 Best Practices zur Modellbewertung und Hyperparameter-Abstimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

6.1 Arbeitsabläufe mit Pipelines optimieren . . . . . . . . . . . . . . . . . . . . . . . 2016.1.1 Die Wisconsin-Brustkrebs-Datensammlung . . . . . . . . . . . . . 2016.1.2 Transformer und Schätzer in einer Pipeline

kombinieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2036.2 Beurteilung des Modells durch k-fache Kreuzvalidierung . . . . . . . . . 205

6.2.1 2-fache Kreuzvalidierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2056.2.2 k-fache Kreuzvalidierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

6.3 Algorithmen mit Lern- und Validierungskurven debuggen . . . . . . . . 2116.3.1 Probleme mit Bias und Varianz anhand von Lernkurven

erkennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2116.3.2 Überanpassung und Unteranpassung anhand von

Validierungskurven erkennen . . . . . . . . . . . . . . . . . . . . . . . . . 2146.4 Feinabstimmung eines Lernmodells durch Rastersuche . . . . . . . . . . 216

6.4.1 Hyperparameter-Abstimmung durch Rastersuche . . . . . . . . 2166.4.2 Algorithmenauswahl durch verschachtelte

Kreuzvalidierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186.5 Verschiedene Kriterien zur Leistungsbewertung . . . . . . . . . . . . . . . . 220

6.5.1 Interpretation einer Wahrheitsmatrix . . . . . . . . . . . . . . . . . . . 2206.5.2 Optimierung der Genauigkeit und der Trefferquote eines

Klassifizierungsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2226.5.3 Receiver-Operating-Characteristic-Diagramme . . . . . . . . . . . 2246.5.4 Bewertungskriterien für Mehrfachklassifizierungen. . . . . . . 227

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 6: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

9

6.6 Handhabung unausgewogener Klassenverteilung . . . . . . . . . . . . . . . 2286.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

7 Kombination verschiedener Modelle für das Ensemble Learning . . . 2337.1 Ensemble Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2337.2 Klassifizierer durch Mehrheitsentscheidung kombinieren . . . . . . . . 237

7.2.1 Implementierung eines einfachen Mehrheitsentscheidungs-Klassifizierers. . . . . . . . . . . . . . . . . 237

7.2.2 Vorhersagen nach dem Prinzip der Mehrheitsentscheidung treffen . . . . . . . . . . . . . . . . . . . . . . . . 244

7.3 Bewertung und Abstimmung des Klassifizierer-Ensembles . . . . . . . 2477.4 Bagging: Klassifizierer-Ensembles anhand von

Bootstrap-Stichproben entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2537.4.1 Bagging kurz zusammengefasst . . . . . . . . . . . . . . . . . . . . . . . 2547.4.2 Klassifizierung der Wein-Datensammlung durch

Bagging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557.5 Schwache Klassifizierer durch adaptives Boosting verbessern . . . . . 258

7.5.1 Funktionsweise des Boostings . . . . . . . . . . . . . . . . . . . . . . . . 2597.5.2 AdaBoost mit scikit-learn anwenden . . . . . . . . . . . . . . . . . . . 263

7.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

8 Machine Learning zur Analyse von Stimmungslagen nutzen . . . . . . 2678.1 Die IMDb-Filmdatenbank. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

8.1.1 Herunterladen der Datensammlung . . . . . . . . . . . . . . . . . . . 2688.1.2 Vorverarbeiten der Filmbewertungsdaten . . . . . . . . . . . . . . . 268

8.2 Das Bag-of-words-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2708.2.1 Wörter in Merkmalsvektoren umwandeln . . . . . . . . . . . . . . . 2708.2.2 Beurteilung der Wortrelevanz durch das Tf-idf-Maß . . . . . . 2728.2.3 Textdaten bereinigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2758.2.4 Dokumente in Token zerlegen . . . . . . . . . . . . . . . . . . . . . . . . 277

8.3 Ein logistisches Regressionsmodell für die Dokument-klassifizierung trainieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

8.4 Verarbeitung großer Datenmengen: Online-Algorithmen und Out-of-Core Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

8.5 Topic Modeling mit latenter Dirichlet-Allokation . . . . . . . . . . . . . . . . 2858.5.1 Aufteilung von Texten mit der LDA . . . . . . . . . . . . . . . . . . . . 2868.5.2 LDA mit scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

8.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 7: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

10

9 Einbettung eines Machine-Learning-Modells in eine Webanwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

9.1 Serialisierung angepasster Schätzer mit scikit-learn. . . . . . . . . . . . . . 2919.2 Einrichtung einer SQLite-Datenbank zum Speichern von Daten . . . 2959.3 Entwicklung einer Webanwendung mit Flask. . . . . . . . . . . . . . . . . . . 297

9.3.1 Die erste Webanwendung mit Flask . . . . . . . . . . . . . . . . . . . . 2989.3.2 Formularvalidierung und -ausgabe . . . . . . . . . . . . . . . . . . . . . 300

9.4 Der Filmbewertungsklassifizierer als Webanwendung . . . . . . . . . . . 3049.4.1 Dateien und Ordner – die Verzeichnisstruktur . . . . . . . . . . . 3069.4.2 Implementierung der Hauptanwendung app.py . . . . . . . . . . 3069.4.3 Einrichtung des Bewertungsformulars . . . . . . . . . . . . . . . . . . 3099.4.4 Eine Vorlage für die Ergebnisseite erstellen . . . . . . . . . . . . . . 310

9.5 Einrichtung der Webanwendung auf einem öffentlich zugänglichen Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3129.5.1 Erstellen eines Benutzerkontos bei PythonAnywhere . . . . . . 3129.5.2 Hochladen der Filmbewertungsanwendung . . . . . . . . . . . . . 3139.5.3 Updaten des Filmbewertungsklassifizierers. . . . . . . . . . . . . . 314

9.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

10 Vorhersage stetiger Zielvariablen durch Regressionsanalyse. . . . . . . 31710.1 Lineare Regression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

10.1.1 Ein einfaches lineares Regressionsmodell . . . . . . . . . . . . . . . 31810.1.2 Multiple lineare Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

10.2 Die Lebensbedingungen-Datensammlung . . . . . . . . . . . . . . . . . . . . . 32010.2.1 Einlesen der Datenmenge in einen DataFrame . . . . . . . . . . . 32010.2.2 Visualisierung der wichtigen Eigenschaften einer

Datenmenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32110.2.3 Zusammenhänge anhand der Korrelationsmatrix

erkennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32310.3 Implementierung eines linearen Regressionsmodells mit der

Methode der kleinsten Quadrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32610.3.1 Berechnung der Regressionsparameter mit dem

Gradientenabstiegsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 32610.3.2 Abschätzung der Koeffizienten eines Regressionsmodells

mit scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33010.4 Anpassung eines robusten Regressionsmodells mit dem

RANSAC-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33210.5 Bewertung der Leistung linearer Regressionsmodelle . . . . . . . . . . . . 33510.6 Regularisierungsverfahren für die Regression einsetzen . . . . . . . . . . 338

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 8: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

11

10.7 Polynomiale Regression: Umwandeln einer linearen Regression in eine Kurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34010.7.1 Hinzufügen polynomialer Terme mit scikit-learn . . . . . . . . . 34110.7.2 Modellierung nichtlinearer Zusammenhänge in der

Lebensbedingungen-Datensammlung . . . . . . . . . . . . . . . . . . 34210.8 Handhabung nichtlinearer Beziehungen mit Random Forests. . . . . 346

10.8.1 Entscheidungsbaum-Regression . . . . . . . . . . . . . . . . . . . . . . . 34610.8.2 Random-Forest-Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

10.9 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

11 Verwendung nicht gekennzeichneter Daten: Clusteranalyse. . . . . . . 35311.1 Gruppierung von Objekten nach Ähnlichkeit mit dem

k-Means-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35311.1.1 K-Means-Clustering mit scikit-learn . . . . . . . . . . . . . . . . . . . . 35411.1.2 Der k-Means++-Algorithmus. . . . . . . . . . . . . . . . . . . . . . . . . . 35811.1.3 »Harte« und »weiche« Clustering-Algorithmen . . . . . . . . . . 35911.1.4 Die optimale Anzahl der Cluster mit dem

Ellenbogenkriterium ermitteln . . . . . . . . . . . . . . . . . . . . . . . . 36211.1.5 Quantifizierung der Clustering-Güte mit

Silhouettendiagrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36311.2 Cluster als hierarchischen Baum organisieren . . . . . . . . . . . . . . . . . . 368

11.2.1 Gruppierung von Clustern . . . . . . . . . . . . . . . . . . . . . . . . . . . 36811.2.2 Hierarchisches Clustering einer Distanzmatrix. . . . . . . . . . . 37011.2.3 Dendrogramme und Heatmaps verknüpfen . . . . . . . . . . . . . 37311.2.4 Agglomeratives Clustering mit scikit-learn . . . . . . . . . . . . . . 375

11.3 Bereiche hoher Dichte mit DBSCAN ermitteln . . . . . . . . . . . . . . . . . 37611.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

12 Implementierung eines künstlichen neuronalen Netzes . . . . . . . . . . 38312.1 Modellierung komplexer Funktionen mit künstlichen neuronalen

Netzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38312.1.1 Einschichtige neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . 38512.1.2 Mehrschichtige neuronale Netzarchitektur . . . . . . . . . . . . . . 38712.1.3 Aktivierung eines neuronalen Netzes durch

Vorwärtspropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39012.2 Klassifizierung handgeschriebener Ziffern . . . . . . . . . . . . . . . . . . . . . 392

12.2.1 Die MNIST-Datensammlung . . . . . . . . . . . . . . . . . . . . . . . . . 39312.2.2 Implementierung eines mehrschichtigen Perzeptrons. . . . . 399

12.3 Trainieren eines künstlichen neuronalen Netzes . . . . . . . . . . . . . . . . 41012.3.1 Berechnung der logistischen Straffunktion . . . . . . . . . . . . . . 410

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 9: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

12

12.3.2 Ein Gespür für die Backpropagation entwickeln . . . . . . . . . . 41312.3.3 Trainieren neuronaler Netze durch Backpropagation . . . . . . 415

12.4 Konvergenz in neuronalen Netzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41812.5 Abschließende Bemerkungen zur Implementierung neuronaler

Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42012.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

13 Parallelisierung des Trainings neuronaler Netze mit TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

13.1 TensorFlow und Trainingsleistung . . . . . . . . . . . . . . . . . . . . . . . . . . . 42313.1.1 Was genau ist TensorFlow? . . . . . . . . . . . . . . . . . . . . . . . . . . . 42513.1.2 TensorFlow erlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42513.1.3 Erste Schritte mit TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . 42613.1.4 Mit Array-Strukturen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . 42813.1.5 Entwicklung eines einfachen Modells mit TensorFlows

Low-level-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43013.2 Training neuronaler Netze mit TensorFlows High-level-APIs. . . . . . 434

13.2.1 Entwicklung mehrschichtiger neuronaler Netze mit TensorFlows Layers-API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

13.2.2 Entwicklung eines mehrschichtigen neuronalen Netzes mit Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

13.3 Auswahl der Aktivierungsfunktionen mehrschichtiger neuronaler Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44413.3.1 Die logistische Funktion kurz zusammengefasst . . . . . . . . . 44513.3.2 Wahrscheinlichkeiten bei der Mehrfachklassifizierung

mit der softmax-Funktion abschätzen. . . . . . . . . . . . . . . . . . . 44713.3.3 Verbreiterung des Ausgabespektrums mittels Tangens

hyperbolicus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44813.3.4 Aktivierung durch rektifizierte Lineareinheiten. . . . . . . . . . . 449

13.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

14 Die Funktionsweise von TensorFlow im Detail. . . . . . . . . . . . . . . . . . 45314.1 Grundlegende Merkmale von TensorFlow . . . . . . . . . . . . . . . . . . . . . 45314.2 TensorFlow-Tensoren und deren Rang . . . . . . . . . . . . . . . . . . . . . . . . 454

14.2.1 Rang und Form eines Tensors ermitteln . . . . . . . . . . . . . . . . 45514.3 TensorFlow-Berechnungsgraphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45614.4 Platzhalter in TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

14.4.1 Platzhalter definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45914.4.2 Platzhaltern Daten zuführen . . . . . . . . . . . . . . . . . . . . . . . . . . 459

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 10: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

13

14.4.3 Platzhalter für Datenarrays mit variierenden Stapelgrößen definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

14.5 Variablen in TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46114.5.1 Variablen definieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46114.5.2 Variablen initialisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

14.5.3 Geltungsbereich von Variablen . . . . . . . . . . . . . . . . . . . . . . . . 46514.5.4 Wiederverwendung von Variablen . . . . . . . . . . . . . . . . . . . . . 466

14.6 Erstellen eines Regressionsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . 46914.7 Ausführung von Objekten in einem TensorFlow-Graphen unter

Verwendung ihres Namens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47314.8 Speichern und wiederherstellen eines Modells in TensorFlow . . . . . 47414.9 Tensoren als mehrdimensionale Datenarrays transformieren . . . . . 47714.10 Mechanismen der Flusskontrolle beim Erstellen von Graphen

verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48114.11 Graphen mit TensorBoard visualisieren . . . . . . . . . . . . . . . . . . . . . . . 484

14.11.1 Erweitern Sie Ihre TensorBoard-Kenntnisse . . . . . . . . . . . . . 48714.12 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488

15 Bildklassifizierung mit tiefen konvolutionalen neuronalen Netzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

15.1 Bausteine konvolutionaler neuronaler Netze . . . . . . . . . . . . . . . . . . . 48915.1.1 CNNs und Merkmalshierarchie . . . . . . . . . . . . . . . . . . . . . . . 49015.1.2 Diskrete Faltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49115.1.3 Subsampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500

15.2 Implementierung eines CNNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50115.2.1 Verwendung mehrerer Eingabe- oder Farbkanäle . . . . . . . . . 50115.2.2 Regularisierung eines neuronalen Netzes mit Dropout . . . . 504

15.3 Implementierung eines tiefen konvolutionalen neuronalen Netzes mit TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50715.3.1 Die mehrschichtige CNN-Architektur . . . . . . . . . . . . . . . . . . 50715.3.2 Einlesen und Vorverarbeiten der Daten . . . . . . . . . . . . . . . . . 50815.3.3 Implementierung eines CNNs mit TensorFlows

Low-level-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50915.3.4 Implementierung eines CNNs mit TensorFlows

Layers-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52115.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 11: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Inhaltsverzeichnis

14

16 Modellierung sequenzieller Daten durch rekurrente neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

16.1 Sequenzielle Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52916.1.1 Modellierung sequenzieller Daten: Die Reihenfolge ist von

Bedeutung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53016.1.2 Repräsentierung von Sequenzen. . . . . . . . . . . . . . . . . . . . . . . 53016.1.3 Verschiedene Kategorien der Sequenzmodellierung . . . . . . . 531

16.2 Sequenzmodellierung mit RNNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53216.2.1 Struktur und Ablauf eines RNNs . . . . . . . . . . . . . . . . . . . . . . 53216.2.2 Aktivierungen eines RNNs berechnen . . . . . . . . . . . . . . . . . . 53416.2.3 Probleme bei der Erkennung weitreichender

Interaktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53716.2.4 LSTM-Einheiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538

16.3 Implementierung eines mehrschichtigen RNNs zur Sequenzmodellierung mit TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . 540

16.4 Projekt 1: Analyse der Stimmungslage in der IMDb-Filmbewertungsdatenbank mit mehrschichtigen RNNs . . . . . . . . . . 54116.4.1 Datenaufbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54116.4.2 Einbettung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54516.4.3 Erstellen eines RNN-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . 54716.4.4 Der Konstruktor der SentimentRNN-Klasse. . . . . . . . . . . . . . 54816.4.5 Die build-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54816.4.6 Die train-Methode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55216.4.7 Die predict-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55316.4.8 Instanziierung der SentimentRNN-Klasse . . . . . . . . . . . . . . . 55416.4.9 Training und Optimierung des RNN-Modells zur

Stimmungsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55416.5 Projekt 2: Implementierung eines RNNs zur Sprachmodellierung

durch Zeichen mit TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55516.5.1 Datenaufbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55616.5.2 Erstellen eines RNNs zur Sprachmodellierung durch

Zeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56016.5.3 Der Konstruktor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56016.5.4 Die build-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56116.5.5 Die train-Methode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56416.5.6 Die sample-Methode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56516.5.7 Erstellen und Trainieren des CharRNN-Modells . . . . . . . . . . 56616.5.8 Das CharRNN-Modell im Sampling-Modus . . . . . . . . . . . . . . 567

16.6 Zusammenfassung und Schlusswort . . . . . . . . . . . . . . . . . . . . . . . . . . 568

Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 12: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

15

Über die Autoren

Sebastian Raschka, Autor des viel verkauften Buches Python Machine Learning, ver-fügt über jahrelange Erfahrung in der Python-Programmierung und leitete meh-rere Seminare über praktische Data-Science-Anwendungen, Machine Learningund Deep Learning, unter anderem eine Einführung in Machine Learning auf derSciPy-Konferenz, der maßgeblichen Veranstaltung für wissenschaftliche Anwen-dungen in Python.

Seine Forschungsprojekte befassen sich zwar vornehmlich mit Fragen der Berech-nung biologischer Phänomene, aber es bereitet ihm ebenfalls Freude, über Themenwie Data Science, Machine Learning und Python-Programmierung im Allgemei-nen nachzudenken und zu schreiben, um es auch Leuten ohne Kenntnisse inBezug auf maschinelle Lernverfahren zu ermöglichen, datengesteuerte Lösungenzu entwickeln.

Seine Arbeiten und Beiträge wurden kürzlich mit dem Preis für herausragendeLeistungen von Hochschulabsolventen 2016 sowie dem ACM Computing ReviewsBest of 2016/2017 ausgezeichnet. In seiner Freizeit leistet Sebastian aktiv Beiträgezu Open-Source-Projekten und die von ihm implementierten Verfahren werdenerfolgreich in Mustererkennungswettbewerben wie z.B. Kaggle eingesetzt.

Ich möchte diese Gelegenheit nutzen, der großartigen Python-Communityund den Entwicklern der Open-Source-Pakete meinen Dank auszuspre-chen, die mir dabei geholfen haben, die perfekte Umgebung für wissen-schaftliche Forschung und Data Science einzurichten. Außerdem möchteich meinen Eltern danken, die mich bei all meinen beruflichen Zielen, dieich so leidenschaftlich verfolgt habe, stets ermutigt und unterstützt haben.

Mein besonderer Dank gilt den Hauptentwicklern von scikit-learn. Als je-mand, der selbst aktiv an diesem Projekt beteiligt war, hatte ich das Vergnü-gen, mit tollen Leuten zusammenarbeiten zu dürfen, die sich nicht nur mitMachine Learning auskennen, sondern auch hervorragende Programmie-rer sind. Und zum Schluss möchte ich mich bei Elie Kawerk bedanken, deranbot, das Buch in Augenschein zu nehmen und wertvolles Feedback zuden neuen Kapiteln lieferte.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 13: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Über die Autoren

16

Vahid Mirjalili erlangte seinen Doktortitel als Maschinenbauingenieur mit einerArbeit über neue Verfahren für Computersimulationen molekularer Strukturen.Derzeit erforscht er Anwendungen des Machine Learnings in verschiedenen Com-puter-Vision-Projekten (»maschinelles Sehen«) am Fachbereich für Informatikund Ingenieurswesen an der Michigan State University.

Vahid hat sich für Python als bevorzugte Programmiersprache entschieden undwährend seiner akademischen Laufbahn enorme Erfahrung in der Python-Pro-grammierung gesammelt. Er hat an der Michigan State University Programmier-kurse in Python für angehende Ingenieure geleitet, was es ihm ermöglichte, denStudenten ein besseres Verständnis verschiedener Datenstrukturen und die effi-ziente Entwicklung von Python-Code zu vermitteln.

Neben der Erforschung von Deep Learning und Anwendungen des maschinellenSehens ist er besonders daran interessiert, Lernverfahren zu entwickeln, die bio-metrische Daten wie Bilder von Gesichtern besser schützen, sodass ein Benutzernicht mehr Informationen preisgibt als beabsichtigt. Darüber hinaus arbeitet ermit einem Team von Ingenieuren zusammen, das selbstfahrende Autos entwi-ckelt. Er entwirft dabei Modelle neuronaler Netzwerke, die anhand multispektralerBilddaten Fußgänger erkennen.

Ich möchte meinem Doktorvater Dr. Arun Ross dafür danken, dass er mirdie Möglichkeit bietet, in seinem Forschungslabor an neuartigen Aufgabenzu arbeiten. Außerdem möchte ich Dr. Vishnu Boddeti dafür danken, dasser mein Interesse an Deep Learning entfacht und mir die grundlegendenKonzepte vor Augen geführt hat.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 14: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

17

Über die Korrektoren

Jared Huffmann ist Unternehmer, Spieler, Geschichtenerzähler, Machine-Learning-Fan und begeisterter Anhänger von Datenbanken. Die letzten zehn Jahre hat ermit der Entwicklung von Software und der Analyse von Daten verbracht. Seine frü-heren Tätigkeiten umfassen ein breites Spektrum, unter anderem Sicherheits-aspekte von Netzwerken, Finanzsysteme, systematische Unternehmensanalysesowie Webdienste, Entwickler-Tools und Geschäftsstrategie. Erst kürzlich hat erdas Data-Science-Team von Minecraft gegründet, das sich auf Big Data und MachineLearning konzentriert. Wenn er nicht arbeitet, ist er typischerweise beim Spielenoder genießt den wunderschönen pazifischen Nordwesten mit Freunden und derFamilie.

Huai-En, Sun (Ryan Sun) verfügt über einen akademischen Grad der NationalChiao Tung University in Statistik. Er ist derzeit als Data Scientist tätig und analy-siert die Produktionsverfahren bei PEGATRON. Seine Forschungsschwerpunktesind Machine Learning und Deep Learning.

Ich danke dem amerikanischen Originalverlag Packt für die Möglichkeit,an einem so tollen Buch mitwirken zu können, meiner Frau für die un-ermüdliche Ermutigung und meiner Tochter dafür, dass sie die meistenAbende durchgeschlafen hat, während ich mit der Durchsicht und dem De-buggen des Codes beschäftigt war.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 15: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

19

Einleitung

Aus den Nachrichten und den sozialen Medien ist Ihnen vermutlich bekannt, dassdas Machine Learning zu einer der spannendsten Technologien der heutigen Zeitgeworden ist. Große Unternehmen wie Google, Facebook, Apple, Amazon, IBMund viele andere investieren aus gutem Grund kräftig in die Erforschung desMachine Learnings und dessen Anwendung. Auch wenn man manchmal den Ein-druck bekommt, dass »Machine Learning« als leeres Schlagwort gebraucht wird,handelt es sich doch zweifellos nicht um eine Modeerscheinung. Dieses span-nende Fachgebiet eröffnet viele neue Möglichkeiten und ist aus dem Alltag schonnicht mehr wegzudenken. Denken Sie an die virtuellen Assistenten von Smart-phones, Produktempfehlungen für Kunden in Onlineshops, das Verhindern vonKreditkartenbetrug, Spamfilter in E-Mail-Programmen, die Erkennung und Dia-gnose von Krankheitssymptomen – die Liste ließe sich beliebig lang fortsetzen.

Wenn Sie zu einem Praktiker des Machine Learnings und einem besseren Pro-blemlöser werden möchten oder vielleicht sogar eine Laufbahn in der Erforschungdes Machine Learnings anstreben, dann ist dies das richtige Buch für Sie. Füreinen Neuling können die dem Machine Learning zugrunde liegenden theoreti-schen Konzepte zunächst einmal erdrückend wirken. In den vergangenen Jahrensind aber viele praxisorientierte Bücher mit leistungsfähigen Lernalgorithmenerschienen, die Ihnen den Start erleichtern.

Die Verwendung praxisorientierter Codebeispiele dient einem wichtigen Zweck:Konkrete Beispiele verdeutlichen die allgemeinen Konzepte, indem das Erlernteunmittelbar in die Tat umgesetzt wird. Allerdings darf man dabei nicht vergessen,dass mit großer Macht auch immer große Verantwortung einhergeht! Neben derunmittelbaren Erfahrung, Machine Learning mithilfe der ProgrammiersprachePython und auf Python beruhenden Lernbibliotheken in die Tat umzusetzen, stelltdas Buch auch die den Machine-Learning-Algorithmen zugrunde liegenden mathe-matischen Konzepte vor, die für den erfolgreichen Einsatz von Machine Learningunverzichtbar sind. Das Buch ist also kein rein praktisch orientiertes Werk, sondernein Buch, das die erforderlichen Details der Konzepte des Machine Learnings erör-tert, die Funktionsweise von Lernalgorithmen und ihre Verwendung verständlich,aber dennoch informativ erklärt und – was noch wichtiger ist – das zeigt, wie mandie häufigsten Fehler vermeidet.

Wenn Sie bei Google Scholar den Suchbegriff machine learning eingeben, erhaltenSie als Resultat eine riesige Zahl (ca. 1.800.000) von Treffern. Nun können wir in

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 16: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Einleitung

20

diesem Buch natürlich nicht sämtliche Einzelheiten der in den letzten 60 Jahrenentwickelten Algorithmen und Anwendungen erörtern. Wir werden uns jedochauf eine spannende Tour begeben, die alle wichtigen Themen und Konzepteumfasst, damit Sie eine gründliche Einführung erhalten. Sollte Ihr Wissensdurstauch nach der Lektüre noch nicht gestillt sein, steht Ihnen eine Vielzahl weitererhilfreicher Ressourcen zur Verfügung, die Sie nutzen können, um die entschei-denden Fortschritte auf diesem Fachgebiet zu verfolgen.

Falls Sie sich schon ausführlich mit der Theorie des Machine Learnings beschäf-tigt haben, zeigt Ihnen dieses Buch, wie Sie Ihre Kenntnisse in die Praxis umset-zen können. Wenn Sie bereits entsprechende Techniken eingesetzt haben, aberderen Funktionsweise besser verstehen möchten, kommen Sie hier ebenfalls aufIhre Kosten. Und wenn Ihnen das Thema Machine Learning noch völlig neu ist,haben Sie umso mehr Grund, sich zu freuen, denn ich kann Ihnen versprechen,dass dieses Verfahren Ihre Denkweise über Ihre in Zukunft zu lösenden Aufgabenverändern wird – und ich möchte Ihnen zeigen, wie Sie Problemstellungen inAngriff nehmen können, indem Sie die den Daten innewohnende Kraft freisetzen.

Bevor wir uns eingehender mit dem Machine Learning befassen, soll aber zu-nächst noch Ihre vermutlich vordringlichste Frage beantwortet werden: WarumPython? Die Antwort ist einfach: Es ist leistungsfähig und doch leicht zu erlernen.Python ist zur beliebtesten Programmiersprache im Bereich Data Science gewor-den, weil man sich die lästigen Teile bei der Programmierung erspart und eineUmgebung bereitsteht, in der sich Ideen und Konzepte sofort umsetzen lassen.

Wir, die Autoren, können aus eigener Erfahrung sagen, dass wir durch die Be-schäftigung mit dem Machine Learning zu besseren Wissenschaftlern, Denkernund Problemlösern geworden sind. In diesem Buch möchten wir unsere diesbe-züglichen Erkenntnisse mit Ihnen teilen. Wissen wird durch Lernen erworben,was wiederum einen gewissen Eifer erfordert, und erst Übung macht den sprich-wörtlichen Meister. Der vor Ihnen liegende Weg ist manchmal nicht ganz einfach,und einige der Themenbereiche sind deutlich schwieriger als andere, aber wir hof-fen dennoch, dass Sie die Gelegenheit nutzen und sich auf den Lohn der Mühekonzentrieren. Im weiteren Verlauf des Buches werden Sie Ihrem Repertoire eineganze Reihe leistungsfähiger Techniken hinzufügen können, die dabei helfen,auch die schwierigsten Aufgaben auf datengesteuerte Weise zu bewältigen.

Zum Inhalt des Buches

Kapitel 1, Wie Computer aus Daten lernen können, führt Sie in die wichtigsten Teil-bereiche des Machine Learnings ein, mit denen sich verschiedene Probleme inAngriff nehmen lassen. Darüber hinaus werden die grundlegenden Schritte beimEntwurf eines typischen Machine-Learning-Modells erörtert, auf die wir in dennachfolgenden Kapiteln zurückgreifen.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 17: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Zum Inhalt des Buches

21

Kapitel 2, Lernalgorithmen für die Klassifizierung trainieren, geht zurück zu denAnfängen des Machine Learnings und stellt binäre Perzeptron-Klassifizierer undadaptive lineare Neuronen vor. Dieses Kapitel ist eine behutsame Einführung indie Grundlagen der Klassifizierung von Mustern und konzentriert sich auf dasZusammenspiel von Optimierungsalgorithmen und Machine Learning.

Kapitel 3, Machine-Learning-Klassifizierer mit scikit-learn verwenden, beschreibt diewichtigsten Klassifizierungsalgorithmen des Machine Learnings und stellt prakti-sche Beispiele vor. Dabei kommt eine der beliebtesten und verständlichsten Open-Source-Bibliotheken für Machine Learning zum Einsatz: scikit-learn.

Kapitel 4, Gut geeignete Trainingsdatenmengen: Datenvorverarbeitung, erläutert dieHandhabung der gängigsten Probleme unverarbeiteter Datenmengen, wie z.B.fehlende Daten. Außerdem werden verschiedene Ansätze zur Ermittlung derinformativsten Merkmale einer Datenmenge vorgestellt. Des Weiteren erfahrenSie, wie sich Variablen unterschiedlichen Typs als geeignete Eingabe für Lernalgo-rithmen einsetzen lassen.

Kapitel 5, Datenkomprimierung durch Dimensionsreduktion, beschreibt ein wichtigesVerfahren zur Reduzierung der Merkmalsanzahl eines Datenbestands durch Auf-teilung in kleinere Mengen unter Beibehaltung eines Großteils der nützlichstenund charakteristischsten Informationen. Hier wird der Standardansatz zur Dimen-sionsreduktion durch die Analyse der Hauptkomponenten erläutert und mit über-wachten und nichtlinearen Transformationsverfahren verglichen.

Kapitel 6, Bewährte Verfahren zur Modellbewertung und Hyperparameter-Abstimmung,erörtert die Einschätzung der Aussagekraft von Vorhersagemodellen. Darüberhinaus kommen verschiedene Bewertungskriterien der Modelle sowie Verfahrenzur Feinabstimmung der Lernalgorithmen zur Sprache.

Kapitel 7, Kombination verschiedener Modelle für das Ensemble Learning, führt Sie indie verschiedenen Konzepte zur effektiven Kombination diverser Lernalgorithmenein. Sie erfahren, wie Sie Ensembles einrichten, um die Schwächen einzelner Klas-sifizierer zu überwinden, was genauere und verlässlichere Vorhersagen liefert.

Kapitel 8, Machine Learning zur Analyse von Stimmungslagen nutzen, erläutert diegrundlegenden Schritte zur Transformierung von Textdaten in eine für Lernalgo-rithmen sinnvolle Form, um so die Meinung von Menschen anhand der von ihnenverfassten Texte vorherzusagen.

Kapitel 9, Einbettung eines Machine-Learning-Modells in eine Webanwendung, führtvor, wie Sie das Lernmodell des vorangehenden Kapitels Schritt für Schritt in eineWebanwendung einbetten können.

Kapitel 10, Vorhersage stetiger Zielvariablen durch Regressionsanalyse, erörtert grund-legende Verfahren zur Modellierung linearer Beziehungen zwischen Zielvariablenund Regressanden, um auch stetige Werte vorhersagen zu können. Nach der Vor-

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 18: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Einleitung

22

stellung der linearen Modelle kommen auch Polynom-Regression und baumba-sierte Ansätze zur Sprache.

Kapitel 11, Verwendung nicht gekennzeichneter Daten: Clusteranalyse, konzentriertsich auf einen anderen Teilbereich des Machine Learnings, nämlich auf dasunüberwachte Lernen. Wir werden drei unterschiedlichen Familien von Clus-tering-Algorithmen zugehörige Verfahren anwenden, um Objektgruppen aufzu-spüren, die einen gewissen Ähnlichkeitsgrad aufweisen.

Kapitel 12, Implementierung eines künstlichen neuronalen Netzes, erweitert das inKapitel 2 vorgestellte Konzept der Gradient-basierten Optimierung, um leistungs-fähige, mehrschichtige neuronale Netze zu erstellen, die auf dem verbreitetenBackpropagation-Algorithmus beruhen.

Kapitel 13, Parallelisierung des Trainings neuronaler Netze mit TensorFlow, baut aufden in den vorausgehenden Kapiteln erworbenen Kenntnissen auf, um Ihneneinen praxisorientierten Leitfaden für ein effizienteres Training neuronaler Netzean die Hand zu geben. Der Schwerpunkt dieses Kapitels liegt dabei auf Tensor-Flow, einer quelloffenen Python-Bibliothek, die die Verwendung mehrerer Kernemoderner Grafikprozessoren ermöglicht.

Kapitel 14, Die Funktionsweise von TensorFlow im Detail, behandelt TensorFlow aus-führlicher und erläutert die grundlegenden Konzepte von Berechnungsgraphenund Sitzungen. Darüber hinaus kommen Themen wie das Abspeichern und Visua-lisieren der Graphen neuronaler Netze zur Sprache, was sich im verbleibendenTeil des Buches als sehr nützlich erweisen wird.

Kapitel 15, Bildklassifizierung mit tiefen konvolutionalen neuronalen Netzen, stellt neu-ronale Netzarchitekturen vor, die bei maschinellem Sehen und der Bilderkennungzu einem neuen Standard geworden sind, nämlich konvolutionale neuronaleNetze. Dieses Kapitel erörtert die grundlegenden Konzepte konvolutionalerSchichten als Merkmalsextraktoren und zeigt die Anwendung einer konvolutiona-len neuronalen Netzarchitektur zur Klassifizierung von Bildern, die eine nahezuperfekte Klassifizierung erzielt.

Kapitel 16, Modellierung sequenzieller Daten durch rekurrente neuronale Netze, stellteine weitere verbreitete neuronale Netzarchitektur für Deep Learning vor, diebesonders gut für die Verarbeitung von sequenziellen Daten und Zeitreihen geeig-net ist. In diesem Kapitel werden wir verschiedene rekurrente neuronale Netz-architekturen auf Textdaten anwenden. Als Aufwärmübung betrachten wir zu-nächst eine Stimmungsanalyse und erzeugen anschließend völlig neue Texte.

Was Sie benötigen

Zum Ausführen der Codebeispiele ist die Python-Version 3.6.0 oder neuer aufmacOS, Linux oder Microsoft Windows erforderlich. Wir werden häufig von für

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 19: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Für wen ist das Buch gedacht?

23

wissenschaftliche Berechnungen unverzichtbaren Python-Bibliotheken Gebrauchmachen, z.B. von SciPy, NumPy, scikit-learn, Matplotlib und pandas.

Im ersten Kapitel finden Sie Hinweise und Tipps zur Einrichtung Ihrer Python-Umgebung und dieser elementaren Bibliotheken. In den verschiedenen Kapitelnwerden wir dann der Python-Umgebung weitere Bibliotheken hinzufügen: dieNLTK-Bibliothek für die Verarbeitung natürlicher Sprache (Kapitel 8), das Web-Framework Flask (Kapitel 9), die Seaborn-Bibliothek zur Visualisierung statisti-scher Daten (Kapitel 10) und schließlich TensorFlow, um neuronale Netze effizientmit grafischen Symbolen zu trainieren.

Für wen ist das Buch gedacht?

Wenn Sie wissen möchten, wie Sie Python einsetzen können, um wichtige Fragenüber Ihre Daten zu beantworten, sind Sie hier genau richtig. Ob Sie nun Anfängersind oder Ihre Kenntnisse auf dem Gebiet der Data Science vertiefen möchten:Dieses Buch ist eine unentbehrliche Informationsquelle und unbedingt lesens-wert.

Konventionen im Buch

In diesem Buch werden verschiedene Textarten verwendet, um zwischen Informa-tionen unterschiedlicher Art zu unterscheiden. Nachstehend finden Sie einige Bei-spiele und deren Bedeutungen.

Schlüsselwörter, Datenbanktabellen-, Twitter-, Datei-, Ordner-, Datei- und Pfadna-men sowie URLs und Usereingaben werden im Fließtext wie folgt dargestellt:

»Durch die Einstellung out_file=None weisen wir die Daten direkt der Variablendoc_data zu, ohne sie erst in eine temporäre Datei tree.dot auf die Festplatte zuschreiben.«

Codeblöcke sehen so aus:

>>> from sklearn.neighbors import KNeighborsClassifier

>>> knn = KNeighborsClassifier(n_neighbors=5, p=2,

... metric='minkowski')

>>> knn.fit(X_train_std, y_train)

>>> plot_decision_regions(X_combined_std, y_combined,

... classifier=knn, test_idx=range(105,150))

>>> plt.xlabel('petal length [standardized]')

>>> plt.ylabel('petal width [standardized]')

>>> plt.show()

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 20: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Einleitung

24

Usereingaben oder Ausgaben auf der Kommandozeile werden in nicht proportio-naler Schrift fett gedruckt:

Neue Ausdrücke und wichtige Begriffe werden kursiv gedruckt. Auf dem Bildschirmauswählbare oder anklickbare Bezeichnungen, wie z.B. Menüpunkte oder Schalt-flächen, werden in der Schriftart Kapitälchen gedruckt: »Nach einem Klick auf dieSchaltfläche ABBRECHEN in der unteren rechten Ecke wird der Vorgang abgebro-chen.«

Codebeispiele herunterladen

Die Codebeispiele zum Buch finden Sie auf GitHub unter https://github.com/rasbt/python-machine-learning-book-2nd-edition.

pip3 install graphviz

Vorsicht

Warnungen oder wichtige Hinweise erscheinen in einem Kasten wie diesem.

Tipp

Und so werden Tipps und Tricks dargestellt.

Farbige Abbildungen

Alle in diesem Buch verwendeten Diagramme und Screenshots stehen unterwww.mitp.de/733 zusätzlich in einer farbigen Variante zum Download zur Ver-fügung.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 21: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

25

Kapitel 1

Wie Computer aus Daten lernen können

Unserer Ansicht nach ist das Machine Learning (maschinelles Lernen), die Anwen-dung und Wissenschaft von Algorithmen, die den Sinn von Daten erkennenkönnen, das spannendste Forschungsfeld der Informatik! Wir leben in einemZeitalter, in dem Daten im Überfluss vorhanden sind – und mit den selbstlernen-den Algorithmen des Machine Learnings können wir diese Daten in Wissenverwandeln. Dank der vielen in den letzten Jahren entwickelten Open-Source-Bi-bliotheken ist jetzt der richtige Zeitpunkt gekommen, um sich eingehend mit demThema Machine Learning zu befassen und zu erfahren, wie leistungsfähige Algo-rithmen dafür eingesetzt werden können, Muster in den Daten zu erkennen undVorhersagen über zukünftige Ereignisse zu treffen.

In diesem Kapitel werden wir die grundlegenden Konzepte und verschiedeneArten des Machine Learnings erörtern. Mit einer Einführung in die relevante Ter-minologie schaffen wir die Grundlage dafür, Verfahren des Machine Learningserfolgreich zum Lösen von in der Praxis auftretenden Problemen einzusetzen.

Dieses Kapitel hat folgende Themen zum Inhalt:

� Allgemeine Konzepte des Machine Learnings

� Die drei Arten des Machine Learnings und grundlegende Begriffe

� Die Bausteine des erfolgreichen Designs von Lernsystemen

� Installation von Python und Einrichtung einer für die Analyse von Daten undMachine Learning geeigneten Umgebung

1.1 Intelligente Maschinen, die Daten in Wissen verwandeln

In diesem Zeitalter der modernen Technologie steht eine Ressource im Überflusszur Verfügung: Unmengen von strukturierten und unstrukturierten Daten. In derzweiten Hälfte des 20. Jahrhunderts hat sich das Machine Learning als eine Teil-disziplin der Artificial Intelligence (künstliche Intelligenz) herausgebildet, bei deres um die Entwicklung selbstlernender Algorithmen geht, die Erkenntnisse ausDaten extrahieren, um bestimmte Vorhersagen treffen zu können. Das Erfordernismenschlichen Eingreifens zur manuellen Ableitung von Regeln und der Entwick-lung von Modellen anhand der Analyse großer Datenmengen erübrigt sich damit

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 22: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

26

mehr und mehr, denn das Machine-Learning-Verfahren bietet eine effiziente Alter-native zur Erfassung des in den Daten enthaltenen Wissens – die zudem die aufdiesen Daten basierende Entscheidungsfindung sowie die Aussagekraft von Vor-hersagemodellen zusehends verbessert. Dieses Verfahren wird nicht nur in derForschung immer wichtiger, es spielt auch im Alltag eine zunehmend größereRolle: Dank des Machine Learnings erfreuen wir uns stabiler E-Mail-Spamfilter,praktischer Text- und Spracherkennungssoftware, verlässlicher Suchmaschinen,kaum zu schlagender Schachcomputer und hoffentlich bald auch sicherer selbst-fahrender Autos.

1.2 Die drei Arten des Machine Learnings

In diesem Abschnitt werden wir die drei verschiedenen Gattungen des MachineLearnings betrachten: überwachtes Lernen, unüberwachtes Lernen und verstärkendesLernen. Sie werden erfahren, welche grundlegenden Unterschiede es zwischendiesen drei Varianten gibt und anhand von Beispielen allmählich ein Gespür dafürentwickeln, auf welche praktischen Aufgabenstellungen sie sich anwenden lassen:

1.2.1 Mit überwachtem Lernen Vorhersagen treffen

Das Hauptziel des überwachten Lernens ist, ein Modell anhand gekennzeichneterTrainingsdaten zu erlernen, um so Voraussagen über unbekannte oder zukünftigeDaten treffen zu können. Der Begriff »überwacht« bezieht sich hier auf Trainings-daten, die bereits mit den bekannten erwünschten Ausgabewerten (Bezeichnun-gen/Labels) gekennzeichnet sind.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 23: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.2Die drei Arten des Machine Learnings

27

Betrachten wir als Beispiel das Filtern von E-Mail-Spam. Wir können einen über-wachten Lernalgorithmus mit einer Sammlung von als Spam oder Nicht-Spamgekennzeichneten E-Mails »trainieren«, um dann vorherzusagen, zu welcher die-ser Klassen eine neue E-Mail gehört. Eine solche Einteilung in bestimmte Klassenwird als Klassifizierung bezeichnet. Eine weitere Unterkategorie des überwachtenLernens ist die Regression, bei der die Ausgabewerte im Gegensatz zur Klassifizie-rung stetig sind.

Klassifizierung: Vorhersage der Klassenbezeichnungen

Die Klassifizierung ist eine Unterkategorie des überwachten Lernens, die es zumZiel hat, anhand vorhergehender Beobachtungen die kategorialen Klassen neuerInstanzen vorherzusagen. Die Bezeichnungen dieser Klassen sind eindeutige,ungeordnete Werte, die als Gruppenzugehörigkeit der Instanzen aufgefasst wer-den können. Die soeben erwähnte E-Mail-Spamerkennung stellt ein typisches Bei-spiel für eine binäre Klassifizierung dar, denn der Algorithmus erlernt Regeln, umzwischen zwei möglichen Klassen zu unterscheiden: Spam oder Nicht-Spam.

Die Anzahl der Klassenbezeichnungen muss allerdings nicht auf zwei beschränktsein. Das von einem überwachten Lernalgorithmus erlernte Vorhersagemodellkann einer neuen, noch nicht gekennzeichneten Instanz jede Bezeichnung zuord-nen, die in den Trainingsdaten vorkommt. Ein typisches Beispiel für solch eineMehrfachklassifizierung ist die Handschrifterkennung. Hier könnten wir eine Trai-ningsdatenmenge zusammenstellen, die aus mehreren handgeschriebenen Bei-spielen aller Buchstaben des Alphabets besteht. Wenn dann ein User über einEingabegerät einen neuen Buchstaben angibt, wäre unser Vorhersagemodell inder Lage, diesen mit einer gewissen Zuverlässigkeit zu erkennen. Das System

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 24: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

28

wäre allerdings nicht imstande, irgendeine der Zahlen von null bis neun zu erken-nen, sofern diese nicht ebenfalls Bestandteil der Trainingsdaten waren.

Die folgende Abbildung illustriert das Konzept einer binären Klassifizierung, diemit 30 Beispielen trainiert wird, von denen 15 als negative Klasse (Minuszeichen)und weitere 15 als positive Klasse (Pluszeichen) gekennzeichnet sind. Die Daten-menge ist in diesem Szenario zweidimensional: Jedem Beispiel sind die beidenWerte x1 und x2 zugeordnet. Nun können wir dem überwachten Lernalgorithmuseine Regel beibringen: Die durch eine gestrichelte Linie dargestellte Grenze trenntdie beiden Klassen voneinander und ermöglicht es, neue Daten anhand der Wertevon x1 und x2 einer der beiden Klassen zuzuordnen.

Regression: Vorhersage stetiger Ergebnisse

Im vorangegangenen Abschnitt haben wir festgestellt, dass es die Aufgabe einerKlassifizierung ist, Instanzen kategoriale, ungeordnete Klassenbezeichnungenzuzuordnen. Ein zweiter Typ des überwachten Lernens ist die Vorhersage stetigerErgebnisse, die auch als Regressionsanalyse bezeichnet wird. Hierbei sind verschie-dene Regressor-Variablen (unabhängige oder erklärende Variablen) sowie eine stetigeZielvariable (Ergebnis) vorgegeben und wir versuchen, eine Beziehung zwischendiesen Variablen zu finden, um Ergebnisse vorhersagen zu können.

Nehmen wir beispielsweise an, dass wir die von Schülern bei einer Matheprüfungerreichten Punktzahlen prognostizieren möchten. Sofern es einen Zusammen-hang zwischen der mit dem Üben für die Prüfung verbrachten Zeit und denerzielten Punktzahlen gibt, könnten wir daraus Trainingsdaten für ein Modell her-leiten, das anhand der aufgewendeten Übungszeit die Punktzahlen von Schülernvoraussagt, die die Prüfung in Zukunft ebenfalls abzulegen beabsichtigen.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 25: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.2Die drei Arten des Machine Learnings

29

Die folgende Abbildung illustriert das Konzept der linearen Regression. Bei vorgege-bener unabhängiger Variablen x und abhängiger Variablen y passen wir eineGerade so an die Daten an, dass ein Maß für den Abstand der Geraden von denBeispielwerten (üblicherweise der Mittelwert der quadrierten Differenzen) mini-mal wird. Nun können wir den aus den Daten ermittelten Schnittpunkt mit dery-Achse sowie die Steigung der Geraden verwenden, um das Ergebnis für neueWerte vorherzusagen.

1.2.2 Interaktive Aufgaben durch verstärkendes Lernen lösen

Die dritte Variante des Machine Learnings ist das verstärkende Lernen. Hierbesteht die Zielsetzung darin, ein System zu entwickeln (den Agenten), das seineLeistung durch Interaktionen mit seiner Umgebung verbessert. Zu den Informa-tionen über den aktuellen Zustand der Umgebung gehört typischerweise ein soge-nanntes Belohnungssignal, daher ist das verstärkende Lernen in gewisser Weise mitdem überwachten Lernen verwandt. Allerdings handelt es sich bei diesem Feedback

Tipp

Der Begriff Regression wurde schon 1886 von Francis Galton in einem Artikelmit dem Titel Regression Towards Mediocrity in Hereditary Stature (Regression zurMitte in Bezug auf die ererbte Körpergröße) geprägt. Galton beschrieb darin dasPhänomen, dass sich bei der Bevölkerung die mittlere Abweichung von derdurchschnittlichen Körpergröße im Laufe der Zeit nicht vergrößert. Er beobach-tete, dass die Körpergröße der Eltern nicht an die Kinder vererbt wird, vielmehrnähert sich die Größe der Kinder dem Durchschnittswert an.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 26: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

30

nicht um die korrekte Klassenbezeichnung oder den richtigen Wert, sondern umein Maß dafür, wie gut die Aktion war, das durch eine Belohnungsfunktion beschrie-ben wird. Der Agent kann über Interaktionen mit seiner Umgebung durch ver-stärkendes Lernen erkennen, welche Aktionen besonders gut belohnt werden. Daskann durch schlichtes Ausprobieren (Versuch und Irrtum) oder durch bewusstePlanung geschehen.

Ein schönes Beispiel für verstärkendes Lernen ist ein Schachcomputer. Hier be-wertet der Agent nach einer Reihe von Zügen die Stellung auf dem Schachbrett(die Umgebung), und die Belohnung kann am Ende des Spiels als Sieg oder Nie-derlage definiert werden.

Es gibt eine Vielzahl verschiedener Unterarten des verstärkenden Lernens. Im All-gemeinen versucht der Agent beim verstärkenden Lernen jedoch, die Belohnungdurch eine Reihe von Interaktionen mit der Umgebung zu maximieren. JedemZustand kann eine positive (oder negative) Bewertung zugeordnet werden, unddie Belohnung kann dadurch definiert werden, dass ein Gesamtziel erreicht wird,wie z.B. das Gewinnen oder das Verlieren einer Schachpartie. Beim Schachspielkann etwa das Ergebnis eines jeden Spielzugs als ein anderer Zustand der Umge-bung aufgefasst werden.

Um beim Schach zu bleiben: Stellen Sie sich das Erreichen bestimmter Positionenauf dem Schachbrett als positives Ereignis vor – beispielsweise das Schlagen einergegnerischen Spielfigur oder das bedrohen der Dame. Andere Positionen wiede-rum werden als negativ erachtet, beispielsweise wenn eine der eigenen Spielfigu-ren beim nächsten Zug geschlagen werden kann. Nun führt natürlich nicht jederZug zum Schlagen einer Spielfigur, daher versucht das verstärkende Lernen eineReihe von Schritten zu erlernen, indem eine Belohnung aufgrund sofortigen oderverzögerten Feedbacks maximiert wird.

Dieser Abschnitt gibt zwar einen grundlegenden Überblick über das verstärkendeLernen, das Thema geht jedoch über den Rahmen dieses Buches hinaus, das sichvornehmlich mit Klassifizierung, Regressionsanalyse und Clustering befasst.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 27: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.2Die drei Arten des Machine Learnings

31

1.2.3 Durch unüberwachtes Lernen verborgene Strukturen erkennen

Beim überwachten Lernen ist die richtige Antwort beim Trainieren des Modellsbereits im Vorhinein bekannt, und beim verstärkenden Lernen definieren wir eineBewertung oder Belohnung für bestimmte Aktionen des Agenten. Beim unüber-wachten Lernen hingegen haben wir es mit nicht gekennzeichneten Daten odermit Daten unbekannter Struktur zu tun. Durch die beim unüberwachten Lerneneingesetzten Verfahren sind wir in der Lage, die Struktur der Daten zu erkunden,um sinnvolle Informationen daraus zu extrahieren, ohne dass es Hinweise aufeine Zielvariable oder eine Belohnungsfunktion gibt.

Aufspüren von Untergruppen durch Clustering

Clustering ist ein exploratives Datenanalyseverfahren, das es uns gestattet, Infor-mationen in sinnvolle Untergruppen (Cluster) aufzuteilen, ohne vorherige Kennt-nisse über die Gruppenzugehörigkeit dieser Informationen zu besitzen. Jederbei der Analyse auftretende Cluster definiert eine Gruppe von Objekten, diebestimmte Eigenschaften gemeinsam haben, sich aber von Objekten in anderenGruppen hinreichend unterscheiden. Deshalb wird das Clustering manchmalauch als »unüberwachte Klassifizierung« bezeichnet. Es ist ausgezeichnet geeig-net, um Informationen zu strukturieren und sinnvolle Beziehungen zwischen denDaten abzuleiten. Beispielsweise ermöglicht es Marketingfachleuten, Kundenanhand ihrer Interessen in Gruppen einzuordnen, um gezielte Kampagnen zuentwickeln.

Die folgende Abbildung illustriert, wie man das Clustering-Verfahren zur Organi-sation nicht gekennzeichneter Daten in drei verschiedene Gruppen verwendenkann, die jeweils ähnliche Merkmale wie x1 und x2 aufweisen.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 28: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

32

Datenkomprimierung durch Dimensionsreduktion

Die Dimensionsreduktion ist eine weitere Teildisziplin des unüberwachten Lernens.Wir haben es des Öfteren mit Daten hoher Dimensionalität zu tun (jede Beobach-tung besteht aus einer Vielzahl von Messwerten), was aufgrund der für die Lernal-gorithmen geltenden Beschränkungen von Speicherplatz und Rechenleistungeine Herausforderung darstellen kann. Bei der Vorverarbeitung von Merkmalenwird häufig eine unüberwachte Dimensionsreduktion eingesetzt, um die Datenvon sogenanntem »Rauschen« zu befreien. Dies kann allerdings zu einer Ab-schwächung der Aussagekraft bestimmter Vorhersagealgorithmen führen. DieDaten werden in kleinere Unterräume geringerer Dimensionalität aufgeteilt,wobei der Großteil der relevanten Informationen erhalten bleibt.

In manchen Fällen ist die Dimensionsreduktion auch für die Visualisierung derDaten nützlich. Beispielsweise können hochdimensionale Merkmalsmengen aufein-, zwei- oder dreidimensionale Merkmalsräume projiziert werden, um sie als3-D- oder 2-D-Streudiagramme bzw. -Histogramme darzustellen. Die Abbildungzeigt ein Beispiel, in dem eine nichtlineare Dimensionsreduktion auf eine 3-D-Punktmenge in Form einer Biskuitrolle angewendet wurde, um sie in einen zwei-dimensionalen Merkmalsraum zu transformieren.

1.3 Grundlegende Terminologie und Notation

Nachdem wir nun die drei Arten des Machine Learnings – überwachtes, unüber-wachtes und verstärkendes Lernen – erörtert haben, werden wir als Nächstes diegrundlegenden Begriffe klären, die in den folgenden Kapiteln Verwendung finden.Die Abbildung zeigt einen Auszug der Iris-Datensammlung, einem klassischen Bei-spiel für den Bereich des Machine Learnings. Dabei handelt es sich um Messdatenvon 150 Schwertlilien dreier verschiedener Arten: Iris setosa, Iris versicolor und Irisvirginica. Jedes der Blumenexemplare wird in dieser Datensammlung durch eine

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 29: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.3Grundlegende Terminologie und Notation

33

Zeile repräsentiert. In den einzelnen Spalten stehen die in Zentimetern angegebe-nen Messdaten, die wir auch als Merkmale der Datenmenge bezeichnen.

Um die Notation und Implementierung einfach aber dennoch effizient zu halten,nutzen wir die Grundlagen der linearen Algebra. In den nachfolgenden Kapitelnverwenden wir die Matrizen- und Vektornotation zur Beschreibung der Daten. Wirfolgen der üblichen Konvention, dass jedes Objekt durch eine Zeile in der Merk-malsmatrix X repräsentiert und jedes Merkmal als eigene Spalte gespeichert wird.

Die Iris-Datensammlung besteht aus 150 Datensätzen mit jeweils vier Merkmalenund kann somit als 150×4-Matrix geschrieben werden:

Ab jetzt verwenden wir ein hochgestelltes i und ein tiefgestelltes j, um auf das i-teTrainingsobjekt bzw. die j-te Dimension der Trainingsdatenmenge zu verweisen.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 30: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

34

Wir notieren Vektoren als fettgedruckte Kleinbuchstaben und Matrizen

als fettgedruckte Großbuchstaben. Um auf einzelne Elemente eines

Vektors oder einer Matrix zu verweisen, werden kursive Buchstaben benutzt (

bzw. ).

Beispielsweise verweist auf die erste Dimension des Blumenexemplars 150,die Länge des Kelchblatts. Jede Zeile der Merkmalsmatrix repräsentiert ein Blu-menexemplar und kann als vierdimensionaler Zeilenvektor geschrie-ben werden, z.B.:

Jede Merkmalsdimension ist ein 150-dimensionaler Spaltenvektor :

Die Zielvariablen (hier die Klassenbezeichnungen) werden ebenfalls als 150-dimensionale Spaltenvektoren notiert:

1.4 Entwicklung eines Systems für das Machine Learning

In den vorangegangenen Abschnitten haben wir die grundlegenden Konzepte desMachine Learnings und die drei verschiedenen Arten des Lernens erörtert. In die-sem Abschnitt befassen wir uns mit weiteren wichtigen Bestandteilen eines Sys-tems für dieses Verfahren, die den Lernalgorithmus begleiten.

Das folgende Diagramm zeigt den typischen Ablauf, der beim Machine Learningin Vorhersagemodellen zum Einsatz kommt, die wir in den folgenden Abschnittenbetrachten werden.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 31: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.4Entwicklung eines Systems für das Machine Learning

35

1.4.1 Vorverarbeitung: Daten in Form bringen

Rohdaten liegen nur selten in einer für die optimale Leistung eines Lernalgorith-mus erforderlichen Form vor, deshalb ist die Vorverarbeitung der Daten bei jedemLernalgorithmus von entscheidender Bedeutung. Im Fall der Iris-Datensammlungaus dem vorangegangenen Abschnitt könnten die Rohdaten beispielsweise alseine Reihe von Fotos der Blumenexemplare vorliegen, denen wir sinnvolle Merk-male entnehmen möchten. Das könnten etwa Grundfarbe und Tönung sowieHöhe, Länge und Breite der Pflanzen sein. Bei vielen Lernalgorithmen ist esaußerdem erforderlich, dass die ausgewählten Merkmale irgendwie normiert sind(hier müssten die Pflanzen im selben Maßstab dargestellt sein), um ein optimalesErgebnis zu erzielen. Dies wird oftmals dadurch erreicht, dass die ausgewähltenMerkmale auf ein Intervall [0,1] oder eine Standardnormalverteilung (Mittelwert0 und Standardabweichung 1) abgebildet werden, wie Sie in den nachfolgendenKapiteln noch sehen werden.

Manche der ausgewählten Merkmale könnten hochgradig korreliert und daher ingewissem Maße redundant sein. In diesen Fällen sind Verfahren zur Dimensions-reduktion nützlich, um die Merkmale auf einen Merkmalsraum geringer Dimen-sionalität abzubilden. Die Dimensionsreduktion des Merkmalraums hat die Vor-teile, dass weniger Speicherplatz benötigt wird und der Lernalgorithmus erheblichschneller arbeitet. In manchen Fällen kann eine Dimensionsreduktion auch die

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 32: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

36

Vorhersagekraft eines Modells verbessern, nämlich wenn die Datenmenge einegroße Anzahl irrelevanter Merkmale (Rauschen) aufweist, das heißt, dass sie einniedriges Signal-Rauschen-Verhältnis besitzt.

Um festzustellen, ob ein Lernalgorithmus nicht nur die Trainingsdaten ordentlichverarbeitet, sondern auch mit neuen Daten gut zurechtkommt, ist es sinnvoll, denDatenbestand nach dem Zufallsprinzip in separate Trainings- und Testdatenmen-gen aufzuteilen: Zum Trainieren und Optimieren des Lernmodells verwenden wirdie Trainingsdatenmenge, während wir die Testdatenmenge bis zum Schlusszurückhalten, um das endgültige Modell bewerten zu können.

1.4.2 Trainieren und Auswählen eines Vorhersagemodells

Wie Sie in den nachfolgenden Kapiteln noch sehen werden, sind viele verschie-dene Lernalgorithmen entwickelt worden, mit denen die unterschiedlichsten Auf-gabenstellungen erledigt werden können. An dieser Stelle ist es allerdings wichtigfestzuhalten, dass das Lernen nicht umsonst zu haben ist – so in etwa könnte manDavid Wolperts berühmte »No Free Lunch«-Theoreme zusammenfassen (The Lackof A Priori Distinctions Between Learning Algorithms, D.H. Wolpert 1996; No FreeLunch Theorems for Optimization, D.H. Wolpert und W.G. Macready, 1997). Nochbesser lässt sich dieses Konzept anhand eines berühmten Zitats veranschaulichen:»Wenn das einzige verfügbare Werkzeug ein Hammer ist, dürfte es verlockendsein, alles wie einen Nagel zu behandeln.« (Abraham Maslow, 1966). Beispiels-weise sind alle Klassifizierungsalgorithmen in irgendeiner Weise voreingenom-men und kein Klassifizierungsmodell ist anderen überlegen, wenn man nichtbestimmte Annahmen über die Aufgabenstellung macht. In der Praxis ist es dahervon entscheidender Bedeutung, wenigstens eine Handvoll verschiedener Algorith-men zu vergleichen, um das am besten funktionierende Modell zu trainieren undauszuwählen. Aber um Vergleiche zwischen verschiedenen Modellen anstellen zukönnen, müssen zunächst einmal Bewertungskriterien festgelegt werden. Eingebräuchliches Kriterium ist die Korrektklassifizierungsrate (Vertrauenswahrschein-lichkeit) des Modells, die als Quote der korrekten Klassifizierungen definiert ist.

Nun stellt sich natürlich die Frage: Wie kann man wissen, welches Modell mit denTestdaten und den »echten« Daten gut funktioniert, wenn man sie nicht bei der Auswahldes Modells verwendet, sondern bis zur Bewertung des endgültigen Modells zurückhält?Um das mit dieser Frage verbundene Problem zu lösen, können verschiedeneKreuzvalidierungsverfahren eingesetzt werden, bei denen die Trainingsdaten-menge weiter in Trainings- und Validierungsteilmengen aufgeteilt wird, um die Ver-allgemeinerungsfähigkeit des Modells abzuschätzen. Und schließlich dürfen wirauch nicht erwarten, dass die Standardparameter der Lernalgorithmen verschiede-ner Softwarebibliotheken für unsere spezielle Aufgabenstellung optimiert sind.Daher werden wir in den noch folgenden Kapiteln häufig Gebrauch von Verfahrenzur Hyperparameter-Optimierung machen, um die Leistung unseres Modells feiner

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 33: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.5Machine Learning mit Python

37

abzustimmen. Man kann sich diese Hyperparameter als Parameter vorstellen, dienicht anhand der Daten ermittelt werden, sondern als Einstellungsmöglichkeitenzur Verbesserung der Leistung, was sehr viel klarer werden wird, wenn wir uns inden folgenden Kapiteln einige dazu passende Beispiele ansehen.

1.4.3 Bewertung von Modellen und Vorhersage anhand unbekannter Dateninstanzen

Nach der Auswahl eines an die Trainingsdaten angepassten Modells können wirdie Testdatenmenge verwenden, um zu ermitteln, wie gut es mit diesen unbe-kannten Daten bei der Einschätzung des Verallgemeinerungsfehlers zurecht-kommt. Sofern die Leistung des Modells zufriedenstellend ausfällt, können wir esverwenden, um anhand neuer, zukünftiger Daten Vorhersagen zu treffen. Hiermuss angemerkt werden, dass die Parameter der vorhin erwähnten Verfahren (wieder Maßstab der Merkmalsdarstellungen oder die Dimensionsreduktion) aus-schließlich anhand der Trainingsdatenmenge ermittelt werden. Dieselben Para-meter werden später auch auf die Testdatenmenge und neue Daten angewendet –ansonsten könnte die bei den Testdaten gemessene Leistung zu optimistisch sein.

1.5 Machine Learning mit Python

Im Bereich Data Science ist Python eine der beliebtesten Programmiersprachen,daher gibt es eine Vielzahl nützlicher Bibliotheken, die von der Python-Commu-nity entwickelt wurden.

Die Performance von Interpretersprachen wie Python ist derjenigen von kompi-lierten Programmiersprachen zwar unterlegen, es gibt allerdings Erweiterungs-bibliotheken wie NumPy und SciPy, die auf maschinennahen Fortran- und C-Implementierungen beruhen, um schnelle Berechnungen mit mehrdimensiona-len Arrays auszuführen.

Bei Aufgabenstellungen des Machine Learnings werden wir zumeist auf scikit-learn zurückgreifen, eine weit verbreitete und leicht verständliche Open-Source-Bibliothek für Machine Learning.

1.5.1 Python-Pakete installieren

Python ist für die drei wichtigsten Betriebssysteme Microsoft Windows, macOSund Linux verfügbar. Das Installationsprogramm und die Dokumentation stehenunter https://www.python.org zum Herunterladen bereit.

Dieses Buch setzt mindestens die Python-Version 3.6.0 voraus, es empfiehlt sichjedoch, immer die neueste verfügbare Python-3-Version zu verwenden. Die meis-ten Codebeispiele sind möglicherweise auch mit Python-Versionen ab 2.7.13 kom-patibel. Wenn Sie Python 2.7 verwenden, sollten Sie sich über die wichtigsten

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 34: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

38

Abweichungen der beiden Python-Versionen im Klaren sein. Eine gute Zusam-menfassung der Unterschiede zwischen Python 3.5 und 2.7 finden Sie unterhttps://wiki.python.org/moin/Python2orPython3.

Die zusätzlichen Pakete, die wir im Buch benutzen werden, können mit pip instal-liert werden. Dieses Installationsprogramm gehört seit der Python-Version 3.3 zurStandardbibliothek. Weitere Informationen über pip finden Sie unter https://docs.python.org/3/installing/index.html.

Nach erfolgreicher Python-Installation können Sie mit pip wie folgt weiterePython-Pakete installieren:

Bereits installierte Pakete können mit dem --upgrade-Flag aktualisiert werden:

1.5.2 Verwendung der Python-Distribution Anaconda

Von Continuum Analytics gibt es eine sehr empfehlenswerte alternative Python-Distribution für wissenschaftliches Rechnen namens Anaconda. Hierbei handeltes sich um eine – auch für den kommerziellen Gebrauch – kostenlose Python-Dis-tribution, die alle wichtigen Python-Pakete für Data Science, Mathematik undEngineering in einem einzigen, benutzerfreundlichen und plattformunabhängi-gen Paket bündelt. Das Installationsprogramm können Sie unter http://conti-nuum.io/downloads herunterladen. Eine Kurzanleitung ist unter https://conda.io/docs/test-drive.html verfügbar.

Nach der Installation von Anaconda können Python-Pakete mit dem folgendenBefehl installiert werden:

Bereits vorhandene Pakete werden so aktualisiert:

1.5.3 Pakete für wissenschaftliches Rechnen, Data Science und Machine Learning

Im weiteren Verlauf des Buches werden wir vornehmlich NumPys mehrdimensio-nale Arrays verwenden, um Daten zu speichern und zu verarbeiten. Gelegentlichkommt auch pandas zum Einsatz, eine auf NumPy beruhende Bibliothek, dieerweiterte Funktionen für die noch komfortablere Verarbeitung von Tabellendatenbereitstellt. Zur Ergänzung des Lernerlebnisses werden wir darüber hinaus die

pip install Paketname

pip install Paketname --upgrade

conda install Paketname

conda update Paketname

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 35: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

1.6Zusammenfassung

39

sehr anpassungsfähige matplotlib-Bibliothek einsetzen, die für die Visualisie-rung und das intuitive Verständnis quantitativer Daten oft äußerst nützlich ist.

Die Versionsnummern der im Buch verwendeten Python-Pakete sind nachste-hend aufgeführt. Vergewissern Sie sich, dass Ihre installierten Pakete mindestensdiesen Versionsnummern entsprechen, damit gewährleistet ist, dass die Codebei-spiele korrekt ausgeführt werden.

� NumPy 1.12.1

� SciPy 0.19.0

� scikit-learn 0.18.1

� matplotlib 2.0.2

� pandas 0.20.1

1.6 Zusammenfassung

In diesem Kapitel haben wir einen ganz allgemeinen Blick auf das ThemaMachine Learning geworfen und uns mit dem Gesamtbild sowie den grundlegen-den Konzepten vertraut gemacht, die wir in den folgenden Kapiteln eingehenderbetrachten werden. Wir haben erfahren, dass überwachtes Lernen aus zwei wichti-gen Teilgebieten besteht: Klassifizierung und Regression. Klassifizierungsmodelleermöglichen es, Objekte bekannten Klassen zuzuordnen und wir können dieRegressionsanalyse nutzen, um stetige Werte einer Zielvariablen vorherzusagen.Das unüberwachte Lernen bietet nicht nur praktische Verfahren zum Auffindenvon Strukturen in nicht gekennzeichneten Daten, es kann darüber hinaus bei derVorverarbeitung auch zur Datenkomprimierung eingesetzt werden. Wir habenuns kurz die typische Vorgehensweise bei der Anwendung des Machine Learningsauf Problemstellungen angesehen, die bei der weiteren Erörterung und für prakti-sche Beispiele in den folgenden Kapiteln als Grundlage dient. Darüber hinaushaben wir unsere Python-Umgebung eingerichtet und die erforderlichen Paketeaktualisiert und sind nun bereit, uns Machine Learning in Aktion anzusehen.

Im weiteren Verlauf des Buches werden wir neben dem Machine Learning selbstverschiedene Verfahren zur Vorverarbeitung von Daten vorstellen, die dabei hel-fen, mit verschiedenen Lernalgorithmen die beste Leistung zu erzielen. Wir wer-den uns im gesamten Buch ziemlich ausführlich mit Klassifizierungsalgorithmenbefassen, aber auch einige Verfahren der Regressionsanalyse und des Clusteringsbetrachten.

Vor uns liegt eine interessante Tour, auf der viele leistungsfähige Verfahren desweiten Felds Machine Learning zur Sprache kommen. Wir gehen jedoch schritt-weise vor und bauen auf das in den einzelnen Kapiteln allmählich erworbene Wis-sen auf.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 36: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Kapitel 1Wie Computer aus Daten lernen können

40

Im nächsten Kapitel beginnt diese Tour mit der Implementierung einer der ers-ten Lernalgorithmen zum Zweck der Klassifizierung, die uns auf das Kapitel 3(Machine-Learning-Klassifizierer mit scikit-learn verwenden) vorbereitet, in dem wirdie scikit-learn-Bibliothek nutzen werden, um erweiterte Lernalgorithmen zu erör-tern.

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 37: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

571

Stichwortverzeichnis

1-zu-n-Beziehung 532_-Konvention (Unterstrich) 47

AAbrundungsfunktion 495Abstimmungsparameter 191AdaBoost 258AdaBoost-Algorithmus 261AdaBoost-Klassifizierer-Ensemble 263Adaline 56Adaline-Algorithmus 385Adam-Optimierer 515Agent 29Agglomeratives Clustering 368, 375Ähnlichkeitsfunktion 104Aktivierungsfunktion 42, 386

sigmoide 444Tangens hyperbolicus 445

Anaconda 38Antwortausfälle 125Ausdruck

regulärer 276Ausgabespektrum 449Ausreißer 332Average Linkage 368

BBackpropagation-Through-Time 537Bagging 253Bag-of-words-Modell 270Bayes-Klassifikator 281Belohnungsfunktion 30Belohnungssignal 29Berechnungsgraph 427, 454

Flusskontrolle 481Bestimmtheitsmaß 337Bias 93, 94Bias-Einheit 43, 388, 432Bias-Varianz-Kompromiss 94Bibliotheken 47bincount-Funktion 76Binomialkoeffizient 235

Binomialverteilung 235Boosting 258

CChancenverhältnis 81close-Methode 296Cluster

Trägheit 356Clusteranalyse 353Clustering 31

agglomeratives 368, 375divisives 368graphenbasiertes 381hierarchisches 368prototypbasiertes 354spektrales 381

Clustering-Güte 362, 363CNN

Bausteine 489Implementierung 501Implementierung mit Layers-API 521Implementierung mit Low-level-API 509mehrschichtige Architektur 507

Codierung der Klassenbezeichnung 132commit-Methode 296Complete Linkage 368connect-Methode 296contrib-Modul 439corrcoef-Funktion 325CountVectorizer-Klasse 270CSV-Datei 126, 269CUDA 425cumsum-Funktion 164cursor-Methode 296

DDataFrame-Objekt 51Daten

fehlende 125Datenanalyse

explorative 321Datenbank 295

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 38: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Stichwortverzeichnis

572

Datenprojektion 193Datenvorverarbeitung 35DBSCAN 376DecisionTreeRegressor 347Deep Learning 383DeepFace 384Deep-Neural-Network (DNN) 383DeepSpeech 384Dendrogramm 368, 373Deserialisierung 293Dichte 376Differenzierbarkeit 57Differenzieren

automatisches 414Dimensionalität 32Dimensionsreduktion 32, 147Distanzmaß

euklidisches 355Distanzmatrix 369Divisives Clustering 368Dokumenthäufigkeit

inverse 272dropna-Methode 127Dropout 505Dummy-Merkmal 134Dünnbesetzter Merkmalsvektor 271

EEigenvektor 163Eigenwert 163Einbettung 545Eingabekanal 502Elastic-Net-Verfahren 339Ellenbogenkriterium 362Emoticon 275Ensemble 116

Fehlerquote 236Ensemble Learning 233Ensemblemethoden 233Entropie 108, 346Entscheidungsbaum 107Entscheidungsbaum-Regression 346Entscheidungsbereiche 78Epoche 46Erklärende Variable 318Ersetzung (mit/ohne) 116Euklidische Distanz 355Euklidische Metrik 121execute-Methode 296Explorative Datenanalyse (EDA) 321Extraktion 159

FF1-Maß 223Falsch-Positiv-Rate 222Faltung

diskrete 491eindimensionale 492Zero-Padding 494zweidimensionale 497

Farbkanal 502FCM-Algorithmus 360Feedforward-Netz 387Fehlende Daten 125Fehlerquote 222, 235Fehlklassifizierung 53Fehlklassifizierungsrate 77Feld

rezeptives 490Filter 492fit_transform-Methode 133fit-Methode 50, 129Flask 297, 298floor-Funktion 495Fluch der Dimensionalität 122, 151, 380Flusskontrolle 481Formularvalidierung 300, 301Full-Padding 494Funktion

logistische 82, 445Fuzziness-Koeffizient 361Fuzzy-C-Mean-Algorithmus (FCM) 359

GGalton, Francis 29Gaußklammer 495Gaußscher Kernel 104Generator 437get_dummies-Methode 135Gewichtung 238Gewichtungsvektor 45Gini-Koeffizient 108Global Interpreter Lock (GIL) 423Glorot-Initialisierung 442, 462Google Translate 384Gradientenabstiegsverfahren 57

als Stapelverarbeitung 59stochastisches 66

Grafikprozessor (GPU) 424Graphenbasiertes Clustering 381GraphViz 113Graustufenkanal 502

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 39: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Stichwortverzeichnis

573

HHalbmondform 378Hamlet 556HashingVectorizer 283Hauptkomponentenanalyse 159, 168Heatmap 325, 373Heaviside-Funktion 43, 386Hierarchisches Clustering 368Hoff, Tedd 56Holdout-Methode 205Hyperebene 103Hyperparameter 37, 62, 205, 216, 387

IIMDb-Datensammlung 268Imputer-Klasse 128Informationsgewinn 107, 346Inlier 332Interpolationsverfahren 128Inverse Dokumenthäufigkeit 272inverse_transform-Methode 133Iris-Datensammlung 32isnull-Methode 126

JJinja2 302

KKante

rekurrente 533Keras 434, 439Kernel 104Kernel-Funktion 104, 182Kernel-Hauptkomponentenanalyse 181Kernel-Methode 102KernelPCA-Klasse 197Kernel-SVM 101Kernel-Trick 104, 183Kernobjekt 376Kettenregel (Ableitung) 413Klasse 28Klassenverteilung

unausgewogene 228Klassifizierer

Fehlertypen 220schwacher 259

Klassifizierer-Attribute 251Klassifizierung 27

binäre 27, 42dichotome 42unüberwachte 31

Klassifizierungsfehler 108Klassifizierungsgüte 220k-Means++-Algorithmus 359k-Means-Algorithmus 353KMeans-Klasse 356k-Nearest-Neighbor-Algorithmus 119KNN Siehe k-Nearest-Neighbor-AlgorithmusKonfusionsmatrix 220Konvention (Unterstrich) 47Konvergenz 418Konvex 57Konvolutionales neuronales Netz Siehe CNNKonvolutionsschicht 491Kopplungsmatrix 370Korrektklassifizierungsrate 36, 77, 222Korrelationskoeffizient 323Korrelationsmatrix 323, 325Kovarianz 162Kovarianzmatrix 162, 323Kreuzentropie 442Kreuzkorrelation 493Kreuzvalidierung

2-fache 2055x2- 218k-fache 206stratifizierte k-fache 208verschachtelte 218

LL1-Regularisierung 141, 143L2-Regularisierung 94, 141L2-Strafterm 142LabelEncoder-Klasse 133LabelEncoder-Objekt 202Lancaster-Stemmer 278LASSO 339LatentDirichletAllocation-Klasse 286Latente Dirichlet-Allokation 286Lazy-Learning-Algorithmus 119LDA Siehe Lineare DiskriminanzanalyseLDA-Klasse 180Leave-One-Out-Kreuzvalidierung (LOO) 208Lebensbedingungen-Datensammlung 320Leerraum 277Lemmata 278Lemmatisierung 278Lernen

instanzbasiertes 119überwachtes 26unüberwachtes 26, 31, 353verstärkendes 26

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 40: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Stichwortverzeichnis

574

Lernkurve 212Lernrate 44, 62

adaptive 66LIBLINEAR-Bibliothek 100LIBSVM-Bibliothek 101linalg.eig-Funktion 163Lineare Diskriminanzanalyse (LDA) 171Lineare Regression 29, 318Lineare Trennbarkeit 46, 56load-Funktion 398LogisticRegression-Klasse 91Logistische Funktion 82, 445Logistische Regression 81logit-Funktion 81Log-Likelihood-Funktion 85Lösch-Gate 539LSTM

Ausgabe-Gate 539Eingabe-Gate 539Lösch-Gate 539Speicherzelle 538Zellzustand 538

LSTM (Long Short-Term Memory) 538

MMachine Learning

Anwendungen 26Makro-Mittelwertbildung 227Manhattan-Metrik 122map-Methode 132Margin 97matplotlib 39Matrix-Vektor-Multiplikation 61Max-Pooling 500McCulloch, Warren 41, 383mean-Methode 65Mean-Pooling 500Median der absoluten Abweichungen (MAD)

333Medianwert 128Medoid 354Mehrfachklassifizierung 27, 227Mehrheit

absolute 233relative 234

Mehrheitsentscheidung 120, 233Mehrheitsentscheidungs-Klassifizierer 237Merkmal 33

Auswahl 140, 147Bedeutung 154

Extrahierung 147Extraktion 159Interpretierbarkeit 156nominales 130ordinales 130

Merkmalshierarchie 490Merkmalskarte 503Merkmalstransformation 165Merkmalsvektor

dünnbesetzter 270Methode der kleinsten Quadrate 326metric-Parameter 122metrics-Modul 77, 223Microframework 297Mikro-Mittelwertbildung 227Mini-Batch Learning 67, 406, 419Minkowski-Metrik 122Min-Max-Skalierung 138Mit Ersetzung 116Mittelwertimputation 128Mittelwertvektor 174Mittlere quadratische Abweichung 337, 469MNIST-Datensammlung 393Modalwert 238model_selection-Modul 75Modellauswahl 205Modellbewertung 207Modul

contrib 439TensorBoard 484

multiprocessing-Bibliothek 424

NNaN (Not a Number) 125Natural Language Processing (NLP) 267Natural Language Toolkit (NLTK) 277Negative Klasse 28Nettoeingabe 42Neuron 41

adaptives lineares 41Neuronales Netz 383

Konvergenz 418N-Gramm 272NLP Siehe Natural Language ProcessingNominales Merkmal 130Normalgleichung 332Normierung 35, 138n-zu-1-Beziehung 531n-zu-n-Beziehung 532

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 41: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Stichwortverzeichnis

575

OOhne Ersetzung 116One-hot-Codierung 134, 388OneHotEncoder-Klasse 134One-vs.-All (OvA) 51One-vs-all-Verfahren (OvA) 388Online Learning 67, 101OpenCL 425Opinion Mining 267Ordinales Merkmal 130Out-of-Core Learning 282

PPadding 492, 494pairplot-Funktion 321pandas 38partial_fit-Methode 67PCA (Principal Component Analysis) Siehe

HauptkomponentenanalysePCA-Klasse 168permutation-Methode 70Perzeptron 41, 46

mehrschichtiges 387Perzeptron-Lernregel 44pickle-Modul 291pip (Installationsprogramm) 38Pipeline 201, 203, 217Pitts, Walter 41, 383Platzhalter 430, 458

Daten zuführen 459plot_decision_regions-Methode 79Pooling-Größe 500Pooling-Schicht 491Porter-Stemmer-Algorithmus 277Positive Klasse 28predict_proba-Methode 92predict-Methode 50, 77, 129preprocessing-Modul 76Problem des explosionsartig wachsenden

Gradienten 537Problem des verschwindenden Gradienten

387, 449, 537Projektionsmatrix 165Pruning 108pydotplus 114PythonAnywhere 312Python-Pakete 37

RRandobjekt 376Random Forest 116, 348

RandomForestClassifier 154Random-Forest-Klassifizierer 118Random-Forest-Regression 346, 348Randomisierte Suche 218Rang eines Tensors 427, 454RANSAC-Algorithmus 333Rastersuche 216Rauschobjekt 377RBF-Kernel 104read_csv-Funktion 126Receiver-Operating-Characteristic-

Diagramme (ROC-Diagramme) 224Regex-Bibliothek 275Regression 27

Gradientenabstiegsverfahren 90lineare 29, 318logistische 81multiple 319polynomiale 340

Regressionsanalyse 28Regressionsgerade 318Regressionsmodell

Leistung 335multiples 335Random Forest 349

Regulärer Ausdruck 275, 276Regularisierung 94, 338

Dropout 505Regularisierungsparameter 94Regularisierungsstärke 216Regularisierungsterm 411Rekurrente Kante 533Rekurrentes neuronales Netz Siehe RNNReLU (Rektifizierte Lineareinheit) 449Residualdiagramm 336Residuum 318Rezeptives Feld 490Richtig-Positiv-Rate 222Ridge-Regression 339RNN

Aktivierung 534Architektur 533Datenaufbereitung 541Datenbereinigung 556Implementierung mit TensorFlow 540Korrektklassifizierungsrate 555Modell erstellen 547Wahrscheinlichkeit 565Zeitschritt 534

RNN (Rekurrentes neuronales Netz) 529ROC AUC 224

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 42: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Stichwortverzeichnis

576

ROC-Kurve 224Rosenblatt, Frank 42

SSame-Padding 494savez-Funktion 398SBS-Algorithmus 148Schätzer 129, 204Schlupfvariable 98Schwellenwertfunktion 386scikit-learn-API 74score-Methode 78Seaborn-Bibliothek 321select-Befehl 296SelectFromModel-Objekt 156Sentimentanalyse 267Sequential Backwards Selection Siehe SBS-

AlgorithmusSequenz

Eigenschaften 530Repräsentierung 530

SequenzmodellierungKategorien 531

Serialisierung 291, 475SGDClassifier-Klasse 101shuffle-Methode 67Sigmoidfunktion 82, 444Signal 492Silhouettenanalyse 363Silhouettendiagramm 365Silhouettenkoeffizient 363Single Linkage 368Skalarprodukt 50Soft-Margin-Klassifizierung 98softmax-Funktion 447Spektrales Clustering 381Sprungfunktion 43SQLite 295SQLite Manager (Browser-Plugin) 296sqlite3-Bibliothek 295Stacking 252Stammformreduktion 277Standardisierung 64, 138StandardScaler-Klasse 76std-Methode 65Stemming 277Stetigkeit 317Stimmungsanalyse 267, 541Stoppwort 278

Straffunktion 57, 84, 85, 385Fehleroberfläche 413logistische 410

Strafterm 142stream_docs-Funktion 283Streudiagrammmatrix 321Streumatrix 174StringIO-Funktion 126sum-Methode 126Support Vector Machine (SVM) 96, 351SVM Siehe Support Vector Machine

TTangens hyperbolicus 445, 448Tensor 427

Rang 454TensorBoard 484TensorFlow

Berechnungsgraph 427, 456Geltungsbereich von Variablen 465Generator 466GPU-Unterstützung 426Grundlagen 425High-level-API 434Keras-API 434Knoten 457Layers-API 434Low-level-API 430Merkmale 453Modell speichern und wiederherstellen

474Objekt im Graphen ausführen 473Operation 456Platzhalter 430, 458Regressionsmodell 469run-Methode 458Sitzung 457Tensor 454Tensor transformieren 477Trainingsleistung 423Variable 430, 461Variableninitialisierung 464Wiederverwendung von Variablen 466

TensorShape-Klasse 455Tensor-Transformation 477Testdatenmenge 205Textbereinigung 275Textfeld 301tf.bool 525

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733

Page 43: Machine Learning mit Python und Scikit-learn und TensorFlow · Inhaltsverzeichnis 6 2.3 Adaptive lineare Neuronen und die Konvergenz des Lernens . . . . . . 56 2.3.1 Straffunktionen

Stichwortverzeichnis

577

tf.case 483tf.rank 455Tf-idf-Maß 272toarray-Methode 134Token 270Tokenisierung 277Tonalität 267Topic Modeling 285train_test_split-Funktion 137Trainingsdatenmenge 205Transformer 204Transformer-Klasse 129transform-Methode 129Transponierte 43Trefferquote 223Trennbarkeit

lineare 56

UÜberanpassung 78, 93, 140, 505Überwachtes Lernen 26Unteranpassung 93, 505Unüberwachtes Lernen 26, 353

VValidierungsdatenmenge 205Validierungskurve 214Validierungsmenge 151Variable

erklärende 28, 318erklärte 318

Varianz 93, 94Varianzreduktion 347Vektorisierung 50Verallgemeinerungsfehler 206Verstärkendes Lernen 26

Vertrauenswahrscheinlichkeit 36Vokabular 270Vorkommenshäufigkeit 271, 272Vorverarbeitung 35, 138Vorwärtspropagation 390Vorzeichenfunktion 235

WWahrheitsmatrix 220Wahrscheinlichkeit

bedingte 82Ward Linkage 368Webanwendung 298Wein-Datensammlung 136while-Schleife 484Whitespace 277Widrow, Bernard 56Wisconsin-Brustkrebs-Datensammlung 202word2vec 285Wortrelevanz 272Wortsequenz 541WTForms-Bibliothek 300

XXavier-Initialisierung 442, 462

ZZeitstempel 296Zentroid 354Zero-Padding 492Zielfunktion 57Zielvariable 28, 318Zufallsgenerator 67Zugehörigkeitsgrad 361Zuordnungsfunktion 103

© des Titels »Machine Learning mit Python und Scikit-learn und TensorFlow« (ISBN 9783958457331) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/733