Was ist eine Kreuzvalidierung?
Kreuzvalidierung ist eine Vorgehensweise zur Bewertung der Leistung eines Algorithmus beim Machine Learning. Mit neuen Datensätzen, die nicht in der Trainingsphase genutzt wurden, wird die Güte der Vorhersage geprüft. Dies geschieht durch die Partitionierung des bekannten Datensatzes in Teilmengen für das Training und das Testen des Algorithmus und die verbleibenden Daten.
Jeder Durchlauf der Kreuzvalidierung umfasst eine zufällige Partitionierung des Originaldatensatzes in einen Trainingssatz und einen Testsatz. Der Trainingsdatensatz wird verwendet, um einen Algorithmus für überwachtes Lernen zu trainieren, und der Testdatensatz wird zur Bewertung von dessen Leistung verwendet. Dieser Vorgang wird mehrmals wiederholt und der mittlere Kreuzvalidierungsfehler als Leistungsindikator verwendet.
Warum ist die Kreuzvalidierung wichtig?
Beim Training eines Modells ist es wichtig, es nicht mit komplexen Algorithmen zu sehr (Overfitting) oder mit einfachen Algorithmen zu wenig (Underfitting) anzupassen. Die Wahl des Trainings- und Testsatzes ist entscheidend für die Reduzierung dieses Risikos. Es ist jedoch schwierig, den Datensatz so aufzuteilen, dass das Lernen und die Gültigkeit der Testergebnisse maximiert werden. Hier kommt die Kreuzvalidierung zum Einsatz. Um den besten Algorithmus für das Modell zu finden, bietet die Kreuzvalidierung verschiedene Techniken, die die Daten unterschiedlich aufteilen.
Die Kreuzvalidierung hilft ebenso bei der Auswahl des leistungsstärksten Modells durch Berechnung des Fehlers mithilfe des Testsatzes, der nicht zum Training verwendet wurde. Mithilfe des Testsatzes wird die Modellgenauigkeit berechnet und gezeigt, wie es mit zukünftigen Daten generalisiert wird.
Verbreitete Kreuzvalidierungstechniken
Zur Kreuzvalidierung steht eine Vielzahl an Techniken zur Verfügung. Zu den verbreitesten gehören:
- k-fach: Partitioniert Daten in k zufällig ausgewählte Teilmengen (oder Folds) ungefähr gleicher Größe. Eine Teilmenge wird zum Validieren des Modells verwendet, das mithilfe der restlichen Teilmengen trainiert wird. Dieser Vorgang wird k-mal wiederholt, sodass jede Teilmenge genau einmal zur Validierung verwendet wird. Der mittlere Fehler über alle k Partitionen wird als ε angegeben. Das ist eine der am meisten verbreiteten Vorgehensweisen für die Kreuzvalidierung. Sie kann jedoch lange dauern, da das Modell mehrmals trainiert werden muss. Das unten stehende Bild erläutert das Verfahren.
- Holdout: Partitioniert Daten für Training und Validierung in genau zwei Teilmengen im angegebenen Verhältnis. Bei dieser Methode werden Training und Test nur einmal ausgeführt, was die Ausführungszeit bei großen Datensätzen verkürzt, jedoch sollte der ausgegebene Fehler bei kleinen Datensätzen mit Bedacht interpretiert werden.
- Leaveout: Partitioniert Daten mit dem k-fach-Ansatz, bei dem k gleich der Gesamtanzahl der Beobachtungen in den Daten ist und alle Daten einmal als Testsatz verwendet werden. Auch bekannt als Leave-One-Out-Kreuzvalidierung (LOOKV).
- Wiederholte zufällige Teilstichproben: Erstellt mithilfe der Monte Carlo-Methode mehrere zufällige Partitionen von Daten aus, die als Trainings- und Testsatz verwendet werden, und fasst die Ergebnisse aller Ausführungen zusammen. Diese Technik funktioniert auf ähnliche Weise wie die k-fach-Methode, jedoch wird jeder Testsatz unabhängig ausgewählt. Das hat zur Folge, dass einige Datenpunkte mehr als einmal zum Testen verwendet werden können.
- Stratifikation: Partitioniert Daten so, dass sowohl Trainings- als auch Testsätze in etwa die gleichen Klassenanteile in der Reaktion oder im Ziel haben.
- Re-Substitution: Partitioniert die Daten nicht, sämtliche Daten werden zum Trainieren des Modells verwendet. Der Fehler wird durch Vergleichen des Ergebnisses mit tatsächlichen Werten ausgewertet. Diese Methode führt oft zu übermäßig optimistischen Schätzungen hinsichtlich der Leistung und sollte vermieden werden, wenn ausreichend Daten vorhanden sind.
Kreuzvalidierung kann ein rechenintensiver Vorgang sein, da Training und Validierung mehrmals durchgeführt werden. Sie ist jedoch ein entscheidender Schritt in der Modellentwicklung und verringert das Risiko eines Over- oder Underfittings eines Modells. Da jeder Partitionssatz unabhängig ist, kann die Analyse parallel ausgeführt werden, um den Vorgang zu beschleunigen. Für größere Datensätze werden Techniken wie Holdout oder Re-Substitution empfohlen, während andere besser für kleinere Datensätze geeignet sind, wie z. B. die k-fach-Methode und wiederholte zufällige Teilstichproben.
Kreuzvalidierung mit MATLAB
MATLAB® unterstützt Kreuzvalidierung und Machine Learning. Einige dieser Kreuzvalidierungsverfahren können Sie mit der Classification Learner-App und der Regression Learner-App verwenden.
Classification Learner-App für Training, Validierung und Abstimmung von Klassifikationsmodellen. In der Verlaufsliste werden verschiedene Typen von Classifiern gezeigt.
Regression Learner-App für Training, Validierung und Abstimmung von Regressionsmodellen. In der Verlaufsliste werden verschiedene Typen von Regressionsmodellen gezeigt.
Um rechenintensive Vorgänge zu beschleunigen, können Sie mit der Parallel Computing Toolbox™ simultane Berechnungen auf Multicore-Computern, Grafikkarten und Clustern durchführen.
Weitere Informationen zum Einsatz der Kreuzvalidierung bei Machine Learning -Problemen finden Sie in der Statistics and Machine Learning Toolbox™ sowie der Deep Learning Toolbox™ zur Verwendung mit MATLAB.
Beispiele und Anleitungen
E-Books und Artikel
Beispiele
Videos
Software-Referenz
Kreuzvalidierung – Häufig gestellte Fragen
Kreuzvalidierung ist eine Technik zur Modellbewertung, mit der die Leistungsfähigkeit eines Machine Learning-Algorithmus bei Vorhersagen für neue, nicht zum Training verwendete Datensätze bewertet wird, indem der bekannte Datensatz in Trainings- und Testteilmengen aufgeteilt wird.
Kreuzvalidierung hilft dabei, den besten Algorithmus für Ihr Modell zu finden, indem Daten auf unterschiedliche Weise aufgeteilt werden, um das Risiko von Überanpassung oder Unteranpassung zu reduzieren, und sie hilft zu berechnen, wie genau das Modell mit zukünftigen Daten verallgemeinern wird.
Die k-fache Kreuzvalidierung teilt Daten in k zufällig ausgewählte Teilmengen von ungefähr gleicher Größe, verwendet eine Teilmenge zur Validierung des auf den verbleibenden Teilmengen trainierten Modells und wiederholt diesen Vorgang k‑mal, sodass jede Teilmenge genau einmal zur Validierung verwendet wird; anschließend wird der durchschnittliche Fehler über alle k Partitionen berichtet.
Bei der k-fachen Kreuzvalidierung werden Training und Testen k‑mal mit unterschiedlichen Partitionen durchgeführt und die Ergebnisse gemittelt, während bei der Holdout‑Methode die Daten zufällig in genau zwei Teilmengen für Training und Validierung aufgeteilt werden und das Training und Testen nur einmal ausgeführt wird.
LOOCV ist ein k‑facher Ansatz, bei dem k der Gesamtanzahl der Beobachtungen in den Daten entspricht; das heißt, alle Daten werden jeweils einmal als Testmenge verwendet, wobei jedes Mal genau eine Beobachtung zurückgehalten wird.
Verwenden Sie stratifizierte Kreuzvalidierung, wenn Trainings- und Testmengen ungefähr die gleichen Klassenanteile in der Antwort- oder Zielvariablen haben sollen.
Ja, Sie können Kreuzvalidierung-Analysen in MATLAB mit der Classification Learner App und der Regression Learner App durchführen. Sie können das Parallel Computing Toolbox verwenden, um rechenintensive Operationen auf Mehrkernprozessoren, GPUs und Clustern zu beschleunigen.
Für größere Datensätze wird oft einfache Holdout-Validierung empfohlen, während k‑fache Kreuzvalidierung und wiederholtes zufälliges Untersampling besser für kleinere Datensätze geeignet sind.
Siehe auch: Statistics and Machine Learning Toolbox, Überwachtes Lernen, Merkmalsauswahl, Regularisierung, Lineares Modell, Überanpassung