Kreuzvalidierung

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.
Bildbeispiele für Kreuzvalidierung
  • 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 das Training

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 das Training

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.

Siehe auch: Statistics and Machine Learning Toolbox, Machine Learning, Überwachtes Lernen, Merkmalsauswahl, Regularisierung, Lineares Modell, Überanpassung