Eine einfache anleitung zur k-fold-kreuzvalidierung
Um die Leistung eines Modells anhand eines Datensatzes zu bewerten, müssen wir messen, wie gut die vom Modell gemachten Vorhersagen mit den beobachteten Daten übereinstimmen.
Die gebräuchlichste Methode zur Messung ist die Verwendung des mittleren quadratischen Fehlers (MSE), der wie folgt berechnet wird:
MSE = (1/n)*Σ(y i – f(x i )) 2
Gold:
- n: Gesamtzahl der Beobachtungen
- y i : Der Antwortwert der i-ten Beobachtung
- f( xi ): Der vorhergesagte Antwortwert der i- ten Beobachtung
Je näher die Modellvorhersagen an den Beobachtungen liegen, desto niedriger ist der MSE.
In der Praxis verwenden wir den folgenden Prozess, um den MSE eines bestimmten Modells zu berechnen:
1. Teilen Sie einen Datensatz in einen Trainingssatz und einen Testsatz auf.
2. Erstellen Sie das Modell nur unter Verwendung der Daten aus dem Trainingssatz.
3. Verwenden Sie das Modell, um Vorhersagen über den Testsatz zu treffen und den MSE des Tests zu messen.
MSE-Tests geben uns eine Vorstellung davon, wie gut ein Modell mit Daten umgeht, die es zuvor noch nicht gesehen hat. Der Nachteil der Verwendung eines einzelnen Testsatzes besteht jedoch darin, dass der MSE-Test je nach den in den Trainings- und Testsätzen verwendeten Beobachtungen erheblich variieren kann.
Eine Möglichkeit, dieses Problem zu vermeiden, besteht darin, ein Modell mehrmals mit jeweils einem anderen Trainings- und Testsatz anzupassen und dann den Test-MSE als Durchschnitt aller Test-MSE zu berechnen.
Diese allgemeine Methode ist als Kreuzvalidierung bekannt und eine spezielle Form davon ist als k-fache Kreuzvalidierung bekannt.
K-Fold-Kreuzvalidierung
Die K-fache Kreuzvalidierung verwendet den folgenden Ansatz zur Bewertung eines Modells:
Schritt 1: Teilen Sie einen Datensatz zufällig in k Gruppen oder „Faltungen“ von ungefähr gleicher Größe auf.
Schritt 2: Wählen Sie eine der Falten als Halteset. Passen Sie die Schablone an die verbleibenden K-1-Falten an. Berechnen Sie den MSE-Test anhand der Beobachtungen in der gespannten Lage.
Schritt 3: Wiederholen Sie diesen Vorgang k -mal, wobei Sie jedes Mal einen anderen Satz als Ausschlusssatz verwenden.
Schritt 4: Berechnen Sie den Gesamt-MSE des Tests als Durchschnitt der k MSE des Tests.
Test MSE = (1/k)*ΣMSE i
Gold:
- k: Anzahl der Falten
- MSE i : Testen Sie MSE bei der i-ten Iteration
So wählen Sie K aus
Im Allgemeinen gilt: Je mehr Falten wir bei der k-fachen Kreuzvalidierung verwenden, desto geringer ist die MSE-Testverzerrung, aber desto höher ist die Varianz. Umgekehrt gilt: Je weniger Falten wir verwenden, desto höher ist die Verzerrung, aber desto geringer ist die Varianz. Dies ist ein klassisches Beispiel für den Bias-Varianz-Kompromiss beim maschinellen Lernen.
In der Praxis verwenden wir im Allgemeinen zwischen 5 und 10 Lagen. Wie in „An Introduction to Statistical Learning“ erwähnt, bietet diese Anzahl von Falten nachweislich ein optimales Gleichgewicht zwischen Bias und Varianz und liefert somit zuverlässige Schätzungen des MSE des Tests:
Zusammenfassend lässt sich sagen, dass mit der Wahl von k bei der k-fachen Kreuzvalidierung ein Bias-Varianz-Kompromiss verbunden ist.
Unter Berücksichtigung dieser Überlegungen führt man typischerweise eine k-fache Kreuzvalidierung mit k = 5 oder k = 10 durch, da empirisch gezeigt wurde, dass diese Werte Schätzungen der Testfehlerrate liefern, die weder eine übermäßig hohe Verzerrung noch eine sehr hohe Varianz aufweisen.
-Seite 184, Eine Einführung in das statistische Lernen
Vorteile der K-Fold-Kreuzvalidierung
Wenn wir einen Datensatz in einen einzelnen Trainingssatz und einen einzelnen Testsatz aufteilen, kann der anhand der Beobachtungen im Testsatz berechnete Test-MSE je nach den in den Trainings- und Testsätzen verwendeten Beobachtungen erheblich variieren.
Mithilfe der k-fachen Kreuzvalidierung können wir den MSE-Test mithilfe verschiedener Variationen von Trainings- und Testsätzen berechnen. Dies gibt uns eine viel größere Chance, eine unvoreingenommene Schätzung des MSE des Tests zu erhalten.
Die K-fache Kreuzvalidierung bietet auch einen Rechenvorteil gegenüber der Leave-One-Out-Kreuzvalidierung (LOOCV), da sie nur k -mal statt n- mal an ein Modell angepasst werden muss.
Bei Modellen, deren Anpassung lange dauert, kann die k-fache Kreuzvalidierung den Test-MSE viel schneller berechnen als LOOCV, und in vielen Fällen ist der von jedem Ansatz berechnete Test-MSE ziemlich ähnlich, wenn Sie eine ausreichende Anzahl von Falten verwenden.
K-Fold-Kreuzvalidierungserweiterungen
Es gibt mehrere Erweiterungen der k-fachen Kreuzvalidierung, darunter:
Wiederholte k-fache Kreuzvalidierung: Hier wird die k-fache Kreuzvalidierung einfach n- mal wiederholt. Immer wenn die Trainings- und Testsätze gemischt werden, wird die Verzerrung in der Test-MSE-Schätzung weiter reduziert, obwohl dies länger dauert als die normale k-fache Kreuzvalidierung.
Leave-One-Out-Kreuzvalidierung: Dies ist ein Sonderfall der k-fachen Kreuzvalidierung, bei der k = n ist. Mehr über diese Methode erfahren Sie hier .
Geschichtete k-fach-Kreuzvalidierung: Dies ist eine Version der k-fach-Kreuzvalidierung, bei der der Datensatz so neu angeordnet wird, dass jede Falte repräsentativ für das Ganze ist. Wie Kohavi feststellte, bietet diese Methode im Vergleich zur gewöhnlichen k-fachen Kreuzvalidierung tendenziell einen besseren Kompromiss zwischen Bias und Varianz.
Verschachtelte Kreuzvalidierung: Hier wird in jeder Kreuzvalidierungsfalte eine k-fache Kreuzvalidierung durchgeführt. Dies wird häufig verwendet, um während der Modellevaluierung eine Optimierung der Hyperparameter durchzuführen.