Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen ....

38

Transcript of Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen ....

Page 1: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API
Page 2: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

5

Inhaltsverzeichnis

Vorwort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Über den Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Danksagungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Über die Korrektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1 Wie Computer aus Daten lernen können . . . . . . . . . . . . . . . . . . . . . . 231.1 Intelligente Maschinen, die Daten in Wissen verwandeln . . . . . . . . . 231.2 Die drei Arten des Machine Learnings . . . . . . . . . . . . . . . . . . . . . . . . 24

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

erkennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.3 Grundlegende Terminologie und Notation . . . . . . . . . . . . . . . . . . . . . 291.4 Entwicklung eines Systems für das Machine Learning . . . . . . . . . . . 31

1.4.1 Vorverarbeitung: Daten in Form bringen. . . . . . . . . . . . . . . . 321.4.2 Trainieren und Auswählen eines Vorhersagemodells. . . . . . 321.4.3 Bewertung von Modellen und Vorhersage anhand unbe-

kannter Dateninstanzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331.5 Machine Learning mit Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

1.5.1 Python-Pakete installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

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

Machine Learnings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.2 Implementierung eines Perzeptron-Lernalgorithmus in Python . . . 43

2.2.1 Trainieren eines Perzeptron-Modells auf die Iris-Datensammlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

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

minimieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 3: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Inhaltsverzeichnis

6

2.3.2 Implementierung eines adaptiven linearen Neurons in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.3.3 Large-scale Machine Learning und stochastisches Gradientenabstiegsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3 Machine-Learning-Klassifizierer mit scikit-learn verwenden . . . . . . . 673.1 Auswahl eines Klassifizierungsalgorithmus . . . . . . . . . . . . . . . . . . . . 673.2 Erste Schritte mit scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3.2.1 Trainieren eines Perzeptrons mit scikit-learn . . . . . . . . . . . . 683.3 Klassenwahrscheinlichkeiten durch logistische Regression

modellieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.3.1 Logistische Regression und bedingte Wahrscheinlich-

keiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.3.2 Gewichtungen der logistischen Straffunktion ermitteln . . . . 773.3.3 Trainieren eines logistischen Regressionsmodells mit

scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783.3.4 Überanpassung durch Regularisierung verhindern . . . . . . . 81

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

Schlupfvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863.4.3 Alternative Implementierungen in scikit-learn . . . . . . . . . . . 88

3.5 Nichtlineare Aufgaben mit einer Kernel-SVM lösen . . . . . . . . . . . . . 893.5.1 Mit dem Kernel-Trick Hyperebenen in höherdimensio-

nalen Räumen finden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913.6 Lernen mit Entscheidungsbäumen . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

3.6.1 Maximierung des Informationsgewinns: Daten ausreizen . . . 953.6.2 Konstruktion eines Entscheidungsbaums . . . . . . . . . . . . . . . 1003.6.3 Schwache Klassifizierer mit Random Forests zu besseren

kombinieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.7 k-Nearest-Neighbor: Ein Lazy-Learning-Algorithmus . . . . . . . . . . . . . 1043.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

4 Gut geeignete Trainingsdatenmengen: Datenvorverarbeitung . . . . . 1094.1 Umgang mit fehlenden Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

4.1.1 Exemplare oder Merkmale mit fehlenden Werten entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 4: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Inhaltsverzeichnis

7

4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.1.3 Die Schätzer-API von scikit-learn . . . . . . . . . . . . . . . . . . . . . . 112

4.2 Handhabung kategorialer Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.2.1 Zuweisung von ordinalen Merkmalen . . . . . . . . . . . . . . . . . . 1144.2.2 Kodierung der Klassenbezeichnungen . . . . . . . . . . . . . . . . . . 115

4.2.3 One-hot-Kodierung der nominalen Merkmale. . . . . . . . . . . . 1164.3 Aufteilung einer Datensammlung in Trainings- und Testdaten . . . . 1184.4 Anpassung der Merkmale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.5 Auswahl aussagekräftiger Merkmale . . . . . . . . . . . . . . . . . . . . . . . . . . 122

4.5.1 Dünnbesetzte Lösungen durch L1-Regularisierung . . . . . . . 1224.5.2 Algorithmen zur sequenziellen Auswahl von

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

Forests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1344.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5 Datenkomprimierung durch Dimensionsreduktion . . . . . . . . . . . . . 1375.1 Unüberwachte Dimensionsreduktion durch Hauptkomponenten-

analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375.1.1 Totale Varianz und Varianzaufklärung. . . . . . . . . . . . . . . . . . 1395.1.2 Merkmalstransformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1435.1.3 Hauptkomponentenanalyse mit scikit-learn . . . . . . . . . . . . . 145

5.2 Überwachte Datenkomprimierung durch lineare Diskriminanz-analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1485.2.1 Berechnung der Streumatrizen . . . . . . . . . . . . . . . . . . . . . . . . 1505.2.2 Auswahl linearer Diskriminanten für den neuen Merkmals-

unterraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1525.2.3 Projektion in den neuen Merkmalsraum . . . . . . . . . . . . . . . . 1555.2.4 LDA mit scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

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

in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1625.3.3 Projizieren neuer Datenpunkte . . . . . . . . . . . . . . . . . . . . . . . . 1695.3.4 Kernel-Hauptkomponentenanalyse mit scikit-learn . . . . . . . 173

5.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 5: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Inhaltsverzeichnis

8

6 Bewährte Verfahren zur Modellbewertung und Hyperparameter-Abstimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

6.1 Arbeitsabläufe mit Pipelines optimieren . . . . . . . . . . . . . . . . . . . . . . . 1756.1.1 Die Wisconsin-Brustkrebs-Datensammlung . . . . . . . . . . . . . 1756.1.2 Transformer und Schätzer in einer Pipeline kombinieren . . . 176

6.2 Beurteilung des Modells durch k-fache Kreuzvalidierung . . . . . . . . . 1786.2.1 2-fache Kreuzvalidierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1786.2.2 k-fache Kreuzvalidierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

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

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

Validierungskurven erkennen . . . . . . . . . . . . . . . . . . . . . . . . . 1876.4 Feinabstimmung eines Lernmodells durch Rastersuche . . . . . . . . . . 189

6.4.1 Hyperparameterabstimmung durch Rastersuche . . . . . . . . . 1906.4.2 Algorithmenauswahl durch verschachtelte Kreuz-

validierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1916.5 Verschiedene Kriterien zur Leistungsbewertung . . . . . . . . . . . . . . . . 193

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

Klassifizierungsmodells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1956.5.3 Receiver-Operating-Characteristic-Diagramme . . . . . . . . . . . 1976.5.4 Bewertungskriterien für Mehrfachklassifizierungen. . . . . . . 200

6.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

7 Kombination verschiedener Modelle für das Ensemble Learning . . . 2037.1 Ensemble Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2037.2 Implementierung eines einfachen Mehrheitsentscheidungs-

Klassifizierers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2077.2.1 Kombination mehrerer Klassifizierungsalgorithmen per

Mehrheitsentscheidung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2137.3 Bewertung und Abstimmung des Klassifizierer-Ensembles . . . . . . . 2167.4 Bagging: Klassifizierer-Ensembles anhand von Bootstrap-

Stichproben entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2227.5 Schwache Klassifizierer durch adaptives Boosting verbessern. . . . . . 2277.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

