Enthält die Trainingsunterstichprobe bei der k-fachen Kreuzvalidierung einen Testsatz?

8

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

  1. Die vollständigen Daten sind in drei Sätze unterteilt: Trainingssatz, Testsatz und Validierungssatz (oder Teilstichproben in Wikipedias-Sprache).
  2. 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?

ozi
quelle
Randnotiz: "Validierung" hat in verschiedenen Bereichen unterschiedliche Bedeutungen. Einige Autoren verwenden es, um eine Art von Test anzugeben, der zur Auswahl von Modellen verwendet wird (ich würde vorschlagen, dass der Optimierungstestsatz intuitiver ist), während in anderen Bereichen die Validierung den Nachweis bedeutet, dass das endgültige Modell für seinen Zweck geeignet ist.
cbeleites unglücklich mit SX

Antworten:

10

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."

Yuanning
quelle
1
Die zweistufige Kreuzvalidierung wird auch als doppelte oder verschachtelte Kreuzvalidierung bezeichnet. Während verschachtelte CV- und Split-in-3-Sets-Strategien insofern ähnlich sind, als beide einen Testsatz zur Auswahl / Optimierung und den anderen zur Bewertung der Leistung des optimierten Modells verwenden, sind sie nicht gleich: verschachtelte k-fache Kreuzvalidierungsbuilds k * k '(normalerweise = k - 1) * nein. von getesteten Hyperparameter-Kombinations-Ersatzmodellen ist die direkte 3-Satz-Strategie nur eine für jede Hyperparameter-Kombination.
cbeleites unglücklich mit SX
(Das Wiki-Zitat spricht überhaupt nicht über den Zweck der Validierung, der sich von der Auswahl unterscheiden kann.)
Gläubige, die mit SX am
Können Sie meine Pseudocodes bestätigen?
Ozi
1

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:

function measure_performance(model, full_test_set, k_performance):
    subset_list <- divide full_test_set into k_performance subsets
    performances <- empty array
    for each sub_set in subset_list:
        test_set <- sub_set
        training_set <- the rest of the full_test_set
        model <- train model with training_set
        performance <- test model with test_set
        append performance to performances
    end for each
    return mean of the values in peformances
end function

Wenn wir jedoch eine Modellauswahl treffen müssen, sollten wir dies tun:

function select_model(data, k_select, k_performance):
    subset_list <- divide data into k_select subsets
    performances <- empty array
    for each sub_set in subset_list:
        validation_set <- assume that this sub_set is validation set
        test_set <- one other random sub_set (Question: How to select test_set)
        training_set <- assume remaining as training set
        model <- get a model with the help of training_set and validation_set
        performance <- measure_performance(model,test_set, k_performance)
    end for each
    return model with the best performance (for this, performances will be scanned)
end function
ozi
quelle
Soll k_performancedas Etikett für eine bestimmte Falte unter der Gesamtzahl der k_selectLeistungsfalten 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.
Clarpaul
Im Zusammenhang mit der Kreuzvalidierung wird das Problem der Modellauswahl, die nur auf den Trainingsdaten basiert (auch wenn diese innerhalb dieser Daten kreuzvalidiert sind ), hier speziell artikuliert: en.wikipedia.org/wiki/… . Die Behauptung (basierend auf mehreren Referenzen) ist, dass die kreuzvalidierten Leistungsschätzungen, die vollständig auf den Trainingsdaten basieren, trotz des Kreuzvalidierungsverfahrens einer hohen Varianz unterliegen (dh in Bezug auf die Auswahl der Trainingsdaten).
Clarpaul