13. Weiterführende Konzepte#

Zum Abschluss dieses Crashkurses wollen wir noch einige wichtige weiterführende Konzepte erwähnen, die wir nicht behandelt haben. Dieses Kapitel ist also ein Hilfsmittel für alle, die sich weiter mit dem Thema beschäftigen wollen.

Nicht alle Merkmale werden von jedem Algorithmus benötigt. Manchmal sind die Merkmale redundant, da es Korrelationen gibt, manchmal helfen die Merkmale auch einfach nicht bei der Analyse. Einige von den betrachteten Algorithmen haben das bereits berücksichtigt. Die Lasso-Regularisierung (siehe Kapitel 8) eliminiert unwichtige Merkmale, indem die Koeffizienten auf null gesetzt werden. Entscheidungsbäume wählen nur die informativsten Merkmale aus (siehe Kapitel 7), sodass einige Merkmale eventuell nicht berücksichtigt werden. Die meisten Algorithmen nutzen aber alle Merkmale, die zur Verfügung stehen. Mehr Merkmale führen aber zu komplexeren Modellen, was sich auch negativ auf die Rechenzeit auswirkt. Mithilfe von Techniken zur *Merkmalsauswahl (engl. feature selection) kann man dieses Problem unabhängig vom Algorithmus lösen. Solche Techniken suchen nach einer Teilmenge von Merkmalen, die nicht korreliert sind, oder eliminieren Merkmale, die nicht relevant sind. Zwei Verfahren haben wir sogar behandelt: Mit der PCA (siehe Kapitel 4) lassen sich neue Merkmale berechnen, sodass man eine kleinere und unkorrelierte Menge von Merkmalen nutzen könnte. Und der Informationsgewinn, den wir bei den Entscheidungsbäumen kennengelernt haben, kann auch dazu benutzt werden, Merkmale mit einem sehr geringen Informationsgewinn zu entfernen.

Wir haben auch oft von Skaleneffekten gesprochen und davon, Merkmale zu normalisieren. Im Detail haben wir dieses Thema jedoch nicht behandelt und verglichen, wie die Auswirkungen von verschiedenen Techniken sind. Auch einen vollständigen Überblick haben wir nicht gegeben: Neben der im Buch vorkommenden Normierung, Logarithmierung und Z-Score-Standardisierung gibt es zum Beispiel auch kernelbasierte Verfahren und quantilbasierte Verfahren. Je nach Datenlage und Anwendungsfall kann dies einen großen Unterschied machen.

Bei der Klassifikation haben wir im Zuge der Gütemaße auch über die Class Level Imbalance gesprochen, nicht jedoch, wie man dieses Problem lösen kann. Hierzu gibt es viele Verfahren, zum Beispiel durch das Resampling oder durch Gewichte. Beim Resampling werden Instanzen der Klasse, die seltener vorkommt, hinzugefügt (Oversampling) oder aus der Mehrheitsklasse entfernt (Undersampling), manchmal wird auch beides kombiniert. Mit Gewichten kann man dafür sorgen, dass bestimmte Instanzen einen höheren bzw. geringeren Einfluss auf das Ergebnis haben. Durch höhere Gewichte der unterrepräsentierten Klasse können wir also Problemen entgegenwirken.

Außerdem haben wir gesehen, dass die Algorithmen Parameter haben, mit denen man sie konfigurieren kann. Beispiele hierfür sind die Tiefe von Entscheidungsbäumen oder die Struktur eines neuronalen Netzwerks. Wir haben auch erwähnt, dass man die Validierungsdaten zur Wahl geeigneter Parameter benutzen kann. Wie das jedoch genau funktioniert, zum Beispiel durch eine Grid Search, Random Search oder gezielte Suchalgorithmen, haben wir nicht behandelt.

Mit der Kreuzvalidierung haben wir ein Konzept kennengelernt, wie man auch bei einer kleinen Datenmenge mit einer Art Testdaten arbeiten kann. Es gibt noch weitere Verfahren, die je nach Datenmenge und Anwendungsfall relevant sein können, zum Beispiel Leave-One-Out (auch Jackknife genannt), Bootstrap Sampling (kennen wir von den Random Forests) und das Stratified Sampling, das berücksichtigt, dass sich die Verteilung nicht ändert.

Außerdem haben wir natürlich nicht alle Algorithmen betrachtet, die es gibt. Insbesondere beim Clustern (z.B. spektrales Clustering, Self-Organizing Maps) und bei der Klassifikation (z.B. Ripper zum Lernen von Disjunktionen, AdaBoost und Gradient Boosting Trees als Boosting-Algorithmen, gaußsche Prozesse, Bayesian Networks) gibt es noch viele weitere Verfahren. Bei den neuronalen Netzen haben wir auch nur an der Oberfläche gekratzt, hier gibt es viele weitere Netzwerkstrukturen, die wir nur kurz genannt oder gar nicht betrachtet haben. Mit dem Reinforcement Learning haben wir auch einen wichtigen Anwendungsfall nicht betrachtet: Wie können Systeme sich mit der Zeit selbst verbessern, indem sie ihre Beobachtungen nutzen, um ständig neue Daten zu erzeugen, die direkt zur Modellverbesserung verwendet werden?

Bei allem, was wir betrachtet haben, blieb außerdem die Theorie im Hintergrund. Wie die meisten Algorithmen ihre Lösungen berechnen, zum Beispiel mit Verfahren wie dem Stochastic Gradient Descent, haben wir nicht behandelt. Auch die Theorie des maschinellen Lernens, also wie man diesen Bereich in der theoretischen Informatik betrachtet und hier unter bestimmten Annahmen zeigen kann, dass es Lösungen einer bestimmten Güte gibt, haben wir ignoriert.

Zusammengefasst kann man also sagen, dass dieser Crashkurs zwar ein guter Start in das Thema war, aber es noch vieles gibt, was man zusätzlich lernen kann und sollte, bevor man diese Disziplin gemeistert hat.