8 Machine Learning zur Analyse von Stimmungslagen nutzen . . . . . . 2378.1 Die IMDb-Filmdatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 6: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Inhaltsverzeichnis

9

8.2 Das Bag-of-words-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2398.2.1 Wörter in Merkmalsvektoren umwandeln . . . . . . . . . . . . . . . 2408.2.2 Beurteilung der Wortrelevanz durch das Tf-idf-Maß . . . . . . 2428.2.3 Textdaten bereinigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448.2.4 Dokumente in Token zerlegen . . . . . . . . . . . . . . . . . . . . . . . . 246

8.3 Ein logistisches Regressionsmodell für die Dokumentklassi-fizierung trainieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

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

8.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

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

9.1 Serialisierung angepasster Schätzer mit scikit-learn . . . . . . . . . . . . . 2559.2 Einrichtung einer SQLite-Datenbank zum Speichern von Daten . . . 2589.3 Entwicklung einer Webanwendung mit Flask . . . . . . . . . . . . . . . . . . 261

9.3.1 Die erste Webanwendung mit Flask . . . . . . . . . . . . . . . . . . . . 2619.3.2 Formularvalidierung und -ausgabe . . . . . . . . . . . . . . . . . . . . . 263

9.4 Der Filmbewertungsklassifizierer als Webanwendung . . . . . . . . . . . 2679.5 Einrichtung der Webanwendung auf einem öffentlich

zugänglichen Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2759.5.1 Updaten des Filmbewertungsklassifizierers . . . . . . . . . . . . . 276

9.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

10 Vorhersage stetiger Zielvariablen durch Regressionsanalyse . . . . . . 27910.1 Ein einfaches lineares Regressionsmodell. . . . . . . . . . . . . . . . . . . . . . 27910.2 Die Lebensbedingungen-Datensammlung . . . . . . . . . . . . . . . . . . . . . 280

10.2.1 Visualisierung der wichtigen Eigenschaften einer Datenmenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

10.3 Implementierung eines linearen Regressionsmodells mit der Methode der kleinsten Quadrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28610.3.1 Berechnung der Regressionsparameter mit dem

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

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

RANSAC-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29310.5 Bewertung der Leistung linearer Regressionsmodelle . . . . . . . . . . . . 29510.6 Regularisierungsverfahren für die Regression einsetzen. . . . . . . . . . 299

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 7: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Inhaltsverzeichnis

10

10.7 Polynomiale Regression: Umwandeln einer linearen Regression in eine Kurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30010.7.1 Modellierung nichtlinearer Zusammenhänge in der

Lebensbedingungen-Datensammlung . . . . . . . . . . . . . . . . . . 30210.7.2 Handhabung nichtlinearer Beziehungen mit Random

Forests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30610.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

11 Verwendung nicht gekennzeichneter Daten: Clusteranalyse . . . . . . . 31311.1 Gruppierung von Objekten nach Ähnlichkeit mit dem k-Means-

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31311.1.1 Der k-Means++-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 31711.1.2 »Harte« und »weiche« Clustering-Algorithmen . . . . . . . . . . 31911.1.3 Die optimale Anzahl der Cluster mit dem Ellenbogen-

kriterium ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32211.1.4 Quantifizierung der Clustering-Güte mit Silhouetten-

diagrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32311.2 Cluster als hierarchischen Baum organisieren . . . . . . . . . . . . . . . . . . 328

11.2.1 Hierarchisches Clustering einer Distanzmatrix . . . . . . . . . . . 32911.2.2 Dendrogramme und Heatmaps verknüpfen . . . . . . . . . . . . . 33311.2.3 Agglomeratives Clustering mit scikit-learn . . . . . . . . . . . . . . 335

11.3 Bereiche hoher Dichte mit DBSCAN ermitteln. . . . . . . . . . . . . . . . . . 33511.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

12 Künstliche neuronale Netze für die Bilderkennung trainieren . . . . . 34312.1 Modellierung komplexer Funktionen mit künstlichen neuronalen

Netzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34312.1.1 Einschichtige neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . 34412.1.2 Mehrschichtige neuronale Netzarchitektur . . . . . . . . . . . . . . 34612.1.3 Aktivierung eines neuronalen Netzes durch Vorwärts-

propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34912.2 Klassifizierung handgeschriebener Ziffern . . . . . . . . . . . . . . . . . . . . . 351

12.2.1 Die MNIST-Datensammlung. . . . . . . . . . . . . . . . . . . . . . . . . . 35212.2.2 Implementierung eines mehrschichtigen Perzeptrons . . . . . 357

12.3 Trainieren eines künstlichen neuronalen Netzes . . . . . . . . . . . . . . . . 36512.3.1 Berechnung der logistischen Straffunktion . . . . . . . . . . . . . . 36512.3.2 Trainieren neuronaler Netze durch Backpropagation . . . . . . 368

12.4 Ein Gespür für die Backpropagation entwickeln . . . . . . . . . . . . . . . . . 37112.5 Debugging neuronaler Netze durch Gradientenprüfung . . . . . . . . . . 373

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 8: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Inhaltsverzeichnis

11

12.6 Konvergenz in neuronalen Netzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37912.7 Weitere neuronale Netzarchitekturen . . . . . . . . . . . . . . . . . . . . . . . . . 380

12.7.1 Konvolutionale neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . 38012.7.2 Rekurrente neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . . . 382

12.8 Abschließende Bemerkungen zur Implementierung neuronaler Netze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

12.9 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

13 Parallelisierung des Trainings neuronaler Netze mit Theano . . . . . . 38513.1 Erstellen, Kompilieren und Ausführen von Ausdrücken mit

Theano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38513.1.1 Was genau ist Theano? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38713.1.2 Erste Schritte mit Theano . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38813.1.3 Theano konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38913.1.4 Mit Array-Strukturen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . 39113.1.5 Zusammengefasst: Lineare Regression als Beispiel . . . . . . . 394

13.2 Auswahl der Aktivierungsfunktionen neuronaler Feedforward-Netze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39813.2.1 Die logistische Funktion kurz zusammengefasst . . . . . . . . . 39813.2.2 Wahrscheinlichkeiten bei der Mehrfachklassifizierung

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

hyperbolicus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40213.3 Effizientes Training neuronaler Netze mit Keras . . . . . . . . . . . . . . . . 40413.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 9: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

13

Vorwort

Wir leben in einer Welt, in der der Umgang mit Datenfluten alltäglich gewordenist. Nach jüngsten Schätzungen werden Tag für Tag 2,5 Trillionen (1018) Byte anDaten erzeugt. Das ist eine derart große Menge, dass mehr als 90 Prozent allerheutzutage gespeicherten Informationen allein im letzten Jahrzehnt erzeugt wur-den. Leider ist ein Großteil dieser Informationen für Menschen unbrauchbar –entweder entziehen sich die Daten herkömmlichen analytischen Methoden, odersie sind schlicht und einfach so unermesslich umfangreich, dass unser beschränk-ter Verstand sie nicht erfassen kann.

Durch Machine Learning, also das maschinelle Lernen, ermöglichen wir es Com-putern, ein ansonsten undurchdringbares Datendickicht zu verarbeiten, daraus zulernen und nützliche Einsichten zu gewinnen. Von den gewaltigen Supercompu-tern, mit denen Googles Suchmaschine betrieben wird, bis hin zum Smartphonein der Hemdtasche, sind wir im Alltag auf das Machine Learning angewiesen – oftsogar, ohne uns dessen bewusst zu sein.

