Erfahren Sie, wie Kreuzvalidierung die Modellgeneralisierung verbessert und Überanpassung verhindert. Entdecken Sie, wie Sie mit Ultralytics eine K-Fold-Bewertung für robustes ML implementieren können.
Die Kreuzvalidierung ist ein robustes statistisches Resampling-Verfahren, das zur Bewertung der Leistung von Modellen des maschinellen Lernens (ML) anhand einer begrenzten Datenstichprobe verwendet wird. Im Gegensatz zu einer Standard-Holdout-Methode, bei der die Daten in einen einzigen Trainings- und Testsatz aufgeteilt werden, umfasst die Kreuzvalidierung die Aufteilung des Datensatzes in mehrere Teilmengen, um sicherzustellen, dass jeder Datenpunkt sowohl für das Training als auch für die Validierung verwendet wird. Diese Technik ist entscheidend für die Beurteilung, wie sich die Ergebnisse einer statistischen Analyse auf einen unabhängigen Datensatz verallgemeinern lassen, und hilft dabei, Überanpassungen detect , bei denen ein Modell möglicherweise Trainingsbeispiele auswendig lernt, anstatt verallgemeinerbare Muster zu erlernen.
Die am häufigsten verwendete Variante dieser Technik ist die K-Fold-Kreuzvalidierung. Bei diesem Verfahren wird der gesamte Datensatz zufällig in k gleich große Gruppen oder „Folds” unterteilt. Der Trainingsprozess wird dann k-mal wiederholt. Bei jeder Iteration dient ein einzelner Fold als Validierungsdaten zum Testen des Modells, während die verbleibenden k-1 Folds als Trainingsdaten dienen.
Die endgültige Leistungskennzahl wird in der Regel durch Mittelwertbildung der Ergebnisse berechnet, wie z. B. Genauigkeit, Präzision oder mittlere durchschnittliche Präzision (mAP), die aus jeder Schleife gewonnen werden. Dieser Ansatz reduziert die mit einem einzelnen Versuch einer Train-Test-Aufteilung verbundene Varianz erheblich und liefert eine zuverlässigere Schätzung des Generalisierungsfehlers. Er stellt sicher, dass die Bewertung nicht durch eine willkürliche Auswahl der Testdaten verzerrt wird.
Die Kreuzvalidierung ist besonders nützlich, wenn mit kleineren Datensätzen gearbeitet wird oder wenn eine strenge Hyperparameteroptimierung durchgeführt wird. Während moderne Deep-Learning-Frameworks wie PyTorch die Trainingsschleife erleichtern , erfordert die Verwaltung der Folds eine sorgfältige Datenvorbereitung.
Das folgende Beispiel zeigt, wie Sie vorab generierte YAML-Konfigurationsdateien für ein 5-faches Kreuzvalidierungsexperiment mit dem YOLO26-Modell durchlaufen können. Dabei wird davon ausgegangen, dass Sie Ihren Datensatz bereits in fünf separate Konfigurationsdateien aufgeteilt haben.
from ultralytics import YOLO
# List of dataset configuration files representing 5 folds
fold_yamls = [f"dataset_fold_{i}.yaml" for i in range(5)]
for i, yaml_file in enumerate(fold_yamls):
# Load a fresh YOLO26 Nano model for each fold
model = YOLO("yolo26n.pt")
# Train the model, saving results to a unique project directory
results = model.train(data=yaml_file, epochs=20, project="cv_experiment", name=f"fold_{i}")
Weitere Informationen zur Automatisierung der Split-Generierung finden Sie im Leitfaden zu K-Fold-Kreuzvalidierung.
Die Kreuzvalidierung ist in Branchen unverzichtbar, in denen Daten rar und teuer in der Erhebung sind oder in denen sicherheitskritische Zuverlässigkeit erforderlich ist.
Die Integration der Kreuzvalidierung in den Entwicklungszyklus der KI liefert entscheidende Erkenntnisse über den Kompromiss zwischen Verzerrung und Varianz.
Es ist wichtig, die Kreuzvalidierung von anderen Bewertungsbegriffen zu unterscheiden:
Die Verwaltung der Artefakte, Metriken und Modelle aus mehreren Folds kann komplex sein. Ultralytics vereinfacht dies durch zentralisierte Experimentverfolgung , sodass Teams die Leistung verschiedener Folds vergleichen und Erkenntnisse aus der Modellbewertung mühelos visualisieren können .