Cross-Validation kurz und knapp:
- Cross-Validation testet die Güte unseres Modells
- Holdout-Methode: Daten werden in Test- und Trainingsdaten aufgeteilt. Die Trainingsdaten bilden das Modell und die Testdaten bewerten es.
- k-Fold Cross-Validation: Die Holdout-Methode wird k-mal wiederholt mit verschiedenen Blöcken von Test- und Trainingsdaten.
- Leave-one-out: Alle Daten bis auf eines sind die Trainingsdaten. Das übrige Element testet das Modell. Der Algorithmus wiederholt das mit allen Elementen im Datensatz.
Was ist Cross-Validation?
Cross Validation (Kreuzvalidierung) ist ein Verfahren, um zu prüfen, wie gut die Vorhersagekraft eines statistischen Modells ist. Dabei wird der erwartete Vorhersage-Fehler geschätzt und untereinander verglichen.
Dabei teilen wir unsere Daten in Trainings- und Testdaten auf. Die Trainingsdaten bilden das Fundament unseres Algorithmus. Die Testdaten dienen dazu, zu überprüfen, wie viele Fehler der Algorithmus macht, um damit die Genauigkeit zu überprüfen.
Diese Genauigkeit kann man daraufhin mit unterschiedlichen Machine-Learning Algorithmen vergleichen, um das beste Modell zu finden. Alternativ können wir bei einer niedrigen Vorhersagegenauigkeit auch unsere Modellparameter anpassen oder unsere Daten aufbereiten.
Das Besondere bei diesen Methoden ist, dass keine weiteren Informationen neben den Trainingsdaten des Modells notwendig sind. Das ist häufig von großem Vorteil, wenn z. B. wenig Daten vorhanden sind und deswegen einen Großteil für das Training des Modells aufgewendet wird.
Dazu werden häufig drei Methoden verwendet: Holdout Methode, k-Fold Cross-Validation und Leave-one-out.
Holdout-Methode
Bei einem größeren Datensatz werden die Daten in der Holdout-Methode bspw. 80/20 in Trainings- und Testdaten aufgeteilt. 80% der Daten werden als Trainingsdaten benutzt, 20% als Testdaten.
Die Trainingsdaten bilden das Fundament für das Modell und die Testdaten bewerten die Güte des Modells.
Ein wesentlicher Nachteil ist, dass man zufälligerweise ungünstige Trainings- und Testdaten erwischt, welche den Datensatz als „Lucky-Sample“ unrealistisch widerspiegeln. Im oberen Bild könnten die Trainingsdaten zufälligerweise nur aus Hunden bestehen. Die Katzen in den Testdaten könnten damit also nicht von unserem Modell erkannt werden, weil es im Training noch nie eine Katze gesehen hat.
Gegen dieses Problem verschafft die k-Fold Cross-Validation Abhilfe.
k-Fold Cross-Validation
Die k-Fold Cross-Validation teilt unsere Trainingsdaten in K zufällig gleich große Blöcke (= Folds) auf. Ein Fold an Daten wird zum Testen des Modells verwendet und die restlichen Folds zum Trainieren.
Bis hierhin ist es zur Holdout-Methode identisch. Der Unterschied ist, dass danach der ganze Prozess wiederholt wird. Mit dem Unterschied, dass ein anderer Fold zum Testen verwendet wird und alle anderen wieder zum Trainieren. Das ganze Prozedere wiederholt sich K mal, bis alle Folds zum Testen verwendet wurden.
Am Ende war jeder Block einmal für die Testdaten zuständig und daraus wird ein Durchschnitt berechnet. Damit reduzieren wir das Risiko, zufällig nicht-repräsentative Testdaten auszuwählen. Durch das Wiederholen wird das Ergebnis robuster, da die Varianz sinkt.
Leave-One-Out
Die Leave-One-Out Methode wird meistens bei einer kleinen Anzahl von Daten genutzt. Daher möchte man so wenig Trainingsdaten wie möglich als Testdaten verlieren.
Man nimmt alle Daten, entfernt eine davon, trainiert mit den übrigen Daten und testet mit dem einen entfernten Beispiel. Dieses kommt zurück in die Trainingsdaten und das Prozedere wird mit einem neuen Element wiederholt. Das wird für alle Elemente im Datensatz durchgeführt und anschließend wird der Durchschnitt verwendet.
Diese Methode ist sehr rechenintensiv und eignet sich daher nicht bei großen Datensätzen. Trotzdem lohnt sich der Versuch bei genügend Rechenkapazität, da man die Daten hiermit ausgiebig testen kann.
Die Leave-One-Out Cross-Validation ist quasi eine k-Fold Cross-Validation, bei der die Anzahl der Folds (= k) der Anzahl aller Daten (= N) gleicht.