Als den modernen Pionieren in der abenteuerlichen neuen Big-Data-Welt obliegtes uns, das Machine Learning zu erforschen. Was genau ist dieses maschinelleLernen und wie funktioniert es? Wie kann ich es einsetzen, um einen Blick aufUnbekanntes zu erhaschen, ein Unternehmen zu betreiben oder einfach nur he-rauszufinden, was die überwiegende Mehrheit der User im Internet von meinemLieblingsfilm hält? All dies und mehr wird mein guter Freund und Kollege Sebas-tian Raschka in den folgenden Kapiteln erörtern.

Wenn er nicht gerade meinen reizbaren Hund zähmt, widmet sich Sebastian in sei-ner Freizeit unermüdlich der Community, die Open-Source-Software für dasMachine Learning entwickelt. In den vergangenen Jahren hat Sebastian Dutzendebeliebter Tutorials erstellt, die sich mit den Themen Machine Learning und Daten-visualisierung in Python befassen. Darüber hinaus hat er bedeutende Beiträge zuverschiedenen quelloffenen Python-Paketen geleistet, von denen einige inzwischenBestandteil des typischen Workflows beim Machine Learning geworden sind.

Ich bin mir sicher, dass Sebastians Einsichten in die Welt des Machine Learningsdank seiner unbestreitbaren Expertise auf diesem Gebiet für die Leser von un-schätzbarem Wert sind, egal, über wie viel Erfahrung sie bereits verfügen. Ichkann dieses Buch allen Lesern, die sich ein besseres und praxisorientiertes Ver-ständnis vom Machine Learning wünschen, nur wärmstens empfehlen.

Dr. Randal S. Olson Forscher für künstliche Intelligenz und Machine Learning an der University of Pennsylvania

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 10: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

14

Über den Autor

Sebastian Raschka ist Doktorand an der Michigan State University und entwickeltneue Rechenverfahren im Bereich der Bioinformatik. Auf GitHub wurde er vonAnalytics Vidhya als einer der einflussreichsten Data Scientists der Gegenwarteingestuft. Er verfügt über jahrelange Erfahrung in der Python-Programmierungund leitete mehrere Seminare über praktische Data-Science-Anwendungen undMachine Learning. Seine Erfahrungen auf den Gebieten Data Science, MachineLearning und Python-Programmierung haben ihn dazu motiviert, dieses Buch zuschreiben, um es auch Leuten ohne Kenntnisse in Bezug auf maschinelle Lern-verfahren zu ermöglichen, datengesteuerte Lösungen zu entwickeln.

Darüber hinaus leistete er aktiv Beiträge zu Open-Source-Projekten und die vonihm implementierten Verfahren werden inzwischen erfolgreich in Mustererken-nungswettbewerben wie z.B. Kaggle eingesetzt. In seiner Freizeit entwickelt erVorhersagemodelle für Sportergebnisse oder treibt selbst Sport, wenn er nichtgerade vor dem Computer sitzt.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 11: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

15

Danksagungen

Ich möchte meinen Professoren Arun Ross und Pang-Ning Tan sowie vielen ande-ren danken, die mich inspiriert haben. Sie waren es, die mein großes Interessean den Themen Mustererkennung, Machine Learning und Data Mining geweckthaben.

Außerdem möchte ich bei dieser Gelegenheit auch der großartigen Python-Com-munity und den Entwicklern der Open-Source-Pakete meinen Dank aussprechen,die mir dabei geholfen haben, die perfekte Umgebung für wissenschaftliche For-schung und Data Science einzurichten.

Mein besonderer Dank gilt den Hauptentwicklern von scikit-learn. Als jemand,der selbst aktiv an diesem Projekt beteiligt war, hatte ich das Vergnügen, mit tollenLeuten zusammenarbeiten zu dürfen, die sich nicht nur mit Machine Learningauskennen, sondern auch hervorragende Programmierer sind.

Und zum Schluss möchte ich mich ebenso bei Ihnen, den Lesern, für das Inte-resse an diesem Buch bedanken. Ich kann nur hoffen, dass mein Enthusiasmusein wenig ansteckend ist und die Communitys, die sich mit Python und MachineLearning befassen, weiteren Zulauf bekommen.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 12: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

16

Über die Korrektoren

Richard Dutton begann schon als Achtjähriger damit, den ZX Spectrum zu pro-grammieren – und seine Besessenheit dafür führte letztlich dazu, dass er sich miteiner Vielzahl verschiedener Technologien befasste und die unterschiedlichstenPosten bekleidete.

Nachdem er bei Microsoft und als leitender Angestellter bei Barclays tätig gewesenist, widmet er sich derzeit einer Mischung aus Python, Machine Learning sowieder Verwaltung von Kryptowährungen.

Wenn er nicht gerade vor dem Computer sitzt, findet man ihn in der Sporthalleoder zu Hause mit einem Glas Wein und seinem iPhone in der Hand. Er nenntdas »seinen Ausgleich«.

Dave Julian ist IT-Berater und Lehrer mit mehr als 15 Jahren Berufserfahrung.Außerdem war er auch als Techniker, Projektmanager, Programmierer und Webent-wickler tätig. Derzeit beschäftigt er sich unter anderem mit der Entwicklung einesAnalyseinstruments, das Teil einer Strategie zur Bekämpfung von Pflanzenschäd-lingen in Gewächshäusern ist. Er ist sehr an biotechnologischen Themen interes-siert und glaubt fest daran, dass intelligente Maschinen dabei helfen können,einige der vordringlichsten Probleme dieser Welt zu lösen.

Vahid Mirjalili promovierte an der Michigan State University als Maschinen-bauingenieur, wo er neue Verfahren zur Verfeinerung von Proteinstrukturen mit-tels dynamischer Molekülsimulationen entwickelte. Durch die Kombination seinerKenntnisse auf den Gebieten Statistik, Data Mining und Physik konnte er leis-tungsfähige datengesteuerte Ansätze entwickeln, die ihm und seiner Forschungs-gruppe 2012 und 2014 den Sieg bei CASP (Critical Assessment of Techniques forProtein Structure Prediction) einbrachten, einem weltweiten Wettbewerb zur Vor-hersage und Verfeinerung von Proteinstrukturen.

Während er seine Doktorarbeit verfasste, trat er dem Fachbereich Informatik undIngenieurswesen der Michigan State University bei, um sich auf das FachgebietMachine Learning zu spezialisieren. Seine aktuellen Forschungsprojekte betreffendie Entwicklung von Algorithmen für unüberwachtes Machine Learning bei derUntersuchung großer Datenmengen. Darüber hinaus ist er leidenschaftlicherPython-Programmierer und stellt seine Implementierungen von Clustering-Algo-rithmen auf seiner privaten Website unter http://vahidmirjalili.com zurVerfügung.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 13: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Über die Korrektoren

17

Hamidreza Sattari ist IT-Experte und war von der Programmierung über die Soft-warearchitektur bis hin zur Verwaltung in den verschiedensten Fachgebieten derSoftwareentwicklung tätig. An der Herriot-Watt University (Großbritannien) undder Teheraner Azad-Universität (Iran) erwarb er einen Master als Softwaretechni-ker bzw. einen Bachelor als Elektronikingenieur. In den letzten Jahren hat er sichinsbesondere mit den Themen Big Data und Machine Learning befasst. Er istKoautor des Buchs Spring Web Services 2 Cookbook und betreibt unter http://justdeveloped-blog.blogspot.com/ einen eigenen Blog.

