Kapitel 4. Überwachtes Lernen: Modelle und Konzepte
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Überwachtes Lernen ist ein Bereich des maschinellen Lernens, in dem der gewählte Algorithmus versucht, ein Ziel anhand der gegebenen Eingaben zu erfüllen. Dem Algorithmus wird ein Satz von Trainingsdaten mit Bezeichnungen zur Verfügung gestellt. Auf der Grundlage einer großen Menge von Daten lernt der Algorithmus eine Regel, mit der er die Bezeichnungen für neue Beobachtungen vorhersagen kann. Mit anderen Worten: Algorithmen des überwachten Lernens werden mit historischen Daten versorgt und sollen die Beziehung finden, die die beste Vorhersagekraft hat.
Es gibt zwei Arten von Algorithmen des überwachten Lernens: Regressions- und Klassifikationsalgorithmen. Regressionsbasierte überwachte Lernmethoden versuchen, die Ergebnisse auf der Grundlage der Eingangsvariablen vorherzusagen. Klassifizierungsbasierte überwachte Lernmethoden ermitteln, zu welcher Kategorie eine Gruppe von Daten gehört. Klassifizierungsalgorithmen sind wahrscheinlichkeitsbasiert, d.h. das Ergebnis ist die Kategorie, für die der Algorithmus die höchste Wahrscheinlichkeit findet, dass der Datensatz zu ihr gehört. Regressionsalgorithmen hingegen schätzen das Ergebnis von Problemen, die eine unendliche Anzahl von Lösungen haben (kontinuierliche Menge möglicher Ergebnisse).
Im Finanzbereich stellen überwachte Lernmodelle eine der am häufigsten verwendeten Klassen von maschinellen Lernmodellen dar. Viele Algorithmen, die im algorithmischen Handel eingesetzt werden, stützen sich auf überwachte Lernmodelle, weil sie effizient trainiert werden können, relativ robust gegenüber verrauschten Finanzdaten sind und einen starken Bezug zur Finanztheorie haben.
Regressionsbasierte Algorithmen wurden von Wissenschaftlern und Industrieforschern genutzt, um zahlreiche Modelle zur Preisbildung von Vermögenswerten zu entwickeln. Diese Modelle werden verwendet, um Renditen über verschiedene Zeiträume vorherzusagen und wichtige Faktoren zu identifizieren, die die Renditen von Vermögenswerten beeinflussen. Es gibt viele weitere Anwendungsfälle für regressionsbasiertes überwachtes Lernen im Portfoliomanagement und bei der Preisbildung für Derivate.
Klassifizierungsbasierte Algorithmen hingegen werden in vielen Bereichen des Finanzwesens eingesetzt, in denen eine kategorische Antwort vorhergesagt werden muss. Dazu gehören die Erkennung von Betrug, die Vorhersage von Zahlungsausfällen, die Kreditwürdigkeitsprüfung, die Vorhersage der Kursentwicklung von Vermögenswerten und Kauf-/Verkaufsempfehlungen. Es gibt viele weitere Anwendungsfälle für klassifizierungsbasiertes überwachtes Lernen im Portfoliomanagement und im algorithmischen Handel.
In den Kapiteln 5 und 6 werden viele Anwendungsfälle für regressions- und klassifikationsbasiertes überwachtes maschinelles Lernen vorgestellt.
Python und seine Bibliotheken bieten Methoden und Möglichkeiten, diese überwachten Lernmodelle in wenigen Codezeilen zu implementieren. Einige dieser Bibliotheken wurden in Kapitel 2 behandelt. Mit benutzerfreundlichen Bibliotheken für maschinelles Lernen wie Scikit-learn und Keras ist es ganz einfach, verschiedene maschinelle Lernmodelle auf einen bestimmten Datensatz für die Vorhersagemodellierung anzuwenden.
In diesem Kapitel geben wir einen umfassenden Überblick über überwachte Lernmodelle. Für eine gründliche Behandlung der Themen wird der Leser auf Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition, von Aurélien Géron (O'Reilly) verwiesen.
Modelle des überwachten Lernens: Ein Überblick
Klassifizierungsvorhersagemodelle unterscheiden sich von Regressionsvorhersagemodellen, denn bei der Klassifizierung geht es um die Vorhersage einer diskreten Klassenbezeichnung und bei der Regression um die Vorhersage einer kontinuierlichen Größe. Beide haben jedoch das gleiche Konzept, nämlich die Verwendung bekannter Variablen, um Vorhersagen zu treffen, und es gibt erhebliche Überschneidungen zwischen den beiden Modellen. Daher werden die Modelle für Klassifizierung und Regression in diesem Kapitel gemeinsam vorgestellt. Abbildung 4-1 fasst die Liste der Modelle zusammen, die üblicherweise für Klassifizierung und Regression verwendet werden.
Einige Modelle können mit kleinen Änderungen sowohl für die Klassifizierung als auch für die Regression verwendet werden. Dazu gehören K-nearest neighbors, Entscheidungsbäume, Support Vectors, Ensemble Bagging/Boosting-Methoden und ANNs (einschließlich Deep Neural Networks), wie in Abbildung 4-1 dargestellt. Einige Modelle, wie die lineare Regression und die logistische Regression, können jedoch nicht (oder nicht ohne Weiteres) für beide Problemtypen verwendet werden.
Dieser Abschnitt enthält die folgenden Details zu den Modellen:
-
Theorie der Modelle.
-
Implementierung in Scikit-learn oder Keras.
-
Gittersuche für verschiedene Modelle.
-
Vor- und Nachteile der Modelle.
Hinweis
Im Finanzwesen liegt der Schwerpunkt auf Modellen, die Signale aus zuvor beobachteten Daten extrahieren, um zukünftige Werte für dieselbe Zeitreihe vorherzusagen. Diese Familie von Zeitreihenmodellen sagt kontinuierliche Werte voraus und ist eher mit den überwachten Regressionsmodellen verwandt. Zeitreihenmodelle werden separat im Kapitel über überwachte Regression(Kapitel 5) behandelt.
Lineare Regression (gewöhnliche kleinste Quadrate)
Dielineare Regression (Ordinary Least Squares Regression oder OLS-Regression) ist vielleicht einer der bekanntesten und am besten verstandenen Algorithmen in der Statistik und im maschinellen Lernen. Die lineare Regression ist ein lineares Modell, d.h. ein Modell, das eine lineare Beziehung zwischen den Eingangsvariablen(x) und der einzelnen Ausgangsvariablen(y) annimmt. Das Ziel der linearen Regression ist es, ein lineares Modell zu trainieren, um ein neues y bei einem vorher nicht gesehenen x mit einem möglichst geringen Fehler vorherzusagen.
Unser Modell wird eine Funktion sein, die y vorhersagt, wenn :
wobei, als Achsenabschnitt bezeichnet wird und sind die Koeffizienten der Regression.
Implementierung in Python
from
sklearn.linear_model
import
LinearRegression
model
=
LinearRegression
()
model
.
fit
(
X
,
Y
)
Im folgenden Abschnitt gehen wir auf das Training eines linearen Regressionsmodells und die Rastersuche des Modells ein. Die allgemeinen Konzepte und verwandten Ansätze sind jedoch auch auf alle anderen überwachten Lernmodelle anwendbar.
Ein Modell trainieren
Wie wir in Kapitel 3 erwähnt haben, bedeutet das Trainieren eines Modells im Grunde, dass die Modellparameter durch Minimierung der Kostenfunktion (Verlustfunktion) ermittelt werden. Die zwei Schritte zum Trainieren eines linearen Regressionsmodells sind:
- Definiere eine Kostenfunktion (oder Verlustfunktion)
-
Misst, wie ungenau die Vorhersagen des Modells sind. Die Summe der quadrierten Residuen (RSS), wie in Gleichung 4-1 definiert, misst die quadrierte Summe der Differenz zwischen dem tatsächlichen und dem vorhergesagten Wert und ist die Kostenfunktion für die lineareRegression.
Gleichung 4-1. Summe der quadrierten Residuen
In dieser Gleichung, der Achsenabschnitt; steht für den Koeffizienten; sind die Koeffizienten der Regression; und steht für die Beobachtung und Variable.
- Finde die Parameter, die den Verlust minimieren
-
Zum Beispiel, indem wir unser Modell so genau wie möglich machen. In zwei Dimensionen ergibt dies eine Linie der besten Anpassung, wie in Abbildung 4-2 dargestellt. In höheren Dimensionen hätten wir höherdimensionale Hyperebenen. Mathematisch betrachtet, betrachten wir die Differenz zwischen jedem realen Datenpunkt(y) und der Vorhersage unseres Modells(ŷ). Wir quadrieren diese Differenzen, um negative Zahlen zu vermeiden und größere Differenzen zu bestrafen, und addieren sie dann und bilden den Durchschnitt. Dies ist ein Maß dafür, wie gut unsere Daten mit der Linie übereinstimmen.
Gittersuche
Der Grundgedanke der Rastersuche besteht darin, ein Raster aller möglichen Hyperparameterkombinationen zu erstellen und das Modell mit jeder dieser Kombinationen zu trainieren. Hyperparameter sind die externen Merkmale des Modells, die als die Einstellungen des Modells betrachtet werden können und nicht auf der Grundlage von Daten wie Modellparametern geschätzt werden. Diese Hyperparameter werden während der Rastersuche angepasst, um eine bessere Modellleistung zu erzielen.
Aufgrund der erschöpfenden Suche ist bei der Rastersuche garantiert, dass der optimale Parameter innerhalb des Rasters gefunden wird. Der Nachteil ist, dass die Größe des Gitters exponentiell ansteigt, wenn mehr Parameter oder mehr berücksichtigte Werte hinzugefügt werden.
Die Klasse GridSearchCV
im Modul model_selection
des sklearn-Pakets erleichtert die systematische Auswertung aller Kombinationen der Hyperparameterwerte, die wir testen möchten.
Der erste Schritt besteht darin, ein Modellobjekt zu erstellen. Dann definieren wir ein Wörterbuch, in dem die Schlüsselwörter die Hyperparameter benennen und die Werte die zutestenden Parametereinstellungen auflisten. Bei der linearen Regression ist der Hyperparameter fit_intercept
eine boolesche Variable, die bestimmt, ob der Achsenabschnitt für dieses Modell berechnet werden soll oder nicht. Wenn er auf False
gesetzt ist, wird bei den Berechnungen kein Intercept verwendet:
model
=
LinearRegression
()
param_grid
=
{
'fit_intercept'
:
[
True
,
False
]}
}
Der zweite Schritt ist die Instanziierung des GridSearchCV
Objekts und die Übergabe des Schätzerobjekts und des Parameterrasters sowie die Wahl der Scoring-Methode und der Kreuzvalidierung an die Initialisierungsmethode. Die Kreuzvalidierung ist ein Verfahren zur erneuten Stichprobenziehung, das zur Bewertung von Modellen für maschinelles Lernen verwendet wird, und der Scoring-Parameter ist die Bewertungsmetrik des Modells:1
Wenn alle Einstellungen vorgenommen sind, können wir GridSearchCV
einbauen:
grid
=
GridSearchCV
(
estimator
=
model
,
param_grid
=
param_grid
,
scoring
=
'r2'
,
\cv
=
kfold
)
grid_result
=
grid
.
fit
(
X
,
Y
)
Vorteile und Nachteile
Was die Vorteile angeht, ist die lineare Regression leicht zu verstehen und zu interpretieren. Allerdings funktioniert sie möglicherweise nicht gut, wenn es eine nichtlineare Beziehung zwischen vorhergesagten und prädiktiven Variablen gibt. Die lineare Regression neigt zur Überanpassung (die wir im nächsten Abschnitt erörtern werden), und bei einer großen Anzahl von Merkmalen kann es sein, dass sie irrelevante Merkmale nicht gut behandelt. Die lineare Regression setzt außerdem voraus, dass die Daten bestimmten Annahmen entsprechen, z. B. dass es keine Multikollinearität gibt. Wenn die Annahmen fehlschlagen, können wir den Ergebnissen nicht trauen.
Regularisierte Regression
Wenn ein lineares Regressionsmodell viele unabhängige Variablen enthält, sind deren Koeffizienten schlecht bestimmt und das Modell neigt dazu, sich extrem gut an die Trainingsdaten (Daten, die zur Erstellung des Modells verwendet werden) anzupassen, aber schlecht an die Testdaten (Daten, mit denen getestet wird, wie gut das Modell ist). Dies wird als Overfitting oder hoheVarianz bezeichnet.
Eine beliebte Technik zur Kontrolle der Überanpassung ist die Regularisierung, bei der die Fehler- oder Verlustfunktion mit einem Straffaktor versehen wird, um zu verhindern, dass die Koeffizienten große Werte erreichen. Vereinfacht ausgedrückt ist die Regularisierung ein Strafmechanismus, der die Modellparameter schrumpfen lässt (indem er sie näher an Null heranführt), um ein Modell mit höherer Vorhersagegenauigkeit und Interpretation zu erstellen. Die regularisierte Regression hat zwei Vorteile gegenüber der linearen Regression:
- Vorhersagegenauigkeit
-
Wenn das Modell bei den Testdaten besser funktioniert, deutet das darauf hin, dass das Modell versucht, von den Trainingsdaten zu verallgemeinern. Ein Modell mit zu vielen Parametern könnte versuchen, ein für die Trainingsdaten spezifisches Rauschen anzupassen. Indem wir einige Koeffizienten verkleinern oder auf Null setzen, tauschen wir die Fähigkeit, komplexe Modelle anzupassen (höhere Verzerrung) gegen ein besser verallgemeinerbares Modell (geringere Varianz).
- Interpretation
-
Eine große Anzahl von Prädiktoren kann die Interpretation oder Vermittlung des Gesamtbildes der Ergebnisse erschweren. Es kann besser sein, einige Details zu opfern, um das Modell auf eine kleinere Untergruppe von Parametern mit den stärksten Auswirkungen zu beschränken.
Die gängigen Methoden zur Regularisierung eines linearen Regressionsmodells lauten wie folgt:
- L1-Regularisierung oder Lasso-Regression
-
DieLasso-Regression führt eine L1-Regularisierung durch, indem sie einen Faktor der Summe der absoluten Werte der Koeffizienten in der Kostenfunktion (RSS) für die lineare Regression hinzufügt, wie in Gleichung 4-1 erwähnt. Die Gleichung für die Lasso-Regularisierung kann wie folgt dargestellt werden:
Die L1-Regularisierung kann zu Nullkoeffizienten führen (d. h., einige der Merkmale werden bei der Bewertung des Outputs vollständig vernachlässigt). Je größer der Wert von ist, desto mehr Merkmale werden auf Null geschrumpft. Dadurch können einige Merkmale vollständig eliminiert werden und wir erhalten eine Teilmenge von Prädiktoren, was die Komplexität des Modells verringert. Die Lasso-Regression hilft also nicht nur bei der Reduzierung von Overfitting, sondern auch bei der Merkmalsauswahl. Prädiktoren, die nicht gegen Null geschrumpft sind, bedeuten, dass sie wichtig sind, und so ermöglicht die L1-Regularisierung die Auswahl von Merkmalen (Sparse Selection). Der Regularisierungsparameter () kann gesteuert werden, und ein
lambda
Wert von Null ergibt die grundlegende lineare Regressionsgleichung.Ein Lasso-Regressionsmodell kann mit der Klasse
Lasso
des sklearn-Pakets von Python erstellt werden, wie im folgenden Code-Schnipsel gezeigt:from
sklearn.linear_model
import
Lasso
model
=
Lasso
()
model
.
fit
(
X
,
Y
)
- L2 Regularisierung oder Ridge Regression
-
DieRidge-Regression führt eine L2-Regularisierung durch, indem ein Faktor der Summe der Quadrate der Koeffizienten in der Kostenfunktion (RSS) für die lineare Regression hinzugefügt wird, wie in Gleichung 4-1 erwähnt. Die Gleichung für die Ridge-Regularisierung kann wie folgt dargestellt werden:
Die Ridge-Regression schränkt die Koeffizienten ein. Der Strafterm () reguliert die Koeffizienten so, dass die Optimierungsfunktion bestraft wird, wenn die Koeffizienten große Werte annehmen. Die Ridge-Regression verkleinert also die Koeffizienten und hilft, die Komplexität des Modells zu verringern. Die Verkleinerung der Koeffizienten führt zu einer geringeren Varianz und einem niedrigeren Fehlerwert. Die Ridge Regression verringert also die Komplexität eines Modells, aber nicht die Anzahl der Variablen, sondern nur deren Wirkung. Wenn näher bei Null liegt, ähnelt die Kostenfunktion der Kostenfunktion der linearen Regression. Je niedriger also die Einschränkung (niedrige ) für die Merkmale ist, desto mehr ähnelt das Modell dem Modell der linearen Regression.
Ein Ridge-Regressionsmodell kann mit der Klasse
Ridge
des Python-Pakets sklearn erstellt werden, wie im folgenden Codeschnipsel gezeigt:from
sklearn.linear_model
import
Ridge
model
=
Ridge
()
model
.
fit
(
X
,
Y
)
- Elastisches Netz
-
Elastische Netze fügen dem Modell Regularisierungsterme hinzu, die eine Kombination aus L1- und L2-Regularisierung sind, wie in der folgenden Gleichung dargestellt:
Neben der Einstellung und Auswahl eines Wertes können wir mit einem elastischen Netz auch den Alpha-Parameter einstellen, wobei = 0 einem Grat entspricht und = 1 dem Lasso entspricht. Wir können also einen Wert zwischen 0 und 1 wählen, um das elastische Netz zu optimieren. Dadurch werden einige Koeffizienten verkleinert und andere auf 0 gesetzt, um eine spärliche Auswahl zu ermöglichen.
Ein elastisches Netz-Regressionsmodell kann mit der Klasse
ElasticNet
des Python-Pakets sklearn konstruiert werden, wie im folgenden Codeschnipsel gezeigt:from
sklearn.linear_model
import
ElasticNet
model
=
ElasticNet
()
model
.
fit
(
X
,
Y
)
Für alle regularisierten Regressionen, der Schlüsselparameter, der bei der Netzsuche in Python eingestellt werden muss. In einem elastischen Netz, ein zusätzlicher Parameter sein, der eingestellt werden kann.
Logistische Regression
Dielogistische Regression ist einer der am häufigsten verwendeten Algorithmen zur Klassifizierung. Das logistische Regressionsmodell ergibt sich aus dem Wunsch, die Wahrscheinlichkeiten der Ausgangsklassen anhand einer Funktion zu modellieren, die linear in x ist, und gleichzeitig sicherzustellen, dass die Ausgangswahrscheinlichkeiten sich zu eins summieren und zwischen null und eins bleiben, wie wir es von Wahrscheinlichkeiten erwarten würden.
Wenn wir ein lineares Regressionsmodell auf mehrere Beispiele trainieren, bei denen Y = 0 oder 1 ist, könnten wir am Ende Wahrscheinlichkeiten vorhersagen, die kleiner als Null oder größer als Eins sind, was keinen Sinn macht. Stattdessen verwenden wir ein logistisches Regressionsmodell (oder Logit-Modell ), das eine Abwandlung der linearen Regression ist und durch Anwendung der Funktion sigmoid
sicherstellt, dass eine Wahrscheinlichkeit zwischen null und eins ausgegeben wird.2
Gleichung 4-2 zeigt die Gleichung für ein logistisches Regressionsmodell. Ähnlich wie bei der linearen Regression werden die Eingabewerte(x) mithilfe von Gewichten oder Koeffizientenwerten linear kombiniert, um einen Ausgabewert(y) vorherzusagen. Die Ausgabe aus Gleichung 4-2 ist eine Wahrscheinlichkeit, die in einen binären Wert(0 oder 1) umgewandelt wird, um die Modellvorhersage zu erhalten.
Gleichung 4-2. Logistische Regressionsgleichung
Dabei ist y die vorhergesagte Leistung, ist der Bias- oder Intercept-Term undB1 ist der Koeffizient für den einzelnen Eingangswert(x). Jede Spalte in den Eingabedaten hat einen zugehörigen Koeffizient (ein konstanter reeller Wert), der aus den Trainingsdaten gelernt werden muss.
Bei der logistischen Regression ist die Kostenfunktion im Grunde ein Maß dafür, wie oft wir einen Wertvorausgesagt haben, wenn die wahre Antwort null war, oder umgekehrt. Das Training der logistischen Regressionskoeffizienten erfolgt mit Techniken wie der Maximum-Likelihood-Schätzung (MLE), um Werte nahe 1 für die Standardklasse und nahe 0 für die andere Klasse vorherzusagen.3
Ein logistisches Regressionsmodell kann mit der Klasse LogisticRegression
des Python-Pakets sklearn erstellt werden, wie der folgende Codeausschnitt zeigt:
from
sklearn.linear_model
import
LogisticRegression
model
=
LogisticRegression
()
model
.
fit
(
X
,
Y
)
Hyperparameter
- Regularisierung (
penalty
in sklearn) -
Ähnlich wie bei der linearen Regression kann auch die logistische Regression eine Regularisierung haben, die L1, L2 oder elasticnet sein kann. Die Werte in der Sklearn-Bibliothek sind [l1, l2, elasticnet].
- Regularisierungsstärke (
C
in sklearn) -
Dieser Parameter steuert die Stärke der Regularisierung. Gute Werte für die Strafparameter können [100, 10, 1,0, 0,1, 0,01] sein.
Vorteile und Nachteile
Die Vorteile des logistischen Regressionsmodells sind, dass es einfach zu implementieren ist, gut interpretierbar ist und bei linear trennbaren Klassen sehr gut funktioniert. Die Ausgabe des Modells ist eine Wahrscheinlichkeit, die mehr Aufschluss gibt und für ein Ranking verwendet werden kann. Das Modell hat eine geringe Anzahl von Hyperparametern. Auch wenn die Gefahr einer Überanpassung besteht, kann diese mit Hilfe der L1/L2-Regularisierung angegangen werden, ähnlich wie bei der Überanpassung der linearen Regressionsmodelle.
Zu den Nachteilen gehört, dass das Modell bei einer großen Anzahl von Merkmalen überanpassen kann. Die logistische Regression kann nur lineare Funktionen erlernen und ist für komplexe Beziehungen zwischen Merkmalen und der Zielvariablen weniger geeignet. Außerdem kann sie mit irrelevanten Merkmalen nicht gut umgehen, insbesondere wenn die Merkmale stark korreliert sind.
Support-Vektor-Maschine
Das Ziel des SVM-Algorithmus ( Support Vector Machine ) ist die Maximierung der Marge (in Abbildung 4-3 als schattierte Fläche dargestellt), die als Abstand zwischen der trennenden Hyperebene (oder Entscheidungsgrenze) und den Trainingsbeispielen definiert ist, die dieser Hyperebene am nächsten liegen, den sogenannten Support-Vektoren. Die Marge wird als senkrechter Abstand von der Linie zu nur den nächstgelegenen Punkten berechnet, wie in Abbildung 4-3 dargestellt. Die SVM berechnet also eine Grenze mit maximalem Rand, die zu einer homogenen Aufteilung aller Datenpunkte führt.
In der Praxis sind die Daten unübersichtlich und können nicht perfekt mit einer Hyperebene getrennt werden. Die Vorgabe, den Rand der Linie, die die Klassen trennt, zu maximieren, muss gelockert werden. Diese Änderung erlaubt es, dass einige Punkte in den Trainingsdaten die Trennlinie verletzen. Es wird ein zusätzlicher Satz von Koeffizienten eingeführt, die dem Rand in jeder Dimension Spielraum geben. Es wird ein Abstimmungsparameter eingeführt, der einfach C genannt wird und die Größe des zulässigen Spielraums in allen Dimensionen definiert. Je größer der Wert von C ist, desto mehr Überschreitungen der Hyperebene sind zulässig.
In manchen Fällen ist es nicht möglich, eine Hyperebene oder eine lineare Entscheidungsgrenze zu finden, und es werden Kernel verwendet. Ein Kernel ist lediglich eine Transformation der Eingabedaten, die es dem SVM-Algorithmus ermöglicht, die Daten einfacher zu verarbeiten. Mit Hilfe von Kerneln werden die ursprünglichen Daten in eine höhere Dimension projiziert, um die Daten besser zu klassifizieren.
SVM wird sowohl für die Klassifizierung als auch für die Regression verwendet. Wir erreichen dies, indem wir das ursprüngliche Optimierungsproblem in ein duales Problem umwandeln. Bei der Regression besteht der Trick darin, das Ziel umzukehren. Anstatt zu versuchen, die größtmögliche Straße zwischen zwei Klassen zu finden und dabei die Grenzverletzungen zu begrenzen, versucht die SVM-Regression, so viele Instanzen wie möglich auf die Straße (schattierter Bereich in Abbildung 4-3) zu bringen und dabei die Grenzverletzungen zu begrenzen. Die Breite der Straße wird durch einen Hyperparameter gesteuert.
Die SVM-Regressions- und Klassifizierungsmodelle können mit dem sklearn-Paket von Python erstellt werden, wie in den folgenden Codeschnipseln gezeigt wird:
Regression
from
sklearn.svm
import
SVR
model
=
SVR
()
model
.
fit
(
X
,
Y
)
Classification
from
sklearn.svm
import
SVC
model
=
SVC
()
model
.
fit
(
X
,
Y
)
Hyperparameter
Die folgenden Schlüsselparameter sind in der Sklearn-Implementierung von SVM enthalten und können bei der Rastersuche angepasst werden:
- Kernel (
kernel
in sklearn) -
Die Wahl des Kernels bestimmt die Art und Weise, wie die Eingangsvariablen projiziert werden. Es gibt viele Kernel zur Auswahl, aber linear und RBF sind die gängigsten.
- Strafe (
C
in sklearn) -
Der Strafparameter teilt der SVM-Optimierung mit, wie sehr du eine Fehlklassifizierung jedes Trainingsbeispiels vermeiden willst. Bei großen Werten des Strafparameters wird die Optimierung eine Hyperebene mit kleinerem Rand wählen. Gute Werte sind z.B. eine logarithmische Skala von 10 bis 1.000.
Vorteile und Nachteile
Was die Vorteile angeht, so ist SVM ziemlich robust gegen Überanpassung, vor allem im höherdimensionalen Raum. Sie kann gut mit nichtlinearen Zusammenhängen umgehen und hat viele Kernel zur Auswahl. Außerdem gibt es keine Anforderungen an die Verteilung der Daten.
Nachteilig ist, dass die SVM ineffizient zu trainieren und speicherintensiv zu betreiben und einzustellen ist. Sie funktioniert nicht gut bei großen Datensätzen. Sie erfordert die Skalierung von Merkmalen in den Daten. Außerdem gibt es viele Hyperparameter, deren Bedeutung oft nicht intuitiv ist.
K-Nächste Nachbarn
K-nearest neighbors (KNN) gilt als "lazy learner", da das Modell nicht lernen muss. Für einen neuen Datenpunkt werden Vorhersagen getroffen, indem der gesamte Trainingssatz nach den K ähnlichsten Instanzen (den Nachbarn) durchsucht und die Ausgangsvariable für diese K Instanzen zusammengefasst wird.
Um zu bestimmen, welche der K Instanzen im Trainingsdatensatz einer neuen Eingabe am ähnlichsten sind, wird ein Abstandsmaß verwendet. Das gängigste Abstandsmaß ist der euklidische Abstand, der als Quadratwurzel aus der Summe der quadrierten Differenzen zwischen einem Punkt a und einem Punkt b über alle Input-Attribute i berechnet wird und wie folgt dargestellt wird . Der euklidische Abstand ist ein gutes Abstandsmaß, wenn die Eingangsvariablen vom Typ her ähnlich sind.
Eine weitere Distanzmetrik ist die Manhattan-Distanz, bei der die Entfernung zwischen Punkt a und Punkt b wie folgt dargestellt wird Die Manhattan-Distanz ist ein gutes Maß, wenn die Eingangsvariablen vom Typ her nicht ähnlich sind.
Die Schritte von KNN lassen sich wie folgt zusammenfassen:
-
Wähle die Anzahl von K und eine Distanzmetrik.
-
Finde die K-ächsten Nachbarn der Probe, die wir klassifizieren wollen.
-
Lege das Klassensiegel durch Mehrheitsbeschluss fest.
KNN-Regressions- und Klassifizierungsmodelle können mit dem sklearn-Paket von Python erstellt werden, wie im folgenden Code gezeigt:
Classification
from
sklearn.neighbors
import
KNeighborsClassifier
model
=
KNeighborsClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.neighbors
import
KNeighborsRegressor
model
=
KNeighborsRegressor
()
model
.
fit
(
X
,
Y
)
Hyperparameter
Die folgenden Schlüsselparameter sind in der Sklearn-Implementierung von KNN enthalten und können während der Rastersuche angepasst werden:
- Anzahl der Nachbarn (
n_neighbors
in sklearn) -
Der wichtigste Hyperparameter für KNN ist die Anzahl der Nachbarn (n_neighbors). Gute Werte liegen zwischen 1 und 20.
- Distanzmetrik (
metric
in sklearn) -
Es kann auch interessant sein, verschiedene Abstandsmetriken für die Auswahl der Zusammensetzung der Nachbarschaft zu testen. Gute Werte sind euklidisch und manhattan.
Vorteile und Nachteile
Die Vorteile sind, dass kein Training erforderlich ist und es daher keine Lernphase gibt. Da der Algorithmus nicht trainiert werden muss, bevor er Vorhersagen trifft, können neue Daten nahtlos hinzugefügt werden, ohne die Genauigkeit des Algorithmus zu beeinträchtigen. Er ist intuitiv und leicht zu verstehen. Das Modell beherrscht natürlich die Mehrklassen-Klassifizierung und kann komplexe Entscheidungsgrenzen erlernen. KNN ist effektiv, wenn die Trainingsdaten groß sind. Es ist auch robust gegenüber verrauschten Daten, und Ausreißer müssen nicht gefiltert werden.
Was die Nachteile angeht, so ist die Wahl der Distanzmetrik nicht offensichtlich und in vielen Fällen schwer zu rechtfertigen. KNN schneidet bei hochdimensionalen Datensätzen schlecht ab. Die Vorhersage neuer Instanzen ist teuer und langsam, da der Abstand zu allen Nachbarn neu berechnet werden muss. KNN ist empfindlich gegenüber Rauschen im Datensatz. Wir müssen fehlende Werte manuell eingeben und Ausreißer entfernen. Außerdem müssen die Merkmale skaliert (standardisiert und normalisiert) werden, bevor der KNN-Algorithmus auf einen Datensatz angewendet werden kann; andernfalls kann KNN falsche Vorhersagen machen.
Lineare Diskriminanzanalyse
Das Ziel des Algorithmus der linearen Diskriminanzanalyse (LDA) ist es, die Daten so auf einen niedrigdimensionalen Raum zu projizieren, dass die Klassentrennbarkeit maximiert und die Varianz innerhalb einer Klasse minimiert wird.4
Während des Trainings des LDA-Modells werden die statistischen Eigenschaften (d. h. Mittelwert und Kovarianzmatrix) jeder Klasse berechnet. Die statistischen Eigenschaften werden auf der Grundlage der folgenden Annahmen über die Daten geschätzt:
-
Die Daten sind normal verteilt, so dass jede Variable die Form einer Glockenkurve hat, wenn sie aufgetragen wird.
-
Jedes Attribut hat die gleiche Varianz, und die Werte jeder Variable schwanken im Durchschnitt um den gleichen Betrag um den Mittelwert.
Um eine Vorhersage zu treffen, schätzt LDA die Wahrscheinlichkeit, dass ein neuer Satz von Eingaben zu jeder Klasse gehört. Die Ausgangsklasse ist diejenige, die die höchste Wahrscheinlichkeit hat.
Implementierung in Python und Hyperparameter
Das LDA-Klassifizierungsmodell kann mit dem sklearn-Paket von Python erstellt werden, wie im folgenden Codeschnipsel gezeigt:
from
sklearn.discriminant_analysis
import
LinearDiscriminantAnalysis
model
=
LinearDiscriminantAnalysis
()
model
.
fit
(
X
,
Y
)
Der wichtigste Hyperparameter für das LDA-Modell ist number of components
zur Dimensionalitätsreduktion, der in sklearn durch n_components
dargestellt wird.
Vorteile und Nachteile
Die Vorteile von LDA sind, dass es sich um ein relativ einfaches Modell handelt, das sich schnell implementieren lässt. Die Nachteile sind, dass es eine Skalierung der Merkmale erfordert und komplexe Matrixoperationen beinhaltet.
Klassifizierungs- und Regressionsbäume
Ganz allgemein besteht der Zweck einer Analyse mit Hilfe von Algorithmen zur Baumbildung darin, eine Reihe von logischen Wenn-Dann-Bedingungen zu bestimmen, die eine genaue Vorhersage oder Klassifizierung von Fällen ermöglichen. Klassifizierungs- und Regressionsbäume (oder CART- oder Entscheidungsbaum-Klassifikatoren) sind attraktive Modelle, wenn uns die Interpretierbarkeit wichtig ist. Wir können uns dieses Modell so vorstellen, dass wir unsere Daten aufschlüsseln und eine Entscheidung auf der Grundlage einer Reihe von Fragen treffen. Dieser Algorithmus ist die Grundlage für Ensemble-Methoden wie Random Forest und die Gradient-Boosting-Methode.
Vertretung
Das Modell kann durch einen binären Baum (oder Entscheidungsbaum) dargestellt werden, bei dem jeder Knoten eine Eingangsvariable x mit einem Splitpunkt ist und jedes Blatt eine Ausgangsvariable y für die Vorhersage enthält.
Abbildung 4-4 zeigt ein Beispiel für einen einfachen Klassifizierungsbaum, der anhand von zwei Eingaben - Größe (in Zentimetern) und Gewicht (in Kilogramm) - vorhersagt, ob eine Person männlich oder weiblich ist.
Lernen eines CART-Modells
Die Erstellung eines Binärbaums ist eigentlich ein Prozess der Aufteilung des Eingabebereichs. Ein gieriger Ansatz, das sogenannte rekursive binäre Splitting, wird verwendet, um den Raum aufzuteilen. Dabei handelt es sich um ein numerisches Verfahren, bei dem alle Werte aneinandergereiht und verschiedene Aufteilungspunkte mit Hilfe einer Kostenfunktion (Verlustfunktion) ausprobiert und getestet werden. Die Aufteilung mit den besten Kosten (den niedrigsten Kosten, denn wir minimieren die Kosten) wird ausgewählt. Alle Eingangsvariablen und alle möglichen Aufteilungspunkte werden bewertet und auf gierige Weise ausgewählt (z. B. wird jedes Mal der allerbeste Aufteilungspunkt gewählt).
Bei Regressionsvorhersagemodellen ist die Kostenfunktion, die bei der Auswahl der Splitpunkte minimiert wird, die Summe der quadrierten Fehler über alle Trainingsstichproben, die in das Rechteck fallen:
wobei der Output für die Trainingsstichprobe und prediction der vorhergesagte Output für das Rechteck ist. Für die Klassifizierung wird die Gini-Kostenfunktion verwendet; sie gibt an, wie rein die Blattknoten sind (d. h. wie gemischt die jedem Knoten zugewiesenen Trainingsdaten sind) und ist definiert als:
wobei G die Gini-Kosten über alle Klassen sind und ist die Anzahl der Trainingsinstanzen mit der Klasse k im interessierenden Rechteck. Ein Knoten, in dem alle Klassen vom gleichen Typ sind (perfekte Klassenreinheit), hat G = 0, während ein Knoten, in dem die Klassen bei einem binären Klassifizierungsproblem 50:50 aufgeteilt sind (schlechteste Klassenreinheit), G = 0,5 hat.
Abbruchkriterium
Das im vorangegangenen Abschnitt beschriebene rekursive Binärsplitting-Verfahren muss wissen, wann es mit dem Splitten aufhören soll, während es sich mit den Trainingsdaten durch den Baum arbeitet. Das gebräuchlichste Verfahren zum Anhalten ist die Verwendung einer Mindestanzahl von Trainingsinstanzen, die jedem Blattknoten zugeordnet sind. Liegt die Anzahl unter einem bestimmten Minimum, wird die Aufteilung nicht akzeptiert und der Knoten wird als letzter Blattknoten betrachtet.
Beschneiden des Baumes
Das Abbruchkriterium ist wichtig, da es die Leistung des Baums stark beeinflusst. Das Pruning kann nach dem Lernen des Baums eingesetzt werden, um die Leistung weiter zu steigern. Die Komplexität eines Entscheidungsbaums ist definiert als die Anzahl der Splits im Baum. Einfachere Bäume werden bevorzugt, da sie schneller und verständlicher sind, weniger Speicherplatz bei der Verarbeitung und Speicherung verbrauchen und die Wahrscheinlichkeit einer Überanpassung der Daten geringer ist. Die schnellste und einfachste Methode zum Beschneiden besteht darin, jeden Blattknoten im Baum durchzuarbeiten und die Auswirkungen des Entfernens anhand einer Testmenge zu bewerten. Ein Blattknoten wird nur dann entfernt, wenn dies zu einer Verringerung der Gesamtkostenfunktion für die gesamte Testmenge führt. Die Entfernung von Knoten kann gestoppt werden, wenn keine weiteren Verbesserungen mehr möglich sind.
Implementierung in Python
CART-Regressions- und Klassifizierungsmodelle können mit dem sklearn-Paket von Python erstellt werden, wie im folgenden Codeschnipsel gezeigt:
Classification
from
sklearn.tree
import
DecisionTreeClassifier
model
=
DecisionTreeClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.tree
import
DecisionTreeRegressor
model
=
DecisionTreeRegressor
()
model
.
fit
(
X
,
Y
)
Hyperparameter
CART hat viele Hyperparameter. Der wichtigste Hyperparameter ist jedoch die maximale Tiefe des Baummodells, d.h. die Anzahl der Komponenten zur Dimensionalitätsreduktion, die im sklearn-Paket durch max_depth
dargestellt wird. Gute Werte können zwischen 2 und 30 liegen, je nach Anzahl der Merkmale in den Daten.
Vorteile und Nachteile
Die Vorteile von CART sind, dass es einfach zu interpretieren ist und komplexe Zusammenhänge lernen kann. Es erfordert nur eine geringe Datenaufbereitung, und die Daten müssen in der Regel nicht skaliert werden. Die Bedeutung von Merkmalen ist durch die Art und Weise, wie Entscheidungsknoten gebildet werden, bereits eingebaut. Es funktioniert gut bei großen Datensätzen. Es funktioniert sowohl bei Regressions- als auch bei Klassifikationsproblemen.
Zu den Nachteilen von CART gehört, dass es zu einer Überanpassung kommen kann, wenn kein Pruning vorgenommen wird. Sie kann sehr unbeständig sein, d. h. kleine Änderungen im Trainingsdatensatz können zu großen Unterschieden in der gelernten Hypothesenfunktion führen. CART hat im Allgemeinen eine schlechtere Leistung als Ensemble-Modelle, die im Folgenden behandelt werden.
Ensemble-Modelle
Das Ziel von Ensemble-Modellen ist es, verschiedene Klassifizierer zu einem Meta-Klassifizierer zu kombinieren, der eine bessere Verallgemeinerungsleistung hat als jeder einzelne Klassifizierer für sich. Nehmen wir zum Beispiel an, dass wir Vorhersagen von 10 Experten gesammelt haben. Mit Ensemble-Methoden können wir deren Vorhersagen strategisch kombinieren, um eine Vorhersage zu treffen, die genauer und robuster ist als die Einzelvorhersagen der Experten.
Die beiden beliebtesten Ensemble-Methoden sind Bagging und Boosting. Bagging (oder Bootstrap-Aggregation) ist ein Ensemble-Verfahren, bei dem mehrere Einzelmodelle parallel trainiert werden. Jedes Modell wird anhand einer zufälligen Teilmenge der Daten trainiert. Boosting hingegen ist eine Ensemble-Technik, bei der mehrere Einzelmodelle nacheinander trainiert werden. Dazu wird ein Modell aus den Trainingsdaten erstellt und dannein zweites Modell, das versucht, die Fehler des ersten Modells zu korrigieren. Es werden so lange Modelle hinzugefügt, bis die Trainingsdaten perfekt vorhergesagt sind oder eine maximale Anzahl von Modellen hinzugefügt wurde. Jedes einzelne Modell lernt aus den Fehlern, die das vorherige Modell gemacht hat. Genau wie die Entscheidungsbäume selbst können auch Bagging und Boosting für Klassifizierungs- und Regressionsprobleme verwendet werden.
Durch die Kombination von Einzelmodellen ist das Ensemble-Modell tendenziell flexibler (weniger Verzerrungen) und weniger datenabhängig (weniger Varianz).5 Ensemble-Methoden kombinieren mehrere, einfachere Algorithmen, um eine bessere Leistung zu erzielen.
In diesem Abschnitt behandeln wir Random Forest, AdaBoost, die Gradient-Boosting-Methode und Extrabäume sowie deren Implementierung mit dem Paket sklearn.
Zufälliger Wald
Random Forest ist eine optimierte Version des Bagging-Entscheidungsbaums. Um den Random-Forest-Algorithmus zu verstehen, müssen wir zunächst den Bagging-Algorithmus verstehen. Angenommen, wir haben einen Datensatz mit eintausend Instanzen, dann sind die Schritte des Bagging folgende:
-
Erstelle viele (z. B. hundert) zufällige Teilstichproben unseres Datensatzes.
-
Trainiere ein CART-Modell für jede Probe.
-
Bei einem neuen Datensatz berechnest du die durchschnittliche Vorhersage jedes Modells und fasst die Vorhersagen der einzelnen Bäume zusammen, um das endgültige Label per Mehrheitsentscheid zu vergeben.
Ein Problem mit Entscheidungsbäumen wie CART ist, dass sie gierig sind. Sie wählen die aufzuteilende Variable mit einem gierigen Algorithmus, der den Fehler minimiert. Selbst nach dem Bagging können die Entscheidungsbäume viele strukturelle Ähnlichkeiten aufweisen, was zu einer hohen Korrelation in ihren Vorhersagen führt. Das Kombinieren von Vorhersagen aus mehreren Modellen in Ensembles funktioniert besser, wenn die Vorhersagen der Teilmodelle unkorreliert oder bestenfalls schwach korreliert sind. Random Forest verändert den Lernalgorithmus so, dass die Vorhersagen aller Teilbäume weniger korreliert sind.
Bei CART kann der Lernalgorithmus bei der Auswahl eines Splitpunktes alle Variablen und alle Variablenwerte durchsuchen, um den optimalsten Splitpunkt auszuwählen. Der Random-Forest-Algorithmus ändert dieses Verfahren dahingehend, dass jeder Teilbaum bei der Auswahl der Splitpunkte nur auf eine Zufallsstichprobe von Merkmalen zugreifen kann. Die Anzahl der Merkmale, die an jedem Splitpunkt durchsucht werden können(m), muss als Parameter für den Algorithmus angegeben werden.
Bei der Konstruktion der Entscheidungsbäume können wir berechnen, wie stark die Fehlerfunktion für eine Variable an jedem Splitpunkt abnimmt. Bei Regressionsproblemen kann dies der Rückgang der quadratischen Fehlersumme sein, bei der Klassifizierung die Gini-Kosten. Die Bagged-Methode kann die Bedeutung von Merkmalen ermitteln, indem sie den Rückgang der Fehlerfunktion für einzelne Variablen berechnet und mittelt.
Implementierung in Python
Random-Forest-Regressions- und Klassifizierungsmodelle können mit dem sklearn-Paket von Python erstellt werden, wie der folgende Code zeigt:
Classification
from
sklearn.ensemble
import
RandomForestClassifier
model
=
RandomForestClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.ensemble
import
RandomForestRegressor
model
=
RandomForestRegressor
()
model
.
fit
(
X
,
Y
)
Hyperparameter
Einige der wichtigsten Hyperparameter, die in der Sklearn-Implementierung von Random Forest enthalten sind und die bei der Rastersuche angepasst werden können, sind:
- Maximale Anzahl von Merkmalen (
max_features
in sklearn) -
Dies ist der wichtigste Parameter. Er gibt die Anzahl der Zufallsmerkmale an, die an jedem Split-Punkt abgetastet werden. Du kannst eine Reihe von ganzzahligen Werten ausprobieren, z. B. 1 bis 20 oder 1 bis zur Hälfte der Anzahl der Eingangsmerkmale.
- Anzahl der Schätzer (
n_estimators
in sklearn) -
Dieser Parameter gibt die Anzahl der Bäume an. Idealerweise sollte er so lange erhöht werden, bis das Modell keine Verbesserung mehr aufweist. Ein guter Wert ist eine logarithmische Skala von 10 bis 1.000.
Vorteile und Nachteile
Der Random-Forest-Algorithmus (bzw. das Random-Forest-Modell) hat in den letzten zehn Jahren aufgrund seiner guten Leistung, Skalierbarkeit und Benutzerfreundlichkeit große Beliebtheit bei ML-Anwendungen erlangt. Er ist flexibel und vergibt auf natürliche Weise Bewertungen für die Wichtigkeit von Merkmalen, sodass er mit redundanten Merkmalsspalten umgehen kann. Er lässt sich auf große Datensätze skalieren und ist im Allgemeinen robust gegenüber Overfitting. Der Algorithmus muss die Daten nicht skalieren und kann eine nichtlineare Beziehung modellieren.
Was die Nachteile angeht, so kann sich Random Forest wie eine Blackbox anfühlen, da wir nur sehr wenig Kontrolle darüber haben, was das Modell tut, und die Ergebnisse können schwer zu interpretieren sein. Obwohl Random Forest bei der Klassifizierung gute Arbeit leistet, eignet er sich nicht für Regressionsprobleme, da er keine präzisen, kontinuierlichen Vorhersagen liefert. Im Falle der Regression sagt er nicht über den Bereich der Trainingsdaten hinaus voraus und kann Datensätze, die besonders verrauscht sind, übererfüllen.
Extra Bäume
Extrabäume, auch bekannt als extrem randomisierte Bäume, sind eine Variante des Zufallsforsts. Sie bilden mehrere Bäume und teilen die Knoten anhand zufälliger Teilmengen von Merkmalen auf, ähnlich wie beim Zufallsforst. Im Gegensatz zum Random Forest, bei dem die Beobachtungen mit Ersetzung gezogen werden, werden die Beobachtungen bei Extrabäumen jedoch ohne Ersetzung gezogen. Es gibt also keine Wiederholung von Beobachtungen.
Außerdem wählt Random Forest den besten Split aus, um den Elternknoten in die beiden homogensten Kindknoten umzuwandeln.6 Extra Trees hingegen wählt einen zufälligen Split, um den Elternknoten in zwei zufällige Kindknoten zu unterteilen. Bei Extra Trees kommt die Zufälligkeit nicht vom Bootstrapping der Daten, sondern von den zufälligen Splits allerBeobachtungen.
In realen Fällen ist die Leistung vergleichbar mit der eines gewöhnlichen Random Forests, manchmal sogar ein bisschen besser. Die Vor- und Nachteile von Extrabäumen sind ähnlich wie die von Random Forests.
Implementierung in Python
Extra Trees Regressions- und Klassifizierungsmodelle können mit dem Python-Paket sklearn erstellt werden, wie im folgenden Codeschnipsel gezeigt. Die Hyperparameter von Extrabäumen sind ähnlich wie bei Random Forest, wie im vorherigen Abschnitt gezeigt:
Classification
from
sklearn.ensemble
import
ExtraTreesClassifier
model
=
ExtraTreesClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.ensemble
import
ExtraTreesRegressor
model
=
ExtraTreesRegressor
()
model
.
fit
(
X
,
Y
)
Adaptives Boosting (AdaBoost)
Adaptive Boosting oder AdaBoost ist ein Boosting-Verfahren, bei dem die Grundidee darin besteht, Prädiktoren nacheinander auszuprobieren, wobei jedes nachfolgende Modell versucht, die Fehler seines Vorgängers zu korrigieren. Bei jeder Iteration ändert der AdaBoost-Algorithmus die Stichprobenverteilung, indem er die Gewichte der einzelnen Instanzen verändert. Er erhöht die Gewichte der falsch vorhergesagten Instanzen und verringert die Gewichte der richtig vorhergesagten Instanzen.
Die Schritte des AdaBoost-Algorithmus sind:
-
Zu Beginn werden alle Beobachtungen gleich gewichtet.
-
Für eine Teilmenge der Daten wird ein Modell erstellt, und anhand dieses Modells werden Vorhersagen für den gesamten Datensatz getroffen. Die Fehler werden berechnet, indem die Vorhersagen mit den tatsächlichen Werten verglichen werden.
-
Bei der Erstellung des nächsten Modells werden die Datenpunkte, die falsch vorhergesagt wurden, höher gewichtet. Die Gewichtung kann anhand des Fehlerwerts bestimmt werden. Je höher der Fehler ist, desto mehr Gewicht wird der Beobachtung zugewiesen.
-
Dieser Vorgang wird so lange wiederholt, bis sich die Fehlerfunktion nicht mehr ändert oder bis die maximale Anzahl der Schätzer erreicht ist.
Implementierung in Python
AdaBoost-Regressions- und Klassifizierungsmodelle können mit dem sklearn-Paket von Python erstellt werden, wie im folgenden Codeschnipsel gezeigt:
Classification
from
sklearn.ensemble
import
AdaBoostClassifier
model
=
AdaBoostClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.ensemble
import
AdaBoostRegressor
model
=
AdaBoostRegressor
()
model
.
fit
(
X
,
Y
)
Hyperparameter
Einige der wichtigsten Hyperparameter, die in der Sklearn-Implementierung von AdaBoost vorhanden sind und die während der Rastersuche angepasst werden können, sind folgende:
- Lernrate (
learning_rate
in sklearn) -
Die Lernrate verringert den Beitrag der einzelnen Klassifikatoren/Regressoren. Sie kann auf einer logarithmischen Skala betrachtet werden. Die Beispielwerte für die Rastersuche können 0,001, 0,01 und 0,1 sein.
- Anzahl der Schätzer (
n_estimators
in sklearn) -
Dieser Parameter gibt die Anzahl der Bäume an. Idealerweise sollte er so lange erhöht werden, bis das Modell keine Verbesserung mehr aufweist. Ein guter Wert ist eine logarithmische Skala von 10 bis 1.000.
Vorteile und Nachteile
Was die Vorteile angeht, so hat AdaBoost ein hohes Maß an Präzision. AdaBoost kann ähnliche Ergebnisse wie andere Modelleerzielen, ohne dass die Parameter oder Einstellungen verändert werden müssen. Der Algorithmus muss die Daten nicht skalieren und kann eine nichtlineare Beziehung modellieren.
Was die Nachteile angeht, so ist das Training von AdaBoost zeitaufwändig. AdaBoost kann empfindlich auf verrauschte Daten und Ausreißer reagieren, und ein Ungleichgewicht der Daten führt zu einem Rückgang der Klassifizierungsgenauigkeit
Gradient-Boosting-Methode
Die Gradient-Boosting-Methode (GBM) ist ein weiteres Boosting-Verfahren, das AdaBoost ähnelt und bei dem die Prädiktoren nacheinander ausprobiert werden. Beim Gradient Boosting werden die unterdurchschnittlichen Vorhersagen nacheinander zum Ensemble hinzugefügt, um sicherzustellen, dass die zuvor gemachten Fehler korrigiert werden.
Im Folgenden werden die Schritte des Gradient-Boosting-Algorithmus beschrieben:
-
Ein Modell (das als erster schwacher Lerner bezeichnet werden kann) wird auf einer Teilmenge von Daten aufgebaut. Mithilfe dieses Modells werden Vorhersagen für den gesamten Datensatz getroffen.
-
Die Fehler werden berechnet, indem die Vorhersagen mit den tatsächlichen Werten verglichen werden, und der Verlust wird mithilfe der Verlustfunktion berechnet.
-
Es wird ein neues Modell erstellt, das die Fehler aus dem vorherigen Schritt als Zielvariable verwendet. Ziel ist es, den besten Split in den Daten zu finden, um den Fehler zu minimieren. Die Vorhersagen dieses neuen Modells werden mit den Vorhersagen des vorherigen Modells kombiniert. Die neuen Fehler werden anhand des vorhergesagten und des tatsächlichen Werts berechnet.
-
Dieser Vorgang wird so lange wiederholt, bis sich die Fehlerfunktion nicht mehr ändert oder bis die maximale Anzahl der Schätzer erreicht ist.
Im Gegensatz zu AdaBoost, das die Instanzgewichte bei jeder Interaktion anpasst, versucht diese Methode, den neuen Prädiktor an die Restfehler des vorherigenPrädiktors anzupassen.
Implementierung in Python und Hyperparameter
Regressions- und Klassifizierungsmodelle mit der Gradient-Boosting-Methode können mit dem Python-Paket sklearn erstellt werden, wie im folgenden Codeschnipsel gezeigt. Die Hyperparameter der Gradient-Boosting-Methode sind ähnlich wie bei AdaBoost, wie im vorherigen Abschnitt gezeigt:
Classification
from
sklearn.ensemble
import
GradientBoostingClassifier
model
=
GradientBoostingClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.ensemble
import
GradientBoostingRegressor
model
=
GradientBoostingRegressor
()
model
.
fit
(
X
,
Y
)
Vorteile und Nachteile
Was die Vorteile angeht, so ist die Gradient-Boosting-Methode robust gegenüber fehlenden Daten, stark korrelierten Merkmalen und irrelevanten Merkmalen, genau wie Random Forest. Sie weist den Merkmalen auf natürliche Weise Wichtigkeitswerte zu und ist dabei etwas leistungsfähiger als Random Forest. Der Algorithmus muss die Daten nicht skalieren und kann eine nichtlineare Beziehung modellieren.
Zu den Nachteilen gehört, dass er anfälliger für Overfitting ist als Random Forest, da der Hauptzweck des Boosting-Ansatzes darin besteht, Verzerrungen und nicht die Varianz zu reduzieren. Es müssen viele Hyperparameter eingestellt werden, sodass die Modellentwicklung möglicherweise nicht so schnell ist. Außerdem ist die Merkmalsbedeutung möglicherweise nicht robust gegenüber Schwankungen im Trainingsdatensatz.
ANN-basierte Modelle
In Kapitel 3 haben wir uns mit den Grundlagen von ANNs befasst, mit der Architektur von ANNs, ihrem Training und ihrer Implementierung in Python. Die Details aus diesem Kapitel gelten für alle Bereiche des maschinellen Lernens, einschließlich des überwachten Lernens. Es gibt jedoch einige zusätzliche Details aus der Perspektive des überwachten Lernens, die wir in diesem Abschnitt behandeln werden.
Neuronale Netze lassen sich auf ein Klassifizierungs- oder Regressionsmodell mit der Aktivierungsfunktion des Knotens in der Ausgabeschicht reduzieren. Im Falle eines Regressionsproblems hat der Ausgangsknoten eine lineare Aktivierungsfunktion (oder keine Aktivierungsfunktion). Eine lineare Funktion erzeugt eine kontinuierliche Ausgabe, die von -inf
bis +inf
reicht. Die Ausgabeschicht ist also die lineare Funktion der Knoten in der Schicht vor der Ausgabeschicht, und es handelt sich um ein regressionsbasiertes Modell.
Im Falle eines Klassifizierungsproblems hat der Ausgangsknoten eine Sigmoid- oder Softmax-Aktivierungsfunktion. Eine Sigmoid- oder Softmax-Funktion erzeugt eine Ausgabe im Bereich von null bis eins, um die Wahrscheinlichkeit des Zielwerts darzustellen. Die Softmax-Funktion kann auch für mehrere Gruppen zur Klassifizierung verwendet werden.
ANN mit Sklearn
ANN-Regressions- und Klassifizierungsmodelle können mit dem sklearn-Paket von Python erstellt werden, wie im folgenden Codeschnipsel gezeigt:
Classification
from
sklearn.neural_network
import
MLPClassifier
model
=
MLPClassifier
()
model
.
fit
(
X
,
Y
)
Regression
from
sklearn.neural_network
import
MLPRegressor
model
=
MLPRegressor
()
model
.
fit
(
X
,
Y
)
Hyperparameter
Wie wir in Kapitel 3 gesehen haben, hat ANN viele Hyperparameter. Einige der Hyperparameter, die in der Sklearn-Implementierung von ANN vorhanden sind und während der Rastersuche angepasst werden können, sind:
- Versteckte Ebenen (
hidden_layer_sizes
in sklearn) -
Es steht für die Anzahl der Schichten und Knoten in der ANN-Architektur. In der Sklearn-Implementierung von ANN steht das i-te Element für die Anzahl der Neuronen in der i-ten versteckten Schicht. Ein Beispielwert für die Rastersuche in der Sklearn-Implementierung kann [(20,),(50,),(20, 20),(20, 30, 20)] sein.
- Aktivierungsfunktion (
activation
in sklearn) -
Sie stellt die Aktivierungsfunktion einer versteckten Schicht dar. Einige der in Kapitel 3 definierten Aktivierungsfunktionen, wie
sigmoid
,relu
odertanh
, können verwendet werden.
Tiefes neuronales Netzwerk
ANNs mit mehr als einer versteckten Schicht werden oft als tiefe Netze bezeichnet. Wir bevorzugen die Bibliothek Keras, um solche Netze zu implementieren, da sie so flexibel ist. Die detaillierte Implementierung eines tiefen neuronalen Netzes in Keras wurde in Kapitel 3 gezeigt. Ähnlich wie MLPClassifier
und MLPRegressor
in sklearn für Klassifizierung und Regression, verfügt Keras über die Module KerasClassifier
und KerasRegressor
, die für die Erstellung von Klassifizierungs- und Regressionsmodellen mit tiefen Netzen verwendet werden können.
Ein beliebtes Problem im Finanzwesen ist die Zeitreihenvorhersage, bei der es darum geht, den nächsten Wert einer Zeitreihe auf der Grundlage eines historischen Überblicks vorherzusagen. Einige der tiefen neuronalen Netze, wie das rekurrente neuronale Netz (RNN), können direkt für die Zeitreihenvorhersage verwendet werden. Die Einzelheiten dieses Ansatzes werden in Kapitel 5 erläutert.
Vorteile und Nachteile
Der Hauptvorteil einer ANN ist, dass sie die nichtlineare Beziehung zwischen den Variablen recht gut erfasst. ANN können leichter umfangreiche Darstellungen erlernen und sind gut für eine große Anzahl von Eingangsmerkmalen mit einem großen Datensatz geeignet. ANN ist flexibel in der Anwendung. Das zeigt sich an ihrem Einsatz in einer Vielzahl von Bereichen des maschinellen Lernens und der KI, einschließlich Reinforcement Learning und NLP, wie inKapitel 3 beschrieben.
Der größte Nachteil von ANN ist die Interpretierbarkeit des Modells, ein Nachteil, der oft nicht ignoriert werden kann und manchmal der entscheidende Faktor bei der Wahl eines Modells ist. ANN sind nicht gut für kleine Datensätze geeignet und erfordern eine Menge Optimierungsarbeit und Rätselraten. Die Wahl der richtigen Topologie/Algorithmen zur Lösung eines Problems ist schwierig. Außerdem ist ANN rechenintensiv und kann viel Zeit zum Trainieren benötigen.
ANNs für überwachtes Lernen im Finanzwesen nutzen
Wenn ein einfaches Modell wie die lineare oder logistische Regression perfekt für dein Problem geeignet ist, brauchst du dich nicht mit ANN zu befassen. Wenn du jedoch einen komplexen Datensatz modellierst und eine bessere Vorhersagekraft brauchst, solltest du die ANN ausprobieren. Die ANN ist eines der flexibelsten Modelle, wenn es darum geht, sich an die Form der Daten anzupassen, und ihr Einsatz für überwachte Lernprobleme kann eine interessante und wertvolle Übung sein.
Modell Leistung
Im vorigen Abschnitt haben wir uns mit der Rastersuche beschäftigt, um die richtigen Hyperparameter zu finden und eine bessere Leistung zu erzielen. In diesem Abschnitt werden wir diesen Prozess erweitern, indem wir die wichtigsten Komponenten der Bewertung der Modellleistung erörtern: Überanpassung, Kreuzvalidierung und Bewertungsmetriken.
Überanpassung und Unteranpassung
Ein häufiges Problem beim maschinellen Lernen ist die Überanpassung, d.h. das Erlernen einer Funktion, die die Trainingsdaten, aus denen das Modell gelernt hat, perfekt erklärt, aber nicht gut auf ungesehene Testdaten verallgemeinert werden kann. Eine Überanpassung liegt vor, wenn ein Modell so viel aus den Trainingsdaten lernt, dass es anfängt, Eigenheiten zu erkennen, die nicht repräsentativ für Muster in der realen Welt sind. Das wird besonders problematisch, wenn wir unsere Modelle immer komplexer machen. Underfitting ist ein verwandtes Problem, bei dem das Modell nicht komplex genug ist, um den zugrunde liegenden Trend in den Daten zu erfassen. Abbildung 4-5 veranschaulicht Overfitting und Underfitting. Das linke Feld in Abbildung 4-5 zeigt ein lineares Regressionsmodell; eine gerade Linie passt sich der wahren Funktion deutlich zu wenig an. Das mittlere Feld zeigt, dass ein Polynom hohen Grades die wahre Beziehung recht gut abbildet. Ein Polynom sehr hohen Grades passt dagegen fast perfekt zu der kleinen Stichprobe und schneidet bei den Trainingsdaten am besten ab, lässt sich aber nicht verallgemeinern und würde einen neuen Datenpunkt nur schlecht erklären.
Die Begriffe "Overfitting" und "Underfitting" sind eng mit dem Kompromiss zwischen Bias und Varianz verbunden. Bias bezieht sich auf den Fehler, der durch zu vereinfachende Annahmen oder fehlerhafte Annahmen im Lernalgorithmus entsteht. Bias führt zu einer Unteranpassung der Daten, wie in Abbildung 4-5 auf der linken Seite zu sehen ist. Ein hoher Bias bedeutet, dass unser Lernalgorithmus wichtige Trends unter den Merkmalen übersieht. Varianz bezieht sich auf den Fehler, der durch ein zu komplexes Modell entsteht, das versucht, die Trainingsdaten so gut wie möglich abzubilden. In Fällen mit hoher Varianz liegen die vorhergesagten Werte des Modells extrem nah an den tatsächlichen Werten aus dem Trainingssatz. Eine hohe Varianz führt zu einer Überanpassung, wie in Abbildung 4-5 auf der rechten Seite zu sehen ist. Um ein gutes Modell zu erhalten, brauchen wir eine geringe Verzerrung und eine geringe Varianz.
Es gibt zwei Möglichkeiten, die Überanpassung zu bekämpfen:
- Mehr Trainingsdaten verwenden
-
Je mehr Trainingsdaten wir haben, desto schwieriger ist es, die Daten zu überarbeiten, indem wir zu viel aus einem einzigen Trainingsbeispiel lernen.
- Regularisierung verwenden
-
Hinzufügen einer Strafe in der Verlustfunktion für die Erstellung eines Modells, das einem einzelnen Merkmal zu viel Erklärungskraft zuweist, oder das die Berücksichtigung von zu vielen Merkmalen erlaubt.
Das Konzept der Überanpassung und die Möglichkeiten, es zu bekämpfen, gelten für alle überwachten Lernmodelle. Die regularisierten Regressionen zum Beispiel bekämpfen die Überanpassung bei der linearen Regression, wie weiter oben in diesem Kapitel beschrieben.
Kreuzvalidierung
Eine der Herausforderungen beim maschinellen Lernen besteht darin, Modelle zu trainieren, die sich auch auf unbekannte Daten gut verallgemeinern lassen (Overfitting versus Underfitting oder ein Bias-Varianz-Kompromiss). Die Hauptidee hinter der Kreuzvalidierung besteht darin, die Daten einmal oder mehrmals aufzuteilen, so dass jede Aufteilung einmal als Validierungsset und der Rest als Trainingsset verwendet wird: Ein Teil der Daten (die Trainingsstichprobe) wird zum Trainieren des Algorithmus verwendet, und der verbleibende Teil (die Validierungsstichprobe) wird zur Abschätzung des Risikos des Algorithmus genutzt. Die Kreuzvalidierung ermöglicht es uns, zuverlässige Schätzungen des Generalisierungsfehlers des Modells zu erhalten. Am einfachsten lässt sie sich anhand eines Beispiels erklären. Bei der k-fachen Kreuzvalidierung teilen wir die Trainingsdaten nach dem Zufallsprinzip in k Foldings auf. Dann trainieren wir das Modell mit k-1 Falten und bewerten die Leistung auf der k-tenFalte. Wir wiederholen diesen Vorgang k-mal und bilden den Durchschnitt aus den Ergebnissen.
Abbildung 4-6 zeigt ein Beispiel für eine Kreuzvalidierung, bei der die Daten in fünf Sätze aufgeteilt werden und in jeder Runde einer der Sätze zur Validierung verwendet wird.
Ein potenzieller Nachteil der Kreuzvalidierung sind die Rechenkosten, vor allem wenn sie mit einer Gittersuche zur Abstimmung der Hyperparameter kombiniert wird. Die Kreuzvalidierung kann mit dem sklearn-Paket in ein paar Zeilen durchgeführt werden; wir werden die Kreuzvalidierung in den Fallstudien zum überwachten Lernen durchführen.
Im nächsten Abschnitt geht es um die Bewertungsmaßstäbe für die überwachten Lernmodelle, mit denen wir die Leistung der Modelle messen und vergleichen.
Bewertungsmetriken
Die Metriken, die zur Bewertung der Algorithmen für maschinelles Lernen verwendet werden, sind sehr wichtig. Die Wahl der Metriken beeinflusst, wie die Leistung von Algorithmen für maschinelles Lernen gemessen und verglichen wird. Die Metriken beeinflussen sowohl die Gewichtung der verschiedenen Merkmale in den Ergebnissen als auch die endgültige Wahl des Algorithmus.
Die wichtigsten Bewertungsmetriken für Regression und Klassifizierung sind in Abbildung 4-7 dargestellt.
Schauen wir uns zunächst die Bewertungsmetriken für die überwachte Regression an.
Mittlerer absoluter Fehler
Der mittlere absolute Fehler (MAE) ist die Summe der absoluten Unterschiede zwischen Vorhersagen und tatsächlichen Werten. Der MAE ist ein linearer Wert, was bedeutet, dass alle individuellen Unterschiede im Durchschnitt gleich gewichtet werden. Er gibt eine Vorstellung davon, wie falsch die Vorhersagen waren. Das Maß gibt Aufschluss über die Größe des Fehlers, aber nicht über die Richtung (z. B. Über- oder Unterprognose).
Mittlerer quadratischer Fehler
Der mittlere quadratische Fehler (MSE) ist die Standardabweichung der Unterschiede zwischen den vorhergesagten Werten und den beobachteten Werten (Residuen genannt). Er ähnelt dem mittleren absoluten Fehler, da er eine grobe Vorstellung von der Größe des Fehlers vermittelt. Wenn du die Quadratwurzel des mittleren quadratischen Fehlers ziehst, werden die Einheiten wieder in die ursprünglichen Einheiten der Ausgangsvariablen umgewandelt und können für die Beschreibung und Darstellung sinnvoll sein. Dies wird als Wurzel des mittleren quadratischen Fehlers (RMSE) bezeichnet.
Bereinigte R²-Kennzahl
Genau wie R² zeigt auch das bereinigte R² an, wie gut die Terme zu einer Kurve oder Linie passen, aber es wird um die Anzahl der Terme in einem Modell bereinigt. Er wird in der folgenden Formel angegeben:
wobei n die Gesamtzahl der Beobachtungen und k die Anzahl der Prädiktoren ist. Dasbereinigte R² ist immer kleiner als oder gleich dem R².
Auswahl einer Bewertungsmetrik für überwachte Regression
Wenn das Hauptziel die Vorhersagegenauigkeit ist, dann ist der RMSE die beste Bewertungskennzahl. Er ist rechnerisch einfach und leicht zu differenzieren. Der Verlust ist symmetrisch, aber größere Fehler fallen bei der Berechnung stärker ins Gewicht. Die MAEs sind symmetrisch, aber größere Fehler werden nicht stärker gewichtet. R² und bereinigtes R² werden oft für Erklärungszwecke verwendet, indem sie angeben, wie gut die ausgewählte(n) unabhängige(n) Variable(n) die Variabilität der abhängigen Variable(n) erklären.
Schauen wir uns zunächst die Bewertungsmetriken für die überwachte Klassifizierung an.
Klassifizierung
Der Einfachheit halber werden wir meist von einem binären Klassifizierungsproblem sprechen (d.h. nur zwei Ergebnisse, wie z.B. wahr oder falsch); einige gängige Begriffe sind:
- Echte Positivmeldungen (TP)
-
Positiv vorhergesagt und tatsächlich positiv.
- Falsch positive Ergebnisse (FP)
-
Positiv vorhergesagt und tatsächlich negativ.
- Echte Negative (TN)
-
Negativ vorhergesagt und tatsächlich negativ sind.
- Falsch-negative Ergebnisse (FN)
-
Negativ vorhergesagt und tatsächlich positiv.
Der Unterschied zwischen den drei gebräuchlichen Bewertungsmaßstäben für die Klassifizierung - Genauigkeit, Präzision und Wiedererkennung - ist in Abbildung 4-8 dargestellt.
Genauigkeit
Wie in Abbildung 4-8 dargestellt, ist die Genauigkeit die Anzahl der richtigen Vorhersagen im Verhältnis zu allen getroffenen Vorhersagen. Dies ist die gängigste Bewertungskennzahl für Klassifizierungsprobleme und wird auch am häufigsten missbraucht. Sie ist am besten geeignet, wenn es in jeder Klasse gleich viele Beobachtungen gibt (was selten der Fall ist) und wenn alle Vorhersagen und die damit verbundenen Vorhersagefehler gleich wichtig sind, was oft nicht der Fall ist.
Präzision
DiePräzision ist der prozentuale Anteil der positiven Instanzen an der Gesamtzahl der vorhergesagten positiven Instanzen. Der Nenner ist dabei die Modellvorhersage, die aus dem gesamten Datensatz als positiv erkannt wurde. Die Genauigkeit ist ein gutes Maß, wenn die Kosten für falsch-positive Vorhersagen hoch sind (z. B. bei der Erkennung von E-Mail-Spam).
Rückruf
DerRecall (oder die Sensitivität oder die True-Positive-Rate) ist der prozentuale Anteil der positiven Instanzen an der Gesamtzahl der tatsächlich positiven Instanzen. Der Nenner (wahr positiv + falsch negativ) ist also die tatsächliche Anzahl der positiven Fälle im Datensatz. Die Rückrufquote ist ein gutes Maß, wenn die Kosten für falsch-negative Fälle hoch sind (z. B. bei der Betrugserkennung).
Neben der Genauigkeit, der Präzision und der Wiedererkennung werden in den folgenden Abschnitten auch einige andere häufig verwendete Bewertungskennzahlen für die Klassifizierung diskutiert.
Fläche unter der ROC-Kurve
DieFläche unter der ROC-Kurve (AUC) ist eine Bewertungskennzahl für binäre Klassifizierungsprobleme. Die ROC-Kurve ist eine Wahrscheinlichkeitskurve, und AUC ist ein Maß für die Trennbarkeit. Er gibt an, wie gut das Modell zwischen den Klassen unterscheiden kann. Je höher der AUC-Wert, desto besser kann das Modell Nullen als Nullen und Einsen als Einsen vorhersagen. Ein AUC von 0,5 bedeutet, dass das Modell überhaupt keine Klassentrennung vornehmen kann. Die wahrscheinlichkeitstheoretische Interpretation des AUC-Wertes besagt, dass, wenn du zufällig einen positiven und einen negativen Fall auswählst, die Wahrscheinlichkeit, dass der positive Fall laut Klassifikator den negativen Fall übertrifft, durch den AUC-Wert gegeben ist.
Verwirrungsmatrix
Eine Konfusionsmatrix gibt Aufschluss über die Leistung eines Lernalgorithmus. Die Konfusionsmatrix ist einfach eine quadratische Matrix, die die Anzahl der wahr-positiven (TP), wahr-negativen (TN), falsch-positiven (FP) und falsch-negativen (FN) Vorhersagen eines Klassifikators angibt, wie in Abbildung 4-9 dargestellt.
Die Konfusionsmatrix ist eine praktische Darstellung der Genauigkeit eines Modells mit zwei oder mehr Klassen. Die Tabelle zeigt die Vorhersagen auf der x-Achse und die Ergebnisse der Genauigkeit auf der y-Achse. Die Zellen der Tabelle stehen für die Anzahl der Vorhersagen, die das Modell getroffen hat. Ein Modell kann zum Beispiel eine Null oder eine Eins vorhersagen, und jede Vorhersage kann tatsächlich eine Null oder eine Eins gewesen sein. Vorhersagen für null, die tatsächlich null waren, erscheinen in der Zelle für Vorhersage = 0 und tatsächlich = 0, während Vorhersagen für null, die tatsächlich eins waren, in der Zelle für Vorhersage = 0 und tatsächlich = 1 erscheinen.
Auswahl einer Bewertungsmetrik für überwachte Klassifizierung
Der Bewertungsmaßstab für die Klassifizierung hängt stark von der jeweiligen Aufgabe ab. So ist die Rückrufquote ein gutes Maß, wenn die Kosten für falsch-negative Ergebnisse hoch sind, wie z. B. bei der Betrugserkennung. Wir werden diese Bewertungsmaßstäbe in den Fallstudien näher untersuchen.
Modellauswahl
Die Auswahl des perfekten maschinellen Lernmodells ist sowohl eine Kunst als auch eine Wissenschaft. Bei maschinellen Lernmodellen gibt es nicht die eine Lösung oder den einen Ansatz, der für alle passt. Es gibt mehrere Faktoren, die deine Wahl eines maschinellen Lernmodells beeinflussen können. Das Hauptkriterium ist in den meisten Fällen die Leistung des Modells, die wir im vorherigen Abschnitt besprochen haben. Es gibt jedoch noch viele andere Faktoren, die bei der Modellauswahl zu berücksichtigen sind. Im folgenden Abschnitt gehen wir auf alle diese Faktoren ein und erörtern anschließend die Kompromisse zwischen den Modellen.
Faktoren für die Modellauswahl
Bei der Modellauswahl werden folgende Faktoren berücksichtigt:
- Einfachheit
-
Der Grad der Einfachheit des Modells. Einfachheit führt in der Regel zu schnelleren, besser skalierbaren und leichter verständlichen Modellen und Ergebnissen.
- Ausbildungszeit
-
Geschwindigkeit, Leistung, Speichernutzung und Gesamtzeit für das Modelltraining.
- Umgang mit Nichtlinearität in den Daten
-
Die Fähigkeit des Modells, die nichtlineare Beziehung zwischen denVariablen zu verarbeiten.
- Robustheit gegenüber Überanpassung
-
Die Fähigkeit des Modells, mit Overfitting umzugehen.
- Größe des Datensatzes
-
Die Fähigkeit des Modells, mit einer großen Anzahl von Trainingsbeispielen imDatensatz umzugehen.
- Anzahl der Merkmale
-
Die Fähigkeit des Modells, mit der hohen Dimensionalität des Merkmalsraums umzugehen.
- Modell Interpretation
-
Wie erklärbar ist das Modell? Die Interpretierbarkeit des Modells ist wichtig, denn sie ermöglicht es uns, konkrete Maßnahmen zur Lösung des zugrunde liegenden Problems zu ergreifen.
- Merkmal Skalierung
-
Erfordert das Modell, dass die Variablen skaliert oder normal verteilt sind?
Abbildung 4-10 vergleicht die überwachten Lernmodelle anhand der zuvor genannten Faktoren und zeigt eine allgemeine Faustregel auf, um die Suche nach dem besten Algorithmus für maschinelles Lernen7 für ein bestimmtes Problem einzugrenzen. Die Tabelle basiert auf den Vor- und Nachteilen der verschiedenen Modelle, die im Abschnitt über die einzelnen Modelle in diesem Kapitel erläutert werden.
Aus der Tabelle geht hervor, dass zu den relativ einfachen Modellen die lineare und die logistische Regression gehören, während die Komplexität in Richtung Ensemble und ANN zunimmt. Was die Trainingszeit angeht, so sind die linearen Modelle und CART im Vergleich zu Ensemble-Methoden und ANN relativ schnell zu trainieren.
Lineare und logistische Regression können keine nichtlinearen Beziehungen verarbeiten, alle anderen Modelle dagegen schon. SVM kann die nichtlineare Beziehung zwischen abhängigen und unabhängigen Variablen mit nichtlinearen Kerneln behandeln.
SVM und Random Forest neigen im Vergleich zu linearer Regression, logistischer Regression, Gradient Boosting und ANN weniger zum Overfitting. Der Grad der Überanpassung hängt auch von anderen Parametern wie der Datengröße und der Modellabstimmung ab und kann anhand der Ergebnisse der Testmenge für jedes Modell überprüft werden. Außerdem besteht bei Boosting-Methoden wie Gradient Boosting ein höheres Overfitting-Risiko als bei Bagging-Methoden wie Random Forest. Beim Gradient Boosting geht es darum, den Bias zu minimieren und nicht die Varianz.
Lineare und logistische Regressionen sind nicht in der Lage, große Datensätze und eine große Anzahl von Merkmalen gut zu verarbeiten. CART, Ensemble-Methoden und ANN hingegen können große Datensätze und viele Merkmale recht gut verarbeiten. Die lineare und die logistische Regression schneiden im Allgemeinen besser ab als andere Modelle, wenn der Datensatz klein ist. Durch die Anwendung von Techniken zur Variablenreduzierung (siehe Kapitel 7) können die linearen Modelle mit großen Datensätzen umgehen. Die Leistung von ANN steigt mit zunehmender Größe des Datensatzes.
Da die lineare Regression, die logistische Regression und CART relativ einfache Modelle sind, können sie im Vergleich zu den Ensemble-Modellen und ANN besser interpretiert werden.
Modell Kompromiss
Bei der Auswahl eines Modells ist es oft ein Kompromiss zwischen verschiedenen Faktoren. Mit ANN, SVM und einigen Ensemble-Methoden lassen sich sehr genaue Vorhersagemodelle erstellen, aber es kann sein, dass es ihnen an Einfachheit und Interpretierbarkeit mangelt und sie einen erheblichen Ressourcenaufwand für das Training benötigen.
Bei der Auswahl des endgültigen Modells können Modelle mit geringerer Interpretierbarkeit bevorzugt werden, wenn die Vorhersageleistung das wichtigste Ziel ist und es nicht notwendig ist zu erklären, wie das Modell funktioniert und Vorhersagen macht. In manchen Fällen ist die Interpretierbarkeit des Modells jedoch unerlässlich.
Beispiele, die sich an der Interpretierbarkeit orientieren, gibt es oft in der Finanzbranche. In vielen Fällen hat die Wahl eines maschinellen Lernalgorithmus weniger mit der Optimierung oder den technischen Aspekten des Algorithmus zu tun, sondern eher mit geschäftlichen Entscheidungen. Nehmen wir an, ein maschineller Lernalgorithmus wird verwendet, um den Kreditkartenantrag einer Person anzunehmen oder abzulehnen. Wenn der Antragsteller abgelehnt wird und beschließt, eine Beschwerde einzureichen oder rechtliche Schritte einzuleiten, muss das Finanzinstitut erklären, wie diese Entscheidung zustande gekommen ist. Während das bei ANN fast unmöglich ist, ist es bei entscheidungsbaumbasierten Modellen relativ einfach.
Verschiedene Modellklassen eignen sich gut für die Modellierung verschiedener zugrunde liegender Muster in den Daten. Ein guter erster Schritt ist es daher, schnell ein paar verschiedene Modellklassen zu testen, um herauszufinden, welche die zugrunde liegende Struktur des Datensatzes am effizientesten erfassen. Diesen Ansatz werden wir bei der Modellauswahl in allen unseren Fallstudien zum überwachten Lernen verfolgen.
Kapitel Zusammenfassung
In diesem Kapitel haben wir die Bedeutung von überwachten Lernmodellen im Finanzwesen erörtert und anschließend eine kurze Einführung in verschiedene überwachte Lernmodelle gegeben, darunter lineare und logistische Regression, SVM, Entscheidungsbäume, Ensemble, KNN, LDA und ANN. Wir haben das Training und die Abstimmung dieser Modelle in wenigen Codezeilen mit den Bibliotheken sklearn und Keras demonstriert.
Wir haben die gebräuchlichsten Fehlermetriken für Regressions- und Klassifikationsmodelle besprochen, den Kompromiss zwischen Verzerrung und Varianz erläutert und die verschiedenen Werkzeuge zur Steuerung des Modellauswahlprozesses mithilfe der Kreuzvalidierung vorgestellt.
Wir haben die Stärken und Schwächen der einzelnen Modelle vorgestellt und die Faktoren erörtert, die bei der Auswahl des besten Modells zu berücksichtigen sind. Außerdem haben wir den Kompromiss zwischen Modellleistung und Interpretierbarkeit diskutiert.
Im folgenden Kapitel werden wir uns mit den Fallstudien für Regression und Klassifizierung beschäftigen. Alle Fallstudien in den nächsten beiden Kapiteln bauen auf den Konzepten auf, die in diesem Kapitel und in den beiden vorangegangenen Kapiteln vorgestellt wurden.
1 Die Kreuzvalidierung wird später in diesem Kapitel ausführlich behandelt.
2 Siehe den Abschnitt über die Aktivierungsfunktion in Kapitel 3 für weitere Informationen über die Funktion sigmoid
.
3 MLE ist eine Methode, um die Parameter einer Wahrscheinlichkeitsverteilung so zu schätzen, dass die beobachteten Daten unter dem angenommenen statistischen Modell am wahrscheinlichsten sind.
4 Der Ansatz der Datenprojektion ähnelt dem PCA-Algorithmus, der in Kapitel 7 besprochen wurde.
5 Verzerrung und Varianz werden später in diesem Kapitel ausführlich beschrieben.
6 Split ist der Prozess der Umwandlung eines inhomogenen Elternknotens in zwei homogene Kindknoten (bestmöglich).
7 In dieser Tabelle werden AdaBoost und Extrabäume nicht berücksichtigt, da ihr Gesamtverhalten bei allen Parametern dem des Gradient Boosting bzw. des Random Forest ähnelt.
Get Maschinelles Lernen und Data Science Blueprints für Finanzen now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.