Auf dieser Wikipedia- Seite im Unterabschnitt für die K-fache Kreuzvalidierung heißt es: "Bei der k-fachen Kreuzvalidierung wird die ursprüngliche Stichprobe zufällig in k gleich große Teilstichproben aufgeteilt. Von den k Teilstichproben wird eine einzelne Teilstichprobe als Validierungsdaten für beibehalten Testen des Modells und die verbleibenden k - 1 Teilproben werden als Trainingsdaten verwendet ". Testdaten sind überhaupt nicht im Bild.
Während in einem Buch, das ich lese, der Autor deutlich darauf hinweist
- Die vollständigen Daten sind in drei Sätze unterteilt: Trainingssatz, Testsatz und Validierungssatz (oder Teilstichproben in Wikipedias-Sprache).
- Von den k Unterproben wird eine Unterprobe als Validierungsdaten beibehalten, eine andere Unterprobe wird als Testdaten beibehalten und k-2 Unterproben werden als Trainingsdaten verwendet.
Was wahr ist?
Antworten:
Sie sind beide in ihrem eigenen Kontext korrekt. Sie beschreiben zwei verschiedene Arten der Modellauswahl in verschiedenen Situationen.
Wenn Sie Modellauswahl und -tests durchführen, werden Ihre Daten im Allgemeinen in drei Teile unterteilt: Trainingssatz, Validierungssatz und Testsatz. Sie verwenden Ihren Trainingssatz, um verschiedene Modelle zu trainieren, die Leistung Ihres Validierungssatzes zu schätzen, dann das Modell mit der optimalen Leistung auszuwählen und es an Ihrem Testsatz zu testen.
Wenn Sie dagegen die K-fache Kreuzvalidierung verwenden, um die Leistung eines Modells abzuschätzen, werden Ihre Daten in K-Faltungen unterteilt, Sie durchlaufen die K-Faltungen und verwenden jedes Mal eine Falte als Test (oder Validierung). Setze und benutze die restlichen (K-1) Falten als Trainingsset. Dann mitteln Sie über alle Falten, um die geschätzte Testleistung Ihres Modells zu erhalten. Darauf bezieht sich die Wikipedia-Seite.
Beachten Sie jedoch, dass dies zum Testen eines bestimmten Modells dient. Wenn Sie mehrere Kandidatenmodelle haben und auch eine Modellauswahl durchführen möchten, müssen Sie ein Modell nur mit Ihrem Trainingssatz auswählen, um diesen subtilen Irrtum der zirkulären Logik zu vermeiden. Sie teilen also Ihre (K-1) Falten-Trainingsdaten weiter in zwei Teile, einen für das Training und einen für die Validierung. Dies bedeutet, dass Sie zuerst eine zusätzliche Kreuzvalidierung durchführen, um das optimale Modell innerhalb der (K-1) -Falten auszuwählen, und dann dieses optimale Modell auf Ihrer Testfalte testen. Mit anderen Worten, Sie führen eine zweistufige Kreuzvalidierung durch, eine ist die K-fache Kreuzvalidierung im Allgemeinen, und innerhalb jeder Kreuzvalidierungsschleife gibt es eine zusätzliche (K-1) -fache Kreuzvalidierung für Modellauswahl. Dann haben Sie das, was Sie in Ihrer Frage angegeben haben: "Von den k Unterproben wird eine Unterprobe als Validierungsdaten beibehalten, eine andere Unterprobe wird als Testdaten beibehalten und k-2 Unterproben werden als Trainingsdaten verwendet."
quelle
Hier wiederhole ich, was ich aus der Antwort von @Yuanning und den Kommentaren von @cbeleites in Pseudocode-Form gesammelt habe. Dies kann für Leute wie mich hilfreich sein.
Um die Leistung eines bestimmten Modells zu messen, benötigen wir nur Trainings- und Testsätze:
Wenn wir jedoch eine Modellauswahl treffen müssen, sollten wir dies tun:
quelle
k_performance
das Etikett für eine bestimmte Falte unter der Gesamtzahl derk_select
Leistungsfalten sein? Ich nehme an, dies geht auf Ihre Frage zu "So wählen Sie test_set aus". Ich würde mich auch über ein spezifisches Feedback dazu freuen. Ich habe gesehen, dass diese "verschachtelte" Kreuzvalidierung für die Modellauswahl angedeutet, aber nie im Detail beschrieben wurde.