Dmytro Taranovsky ist Softwareentwickler und Fachmann für Python, Linux undMachine Learning. Ursprünglich stammt er aus Kiew (Ukraine) und lebt seit 1996in den Vereinigten Staaten. Er war von klein auf an Naturwissenschaften und demErwerb von Wissen im Allgemeinen interessiert und gewann bereits als Jugendli-cher Mathematik- und Physikwettbewerbe. 1999 war er Mitglied des US-Physik-Teams. 2005 graduierte er am Massachusetts Institute of Technology (MIT) mitdem Hauptfach Mathematik. Danach arbeitete er als Softwareentwickler an einemSystem zur computergestützten Transkription medizinischer Texte (eScription).Ursprünglich arbeitete Taranovsky mit Perl, allerdings weiß er die Leistungsfähig-keit und Klarheit von Python durchaus zu schätzen, und es gelang ihm, das Sys-tem für die Verarbeitung sehr großer Datenmengen zu skalieren. Später war er alsSoftwareentwickler und Analyst bei einem Unternehmen tätig, das mit Algorith-men handelt. Er leistete außerdem bedeutende Beiträge zu den Grundlagen derMathematik, indem er die Mengenlehre und ihre Verbindung zu den Axiomenüber große Kardinalzahlen um eine Methode zur logischen Folgerung eines Sys-tems zur Beschreibung von Ordnungszahlen erweiterte und in Python implemen-tierte. Dmytro Taranovsky liest gern, mag ausgedehnte Spaziergänge und wünschtsich einfach nur, die Welt ein wenig zu verbessern.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 14: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

18

Einleitung

Ich muss Ihnen wohl kaum sagen, dass das Machine Learning zu einer der span-nendsten Technologien der heutigen Zeit geworden ist. Große Unternehmen wieGoogle, Facebook, Apple, Amazon, IBM und viele andere investieren aus gutemGrund kräftig in die Erforschung des Machine Learnings und dessen Anwendung.Auch wenn man manchmal den Eindruck bekommt, dass »Machine Learning« alsleeres Schlagwort gebraucht wird, handelt es sich doch zweifellos nicht um eineModeerscheinung. Dieses spannende Fachgebiet eröffnet viele neue Möglichkeitenund ist im Alltag schon nicht mehr wegzudenken. Denken Sie an die virtuellenAssistenten von Smartphones, Produktempfehlungen für Kunden in Onlineshops,das Verhindern von Kreditkartenbetrug, Spamfilter in E-Mail-Programmen, dieErkennung und Diagnose von Krankheitssymptomen – die Liste ließe sich beliebiglang fortsetzen.

Wenn Sie zu einem Praktiker des Machine Learnings und einem besseren Problem-löser werden möchten oder vielleicht sogar eine Laufbahn in der Erforschung desMachine Learnings anstreben, dann ist dies das richtige Buch für Sie. Für einenNeuling können die dem Machine Learning zugrunde liegenden theoretischenKonzepte zunächst einmal erdrückend wirken. In den vergangenen Jahren sind imenglischsprachigen Raum aber viele praxisorientierte Bücher mit leistungsfähigenLernalgorithmen erschienen, die Ihnen den Start erleichtern. Meiner Ansicht nachdient die Verwendung praxisorientierter Codebeispiele einem wichtigen Zweck:Sie verdeutlicht die Konzepte, indem das Erlernte unmittelbar in die Tat umgesetztwird. Allerdings darf man dabei nicht vergessen, dass mit großer Macht auchimmer große Verantwortung einhergeht! Die Konzepte des Machine Learnings sindzu schön und wichtig, um sie in einer Blackbox zu verschließen. Es ist mir daherein persönliches Anliegen, ein etwas anderes Buch zu liefern – ein Buch, das dieerforderlichen Details der Konzepte des Machine Learnings erörtert, die Funktions-weise von Lernalgorithmen und ihre Verwendung verständlich, aber dennoch infor-mativ erklärt, und – was noch wichtiger ist – das zeigt, wie man die häufigstenFehler vermeidet.

Wenn Sie bei Google Scholar den Suchbegriff machine learning eingeben, erhal-ten Sie als Resultat eine riesige Zahl (ca. 3.580.000) von Treffern. Nun können wirin diesem Buch natürlich nicht sämtliche Einzelheiten der in den letzten 60 Jahrenentwickelten Algorithmen und Anwendungen erörtern. Wir werden uns jedoch aufeine spannende Tour begeben, die alle wichtigen Themen und Konzepte umfasst,damit Sie eine gründliche Einführung erhalten. Sollte Ihr Wissensdurst auch nach

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 15: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Zum Inhalt des Buches

19

der Lektüre noch nicht gestillt sein, steht Ihnen eine Vielzahl weiterer hilfreicherRessourcen zur Verfügung, die Sie nutzen können, um die entscheidenden Fort-schritte 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, möchte ich aberzunächst noch Ihre vermutlich vordringlichste Frage beantworten: 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.

Ich kann aus eigener Erfahrung sagen, dass ich durch die Beschäftigung mit demMachine Learning zu einem besseren Wissenschaftler, Denker und Problemlösergeworden bin. In diesem Buch möchte ich meine diesbezüglichen Erkenntnissemit Ihnen teilen. Wissen wird durch Lernen erworben, das wiederum einen gewis-sen Eifer erfordert, und erst Übung macht den sprichwörtlichen Meister. Der vorIhnen liegende Weg ist manchmal nicht ganz einfach, und einige der Themenbe-reiche sind deutlich schwieriger als andere, aber ich hoffe dennoch, dass Sie dieGelegenheit nutzen und sich auf den Lohn der Mühe konzentrieren. Im weiterenVerlauf des Buches werden Sie Ihrem Repertoire eine ganze Reihe leistungsfähi-ger Techniken hinzufügen können, die dabei helfen, auch die schwierigsten Auf-gaben 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.

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.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 16: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Einleitung

20

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. feh-lende Daten. Außerdem werden verschiedene Ansätze zur Ermittlung der informa-tivsten Merkmale einer Datenmenge vorgestellt. Des Weiteren erfahren Sie, wiesich Variablen unterschiedlichen Typs als geeignete Eingabe für Lernalgorithmeneinsetzen 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über hi-naus kommen verschiedene Bewertungskriterien der Modelle sowie Verfahren zurFeinabstimmung 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 einzelnerKlassifizierer zu überwinden, was genauere und verlässlichere Ergebnisse 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 in eine Webanwendungeinbetten 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-stellung der linearen Modelle kommen auch Polynom-Regression und baum-basierte Ansätze zur Sprache.

Kapitel 11, Verwendung nicht gekennzeichneter Daten: Clusteranalyse, konzentriertsich auf einen anderen Teilbereich des Machine Learnings, nämlich auf das un-überwachte Lernen. Wir werden drei unterschiedlichen Familien von Clustering-

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 17: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Was Sie benötigen

21

Algorithmen zugehörige Verfahren anwenden, um Objektgruppen aufzuspüren,die einen gewissen Ähnlichkeitsgrad aufweisen.

Kapitel 12, Künstliche neuronale Netze für die Bilderkennung trainieren, erweitert dasin Kapitel 2 vorgestellte Konzept der Gradient-basierten Optimierung, um leis-tungsfähige, mehrschichtige neuronale Netze zu erstellen, die auf dem verbreite-ten Backpropagation-Algorithmus beruhen.

Kapitel 13, Parallelisierung des Trainings neuronaler Netze mit Theano, baut auf demin den vorausgehenden Kapiteln erworbenen Kenntnissen auf, um Ihnen einenpraxisorientierten Leitfaden für ein effzienteres Training neuronaler Netze an dieHand zu geben. Der Schwerpunkt dieses Kapitels liegt dabei auf Theano, einerquelloffenen Python-Bibliothek, die die Verwendung mehrerer Kerne modernerProzessoren ermöglicht.

Was Sie benötigen

Zum Ausführen der Codebeispiele ist die Python-Version 3.4.3 oder neuer aufmacOS, Linux oder Microsoft Windows erforderlich. Wir werden häufig von fürwissenschaftliche 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 Theano, um neuronale Netze effizient mitgrafischen 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: Die-ses Buch ist eine unentbehrliche Informationsquelle und unbedingt lesenswert.

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.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 18: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Einleitung

22

Schlüsselwörter, Datenbanktabellen-, Twitter-, Datei-, Ordner-, Datei- und Pfadna-men sowie URLs und Usereingaben werden im Fließtext wie folgt dargestellt:»Ein bereits installiertes Paket kann mit dem --upgrade-Flag aktualisiert wer-den.«

Codeblöcke sehen so aus:

Usereingaben auf der Kommandozeile werden in nicht proportionaler Schrift fettgedruckt:

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 abge-brochen.«

Codebeispiele herunterladen

Die Codebeispiele können Sie unter http://www.mitp.de/422 herunterladen.

>>> import matplotlib.pyplot as plt

>>> import numpy as np

>>> y = df.iloc[0:100, 4].values

>>> y = np.where(y == 'Iris-setosa', -1, 1)

>>> X = df.iloc[0:100, [0, 2]].values

>>> plt.scatter(X[:50, 0], X[:50, 1],

... color='red', marker='x', label='setosa')

>>> plt.scatter(X[50:100, 0], X[50:100, 1],

... color='blue', marker='o', label='versicolor')

>>> plt.xlabel('petal length')

>>> plt.ylabel('sepal length')

>>> plt.legend(loc='upper left')

>>> plt.show()

> dot -Tpng tree.dot -o tree.png

Vorsicht

Warnungen oder wichtige Hinweise erscheinen in einem Kasten wie diesem.

Tipp

Und so werden Tipps und Tricks dargestellt.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 19: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

23

Kapitel 1

Wie Computer aus Daten lernen können

Meiner Ansicht nach ist das Machine Learning (maschinelles Lernen), die Anwen-dung und Wissenschaft von Algorithmen, die den Sinn von Daten erkennen kön-nen, 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 Wissen ver-wandeln. Dank der vielen in den letzten Jahren entwickelten Open-Source-Bibliotheken ist jetzt der richtige Zeitpunkt gekommen, um sich eingehend mitdem Thema Machine Learning zu befassen und zu erfahren, wie leistungsfähigeAlgorithmen dafür eingesetzt werden können, Muster in den Daten zu erkennenund Vorhersagen ü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 Teildis-ziplin der Artificial Intelligence (künstliche Intelligenz) herausgebildet, bei der es umdie Entwicklung selbstlernender Algorithmen geht, die Erkenntnisse aus Daten ex-trahieren, um bestimmte Vorhersagen treffen zu können. Das Erfordernis mensch-lichen Eingreifens zur manuellen Ableitung von Regeln und der Entwicklung von

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 20: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

24

Modellen anhand der Analyse großer Datenmengen erübrigt sich damit mehr undmehr, denn das Machine-Learning-Verfahren bietet eine effiziente Alternative zurErfassung des in den Daten enthaltenen Wissens – die zudem die auf diesen Datenbasierende Entscheidungsfindung sowie die Aussagekraft von Vorhersagemodellenzusehends verbessert. Dieses Verfahren wird nicht nur in der Forschung immerwichtiger, es spielt auch im Alltag eine zunehmend größere Rolle: Dank desMachine Learnings erfreuen wir uns stabiler E-Mail-Spamfilter, praktischer Text-und Spracherkennungssoftware, verlässlicher Suchmaschinen, kaum zu schlagen-der Schachcomputer und hoffentlich bald auch sicherer selbstfahrender 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 (Klassifizie-rung) gekennzeichnet sind.

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.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 21: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

1.2Die drei Arten des Machine Learnings

25

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 ist allerdings nicht auf zwei beschränkt.Das von einem überwachten Lernalgorithmus erlernte Vorhersagemodell kanneiner neuen, noch nicht gekennzeichneten Instanz jede Bezeichnung zuordnen,die in den Trainingsdaten vorkommt. Ein typisches Beispiel für solch eine Mehr-fachklassifizierung ist die Handschrifterkennung. Hier könnten wir eine Trainings-datenmenge zusammenstellen, die aus mehreren handgeschriebenen Beispielenaller Buchstaben des Alphabets besteht. Wenn dann ein User über ein Eingabege-rät einen neuen Buchstaben angibt, wäre unser Vorhersagemodell in der Lage, die-sen mit einer gewissen Zuverlässigkeit zu erkennen. Das System wäre allerdingsnicht imstande, irgendeine der Zahlen von null bis neun zu erkennen, soferndiese 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 (Kreise) und wei-tere 15 als positive Klasse (Pluszeichen) gekennzeichnet sind. Die Datenmenge istin diesem Szenario zweidimensional: Jedem Beispiel sind die beiden Werte x1 undx2 zugeordnet. Nun können wir dem überwachten Lernalgorithmus eine Regelbeibringen: Die durch eine gestrichelte schwarze Linie dargestellte Grenze trenntdie beiden Klassen voneinander und ermöglicht es, neue Daten anhand der Wertevon x1 und x2 einer der beiden Klassen zuzuordnen.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 22: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

26

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.

Die folgende Abbildung illustriert das Konzept der linearen Regression. Bei vorgege-bener unabhängiger Variable x und abhängiger Variable y passen wir eine Geradeso an die Daten an, dass ein Maß für den Abstand der Geraden von den Beispiel-werten (üblicherweise der Mittelwert der quadrierten Differenzen) minimal wird.

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« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 23: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

1.2Die drei Arten des Machine Learnings

27

Nun können wir den aus den Daten ermittelten Schnittpunkt mit der y-Achse sowiedie Steigung der Geraden verwenden, um das Ergebnis für neue Werte vorherzu-sagen.

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 Feedbacknicht 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. Hierbewertet 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.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 24: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

28

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, Informa-tionen in sinnvolle Untergruppen (Cluster) aufzuteilen, ohne vorherige Kenntnisseüber die Gruppenzugehörigkeit dieser Informationen zu besitzen. Jeder bei derAnalyse auftretende Cluster definiert eine Gruppe von Objekten, die bestimmteEigenschaften gemeinsam haben, sich aber von Objekten in anderen Gruppenhinreichend unterscheiden. Deshalb wird das Clustering manchmal auch als»unüberwachte Klassifizierung« bezeichnet. Es ist ausgezeichnet geeignet, um In-formationen zu strukturieren und sinnvolle Beziehungen zwischen den Daten ab-zuleiten. Beispielsweise ermöglicht es Marketingfachleuten, Kunden anhand ihrerInteressen in Gruppen einzuordnen, um gezielte Kampagnen zu entwickeln.

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.

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-

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 25: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

1.3Grundlegende Terminologie und Notation

29

tung besteht aus einer Vielzahl von Messwerten), was aufgrund der für die Lern-algorithmen 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 einerAbschwä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 eineZeile 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 Kapiteln

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 26: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

30

verwenden 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.

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 Buchtstaben benutzt (

bzw. ).

Beispielsweise verweist auf die erste Dimension des Blumenexemplars 150, dieLänge des Kelchblatts. Jede Zeile der Merkmalsmatrix repräsentiert ein Blumen-

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 27: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

1.4Entwicklung eines Systems für das Machine Learning

31

exemplar und kann als vierdimensionaler Zeilenvektor geschrieben wer-den, 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 diesemAbschnitt befassen wir uns mit weiteren wichtigen Bestandteilen eines Systems fürdieses Verfahren, die den Lernalgorithmus begleiten. Das folgende Diagramm zeigtden typischen Ablauf, der beim Machine Learning in Vorhersagemodellen zum Ein-satz kommt, die wir in den folgenden Abschnitten betrachten werden.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 28: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

32

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 dieVorteile, dass weniger Speicherplatz benötigt wird und der Lernalgorithmuserheblich schneller arbeitet.

Um festzustellen, ob ein Lernalgorithmus nicht nur die Trainingsdaten ordentlichverarbeitet, sondern auch mit neuen Daten gut zurechtkommt, ist es sinnvoll, denDatenbestand in separate Trainings- und Testdatenmengen aufzuteilen: Zum Trai-nieren und Optimieren des Lernmodells verwenden wir die Trainingsdaten-menge, während wir die Testdatenmenge bis zum Schluss zurückhalten, um dasendgü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 daher

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 29: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

1.5Machine Learning mit Python

33

von 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 feinerabzustimmen. 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.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 30: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

34

Die Performance von Interpretersprachen wie Python ist derjenigen von kom-pilierten 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 Bibliothek fürMachine 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.4.3 voraus, es empfiehlt sichjedoch, immer die neueste verfügbare Python-3-Version zu verwenden. Die meis-ten Codebeispiele sind allerdings auch mit Python-Versionen ab 2.7.10 kompa-tibel. Wenn Sie Python 2.7 verwenden, sollten Sie sich über die wichtigstenAbweichungen der beiden Python-Versionen im Klaren sein. Eine gute Zusam-menfassung der Unterschiede zwischen Python 2 und 3 finden Sie unter https://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:

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-Distribution, die alle wichtigen Python-Pakete für Data Science, Mathematikund Engineering in einem einzigen, benutzerfreundlichen und plattformunab-hängigen Paket bündelt. Das Installationsprogramm können Sie unter http://continuum.io/downloads#py34 herunterladen. Eine Kurzanleitung ist unterhttps://store.continuum.io/static/img/Anaconda-Quickstart.pdf verfügbar.

pip install Paketname

pip install Paketname --upgrade

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 31: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

1.6Zusammenfassung

35

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

Bereits vorhandene Pakete werden so aktualisiert:

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 diesehr 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.9.1

� SciPy 0.14.0

� scikit-learn 0.15.2

� matplotlib 1.4.0

� pandas 0.15.2

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 wichtigen Teilgebietenbesteht: Klassifizierung und Regression. Klassifizierungsmodelle ermöglichen es,Objekte bekannten Klassen zuzuordnen und wir können die Regressionsanalysenutzen, um stetige Werte einer Zielvariablen vorherzusagen. Das unüberwachteLernen bietet nicht nur praktische Verfahren zum Auffinden von Strukturen innicht gekennzeichneten Daten, es kann darüber hinaus bei der Vorverarbeitungauch zur Datenkomprimierung eingesetzt werden.

conda install Paketname

conda update Paketname

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 32: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Kapitel 1Wie Computer aus Daten lernen können

36

Wir haben uns kurz die typische Vorgehensweise bei der Anwendung des MachineLearnings auf Problemstellungen angesehen, die bei der weiteren Erörterung undfür praktische Beispiele in den folgenden Kapiteln als Grundlage dient. Darüber hi-naus haben wir unsere Python-Umgebung eingerichtet und die erforderliche Paketeaktualisiert und sind nun bereit, uns Machine Learning in Aktion anzusehen.

Im nächsten Kapitel 2, Lernalgorithmen für die Klassifizierung trainieren, werden wireinen der ersten Lernalgorithmen zum Zweck der Klassifizierung implementierenund uns damit auf das Kapitel 3 (Machine-Learning-Klassifizierer mit scikit-learn ver-wenden) vorbereiten, in dem wir die scikit-learn-Bibliothek nutzen werden, umerweiterte Lernalgorithmen zu erörtern. Da Machine-Learning-Algorithmen zumLernen Daten benötigen, ist es von entscheidender Bedeutung, dass wir sie mitsinnvollen Informationen füttern – und deshalb werden wir uns in Kapitel 4, Gutgeeignete Trainingsdatenmengen: Datenvorverarbeitung, mit wichtigen Verfahren zurVorverarbeitung der Daten befassen. In Kapitel 5, Datenkomprimierung durchDimensionsreduktion, lernen wir Verfahren zur Dimensionsreduktion kennen, dieuns dabei helfen, die Datenmengen auf einen Merkmalsraum von geringererDimensionalität abzubilden, was von großem Vorteil für die Effizienz der Berech-nungen sein kann. Bei der Entwicklung eines Lernmodells sind die Bewertung derLeistung und der Qualität der Vorhersagen über unbekannte neue Daten wichtigeAspekte. In Kapitel 6, Bewährte Verfahren zur Modellbewertung und Hyperparameter-Abstimmung, geht es um bewährte Verfahren zur Feinabstimmung von Modellenund deren Bewertung. Unter bestimmten Umständen sind wir womöglich trotzstunden- oder tagelangem Abstimmen und Testen noch nicht mit der Leistungeines Vorhersagemodells zufrieden. In Kapitel 7, Kombination verschiedener Modellefür das Ensemble Learning, erfahren Sie, wie sich verschiedene Lernmodelle mitei-nander kombinieren lassen, um noch leistungsfähigere Vorhersagesysteme entwi-ckeln zu können.

Nach der Abhandlung aller wichtigen Konzepte des typischen Machine-Learning-Ablaufs werden wir in Kapitel 8, Machine Learning zur Analyse von Stimmungslagennutzen, ein Modell implementieren, das Texte analysiert, um eine Stimmungslagezu prognostizieren. In Kapitel 9, Einbettung eines Machine-Learning-Modells in eineWebanwendung, werden wir das in Kapitel 8 entwickelte Modell in eine Weban-wendung einbetten, um es für andere User verfügbar zu machen. In Kapitel 10,Vorhersage stetiger Zielvariablen durch Regressionsanalyse, werden wir Lernalgorith-men für eine Regressionsanalyse verwenden, die es uns ermöglicht, stetige Ausga-bevariablen vorherzusagen. Und in Kapitel 11, Verwendung nicht gekennzeichneterDaten: Clusteranalyse, werden wir Clustering-Algorithmen anwenden, die es unsermöglichen, verborgene Strukturen in den Daten aufzuspüren. Die beiden letz-ten Kapitel 12, Künstliche neuronale Netze für die Bilderkennung trainieren, und 13,Parallelisierung des Trainings neuronaler Netze mit Theano, des Buches befassen sichschließlich mit künstlichen neuronalen Netzen, die es erlauben, komplexe Aufga-ben wie die Bild- und die Spracherkennung in Angriff zu nehmen – zwei der inte-ressantesten Themen bei der Erforschung des Machine Learnings.

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 33: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

413

Stichwortverzeichnis

_-Konvention (Unterstrich) 43

AAbstimmungsparameter 166AdaBoost 227AdaBoost-Algorithmus 229AdaBoost-Klassifizierer-Ensemble 231Adaline 51Adaline-Algorithmus 345Agent 27Agglomeratives Clustering 328, 335Aktivierungsfunktion 38, 346, 398

sigmoide 398Anaconda 34Antwortausfälle 109Ausdruck

regulärer 245Ausgabespektrum 403Ausreißer 293Average Linkage 328

BBackpropagation-Algorithmus 368Bagging 222Bag-of-words-Modell 239Bayes-Klassifikator 250Belohnungsfunktion 27Belohnungssignal 27Bengio, Yoshua 385Bestimmtheitsmaß 298Bias 81, 82Bias-Einheit 347Bias-Varianz-Kompromiss 82Bibliotheken 43Binomialkoeffizient 205Binomialverteilung 205Boosting 227

CChancenverhältnis 73close-Methode 260

Clusteranalyse 313Clustering 28

agglomeratives 328, 335divisives 328graphenbasiertes 340hierarchisches 328prototypbasiertes 314spektrales 340

Clustering-Güte 322, 323commit-Methode 260Complete Linkage 328connect-Methode 259corrcoef-Funktion 285CountVectorizer-Klasse 240cross_validation-Modul 69CSV-Datei 109, 239cumsum-Funktion 142cursor-Methode 259

DDataFrame-Objekt 46Daten

fehlende 109Datenanalyse

explorative 282Datenbank 258Datenprojektion 169Datenvorverarbeitung 32DBSCAN 335DecisionTreeRegressor 307Deep Learning 343DeepFace 344DeepSpeech 344Dendrogramm 328, 333Deserialisierung 257Dichte 335Differenzierbarkeit 52Differenzieren

automatisches 372Dimensionalität 28Dimensionsreduktion 28, 128

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 34: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Stichwortverzeichnis

414

Distanzmaßeukildisches 315

Distanzmatrix 329Divisives Clustering 328Dokumenthäufigkeit

inverse 242dropna-Methode 111dtype 389Dummy-Merkmal 117Dünnbesetzter Merkmalsvektor 240

EEigenvektor 140Eigenwert 140Elastic-Net-Verfahren 299Ellenbogenkriterium 322Emoticon 244Ensemble 102

Fehlerquote 205Ensemble Learning 203Ensemblemethoden 203Entropie 95, 306Entscheidungsbaum 94Entscheidungsbaum-Regression 306Entscheidungsbereiche 71Epoche 42Erklärende Variable 279Erklärte Variable 279Euklidische Metrik 105execute-Methode 259Explorative Datenanalyse (EDA) 282Extraktion 137

FF1-Maß 196Falsch-Positiv-Rate 195Faltung 381FCM-Algorithmus 320Feedforward-Netz 346Fehlende Daten 109Fehlerquote 195, 205Fehlklassifizierung 48Feld

rezeptives 381fit_transform-Methode 116fit-Methode 45, 112Flask 261float64 389Fluch der Dimensionalität 107, 132, 339Formularvalidierung 264

Funktionlogistische 74, 398

Fuzziness-Koeffizient 321Fuzzy-C-Mean-Algorithmus (FCM) 319

GGalton, Francis 26Gaußscher Kernel 91get_dummies-Methode 118Gewichtung 208Gewichtungsvektor 40Gini-Koeffizient 95givens-Variable 393Global Interpreter Lock (GIL) 386Google Translate 344grad-Funktion 395Gradientenabstiegsverfahren 52

als Stapelverarbeitung 54stochastisches 59

Gradientenprüfung 373Graphenbasiertes Clustering 340GraphViz 101

HHalbmondform 337HashingVectorizer 252Hauptkomponentenanalyse 137, 145Heatmap 285, 333Heaviside-Funktion 38, 346Hierarchisches Clustering 328Hoff, Tedd 51Holdout-Methode 178Hyperebene 91Hyperparameter 33, 56, 179, 189, 346

IIMDb-Datensammlung 238Imputer-Klasse 112Informationsgewinn 95, 306Inlier 293Interpolationsverfahren 112Inverse Dokumenthäufigkeit 242inverse_transform-Methode 116IPython-Notebooks 43Iris-Datensammlung 29isnull-Methode 110

KKeras-Bibliothek 404Kernel 91

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 35: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Stichwortverzeichnis

415

Kernel-Funktion 91Kernel-Funktionen 158Kernel-Hauptkomponentenanalyse 157KernelPCA-Klasse 173Kernel-SVM 89Kernel-Trick 90, 91, 159Kernobjekt 335Kettenregel (Ableitung) 372Klassifizierer

Fehlertypen 194schwacher 227

Klassifizierer-Attribute 220Klassifizierung 25

binäre 25, 38dichotome 38

Klassifizierungsfehler 95Klassifizierungsgüte 193k-Means++-Algorithmus 317k-Means-Algorithmus 313KMeans-Klasse 316k-Nearest-Neighbor-Algorithmus 104KNN siehe k-Nearest-Neighbor-AlgorithmusKodierung der Klassenbezeichnung 115Konfusionsmatrix 193Konvention (Unterstrich) 43Konvergenz 379konvex 52Konvolution 381Konvolutionales neuronales Netz 380Konvolutionsschicht 381Kopplungsmatrix 330Korrektklassifizierungsrate 33, 70, 195Korrelationskoeffizient 284Korrelationsmatrix 284, 286Kovarianz 140Kovarianzmatrix 140, 284Kreuzvalidierung

2-fache 1785x2- 192k-fache 180stratifizierte k-fache 182verschachtelte 191

LL1-Regularisierung 122L2-Regularisierung 82, 122L2-Strafterm 124LabelEncoder-Funktion 176LabelEncoder-Klasse 116Lancaster-Stemmer 247

Lasagne-Bibliothek 409LASSO 299Latente Dirichlet-Allokation 253Lazy-Learning-Algorithmus 104LDA siehe Lineare DiskriminanzanalyseLDA-Klasse 156Leave-One-Out-Kreuzvalidierung (LOO) 181Lebensbedingungen-Datensammlung 280Leerraum 246Lemmata 247Lemmatisierung 247Lernen

instanzbasiertes 104überwachtes 24unüberwachtes 24, 28, 313verstärkendes 24

Lernkurve 185Lernrate 40, 56

adaptive 60LIBLINEAR-Bibliothek 88LIBSVM-Bibliothek 88linalg.eig-Funktion 141Lineare Diskriminanzanalyse (LDA) 148Lineare Regression 26, 279Lineare Trennbarkeit 42, 51LogisticRegression-Klasse 79Logistische Funktion 74, 398Logistische Regression 73logit-Funktion 74Log-Likelihood-Funktion 77LSTM-Einheiten 383

MMakro-Mittelwertbildung 200Manhattan-Metrik 106map-Methode 115Margin 85matplotlib 35Matrix-Vektor-Multiplikation 56McCulloch, Warren 37, 343mean-Methode 58Median der absoluten Abweichungen (MAD)

294Medianwert 112Medoid 314Mehrfachklassifizierung 25, 200Mehrheit

absolute 203relative 204

Mehrheitsentscheidung 104, 203

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 36: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Stichwortverzeichnis

416

Mehrheitsentscheidungs-Klassifizierer 207Merkmal 29

Auswahl 122, 128Bedeutung 134Extrahierung 128Extraktion 137Interpretierbarkeit 136nominales 114ordinales 113

Merkmalsdetektor 380Merkmalserkennung 344Merkmalskarte 381Merkmalsvektor

dünnbesetzter 240Methode der kleinsten Quadrate 287metric-Parameter 107metrics-Modul 70, 196Microframework 261Mikro-Mittelwertbildung 200Mini-Batch Learning 60, 361, 379Minkowski-Metrik 106Min-Max-Skalierung 120Mit Zurücklegen 180Mittelwertimputation 112Mittelwertvektor 150Mittlere quadratische Abweichung 297MNIST-Datensammlung 352Modellauswahl 179Modellbewertung 180Momentum Learning 361multiprocessing-Bibliothek 386

NNaN (Not a Number) 109Natural Language Processing (NLP) 237Natural Language Toolkit (NLTK) 246Negative Klasse 25Nettoeingabe 38Netz

neuronales 343Neuron 37

adaptives lineares 37Neuronales Netz 343

Konvergenz 379konvolutionales 380rekurrentes 382

N-Gramm 241NLP siehe Natural Language ProcessingNominales Merkmal 114Normalgleichung 292Normierung 32, 120

OOhne Zurücklegen 180OneHotEncoder-Klasse 117One-hot-Kodierung 117, 348One-vs.-All (OvA) 46One-vs-all-Verfahren (OvA) 347Online Learning 60, 89Opinion Mining 237Ordinales Merkmal 113Out-of-Core Learning 250

Ppairplot-Funktion 282pandas 35partial_fit-Methode 61PCA (Principal Component Analysis) siehe

HauptkomponentenanalysePCA-Klasse 145permutation-Methode 63Perzeptron 37, 42

mehrschichtiges 346, 404pickle-Modul 255pip (Installationsprogramm) 34Pipeline 175, 177, 190Pitts, Walter 37, 343plot_decision_regions-Methode 72Pooling-Schicht 381Porter-Stemmer-Algorithmus 246Positive Klasse 25predict_proba-Methode 80predict-Methode 45, 70, 113preprocessing-Modul 69Problem des verschwindenden Gradienten

347Projektionsmatrix 143Pruning 95Pylearn2-Bibliothek 409PythonAnywhere 275Python-Pakete 34

QQuantisierer 51

RRandobjekt 335Random Forest 102Random Forests 308RandomForestClassifier 134Random-Forest-Klassifizierer 103Random-Forest-Regression 306, 308

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 37: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Stichwortverzeichnis

417

Randomisierte Suche 191Rang eines Tensors 388RANSAC-Algorithmus 293Rastersuche 190Rauschobjekt 336RBF-Kernel 91read_csv-Funktion 110Receiver-Operating-Characteristic-

Diagramme (ROC-Diagramme) 197Regex-Bibliothek 244Regression 24

lineare 26, 279logistische 73multiple 280polynomiale 301

Regressionsanalyse 26Regressionsgerade 280Regressionsmodell

Leistung 295multiples 296Random Forest 308

Regulärer Ausdruck 244, 245Regularisierung 82, 299Regularisierungsparameter 82Regularisierungsstärke 189Regularisierungsterm 366Rekurrentes neuronales Netz 382Residualdiagramm 296Residuum 280Rezeptives Feld 381Richtig-Positiv-Rate 195Ridge-Regression 299ROC AUC 197ROC-Fläche 200ROC-Kurve 197Rosenblatt, Frank 38

SSBS-Algorithmus 129Schätzer 113, 177Schlupfvariable 86Schwellwertfunktion 346scikit-learn-API 68seaborn-Bibliothek 282select-Befehl 260Sentimentanalyse 237Sequential Backwards Selection siehe

SBS-AlgorithmusSerialisierung 255SGDClassifier-Klasse 89shuffle-Methode 61

Sigmoidfunktion 74, 398Silhouettenanalyse 323Silhouettendiagramm 325Silhouettenkoeffizient 323Single Linkage 328Skalarprodukt 45softmax-Funktion 400Spektrales Clustering 340Sprungfunktion 38SQLite 258SQLite Manager (Browser-Plugin) 260sqlite3-Bibliothek 259Stacking 222Stammformreduktion 246Standardisierung 58, 120StandardScaler-Klasse 69std-Methode 58Stemming 246Stetigkeit 279Stimmungsanalyse 237Stoppwort 247Straffunktion 52, 77, 78, 345

Fehleroberfläche 372logistische 365regularisierte 83

Strafterm 124stream_docs-Funktion 251Streudiagrammmatrix 282Streumatrix 151StringIO-Funktion 110sum-Methode 110Support Vector Machine 84, 309SVM siehe Support Vector MachineSymbol (Theano) 389

TTangens hyperbolicus 398, 402Tensor 388tensor-Modul 391Testdatenmenge 179Textbereinigung 245Textfeld 264Tf-idf-Maß 242Theano 385

Konfiguration 389.theanorc-Datei 391toarray-Methode 117Token 240Tokenisierung 246Tonalität 237Trägheitsterm 361

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422

Page 38: Machine Learning mit Python - mitp-Verlag · Inhaltsverzeichnis 7 4.1.2 Fehlende Werte ergänzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.1.3 Die Schätzer-API

Stichwortverzeichnis

418

train_test_split-Funktion 119Trainingsdatenmenge 179Transformer 177Transformer-Klasse 112transform-Methode 112, 113, 136Transponierte 39Trefferquote 196

UÜberanpassung 71, 81, 122Überwachtes Lernen 24Unteranpassung 81Unüberwachtes Lernen 24, 313

VValidierungsdatenmenge 179Validierungskurve 187Validierungsmenge 131Variable

erklärende 26, 279erklärte 279

Varianz 81, 82Varianzreduktion 307Vektorisierung 46Verallgemeinerungsfehler 179Verringerungskonstante 361Verstärkendes Lernen 24Vertrauenswahrscheinlichkeit 33Vokabular 240

Vorkommenshäufigkeit 241, 242Vorverarbeitung 32, 120Vorwärtspropagation 349Vorzeichenfunktion 205

WWahrheitsmatrix 193Wahrscheinlichkeit

bedingte 74Ward Linkage 328Webanwendung 261Wein-Datensammlung 118Whitespace 246Widrow, Bernard 51Wisconsin-Brustkrebs-Datensammlung 176word2vec 254Wortrelevanz 242WTForms-Bibliothek 263

ZZeitstempel 260Zentroid 314Zielfunktion 52Zielvariable 26, 279Zufallsgenerator 61Zugehörigkeitsgrad 321Zuordnungsfunktion 91Zurücklegen (mit/ohne) 180

© des Titels »Machine Learning mit Python« (ISBN 9783958454224) 2017 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/422