Sollten wir bei der k-fachen Kreuzvalidierung nur den Klassifikator mit der höchsten Testgenauigkeit verwenden? Was ist im Allgemeinen der beste Ansatz, um einen Klassifikator aus einer Kreuzvalidierung zu gewinnen?
machine-learning
cross-validation
Armon Safai
quelle
quelle
Antworten:
Sie führen eine Kreuzvalidierung durch, wenn Sie eine der beiden folgenden Aktionen ausführen möchten:
Die Modellauswahl kann in verschiedenen Szenarien erfolgen:
(Bitte beachten Sie, dass Sie bei der Auswahl eines Algorithmus - besser Modell genannt - und bei der Suche nach Hyperparametern auch die Nested Cross Validation durchführen müssen. Ist Nested-CV wirklich erforderlich? )
Die Kreuzvalidierung stellt bis zu einem gewissen Grad sicher, dass die Fehlerschätzung als Verallgemeinerungsfehler für dieses Modell am nächsten kommt (obwohl dies sehr schwer zu approximieren ist). Wenn Sie den durchschnittlichen Fehler unter den Falten beobachten, können Sie eine gute Projektion des erwarteten Fehlers für ein Modell erhalten, das auf dem vollständigen Datensatz basiert. Es ist auch wichtig, die Varianz der Vorhersage zu beobachten, dh wie stark der Fehler von Falte zu Falte variiert. Wenn die Abweichung zu groß ist (erheblich unterschiedliche Werte), ist das Modell in der Regel instabil. Bootstrapping ist die andere Methode, die in diesem Sinne eine gute Annäherung liefert. Ich empfehle, Abschnitt 7 des Buches "Elemente des statistischen Lernens", das kostenlos bei ELS-Standford erhältlich ist, aufmerksam zu lesen
Wie bereits erwähnt, darf das gebaute Modell in keiner der Faltungen verwendet werden. Stattdessen müssen Sie das Modell mit dem vollständigen Datensatz (der in Falten aufgeteilt wurde) neu erstellen. Wenn Sie einen getrennten Testsatz haben, können Sie ihn verwenden, um dieses endgültige Modell zu testen. Dabei erhalten Sie einen ähnlichen (und mit Sicherheit höheren) Fehler als bei CV. Sie sollten sich jedoch auf den geschätzten Fehler verlassen, der durch das CV-Verfahren angegeben wird.
Nach der Durchführung des Lebenslaufs mit verschiedenen Modellen (Algorithmuskombination usw.) wurde das ausgewählt, das hinsichtlich des Fehlers und seiner Varianz zwischen den Falten besser abschneidet. Sie müssen das Modell mit dem gesamten Datensatz neu erstellen. Hier kommt eine häufige Verwirrung: Wir beziehen uns allgemein auf die Modellauswahl, wobei wir annehmen, dass das Modell das vorhersagebereite Modell ist, das auf Daten basiert. In diesem Fall bezieht es sich jedoch auf die Kombination von Algorithmus + Vorverarbeitungsprozeduren, die Sie anwenden. Um das tatsächliche Modell zu erhalten, das Sie für die Erstellung von Vorhersagen / Klassifizierungen benötigen, müssen Sie es unter Verwendung der Gewinnerkombination für den gesamten Datensatz erstellen.
Das Letzte, was zu beachten ist, ist, dass, wenn Sie irgendeine Art von Vorverarbeitung der verwendeten Klasseninformationen (Merkmalsauswahl, LDA-Dimensionsreduktion usw.) anwenden, dies in jeder Falte und nicht zuvor für Daten durchgeführt werden muss. Dies ist ein kritischer Aspekt. Sollte dasselbe tun, wenn Sie Vorverarbeitungsverfahren anwenden, die direkte Dateninformationen beinhalten (PCA, Normalisierung, Standardisierung usw.). Sie können jedoch eine Vorverarbeitung anwenden, die nicht von Daten abhängt (Löschen einer Variablen nach einer Expertenmeinung, aber dies ist irgendwie offensichtlich). Dieses Video kann Ihnen dabei helfen: CV auf die richtige und die falsche Weise
Hier eine abschließende nette Erklärung zum Thema: Lebenslauf und Modellauswahl
quelle
Nein. Sie wählen keine der k-Klassifikatoren aus, die während der Kreuzvalidierung mit k-fach erstellt wurden. Zunächst besteht der Zweck der Kreuzvalidierung nicht darin, ein Vorhersagemodell zu erstellen, sondern zu bewerten, wie genau ein Vorhersagemodell in der Praxis funktioniert. Als zweites nehmen wir zum Zwecke der Argumentation an, Sie würden eine k-fache Kreuzvalidierung mit k = 10 verwenden, um herauszufinden, welcher der drei verschiedenen Klassifizierungsalgorithmen zur Lösung eines bestimmten Klassifizierungsproblems am besten geeignet wäre. In diesem Fall werden die Daten zufällig in k Teile gleicher Größe aufgeteilt. Einer der Teile ist für Tests reserviert und der Rest des k-1-Teils wird für das Training verwendet. Der Kreuzvalidierungsprozess wird k (fache) Male wiederholt, so dass bei jeder Iteration ein anderer Teil zum Testen verwendet wird. Nachdem Sie die Kreuzvalidierung durchgeführt haben, sehen Sie sich die Ergebnisse aus jeder Falte an und fragen sich, welcher Klassifizierungsalgorithmus (nicht eines der trainierten Modelle!) Am besten geeignet ist. Sie möchten nicht den Algorithmus auswählen, der bei einer der 10 Iterationen die höchste Testgenauigkeit aufweist, da die Testdaten für diese bestimmte Iteration möglicherweise zufällig sehr einfache Beispiele enthielten, die dann zu einer hohen Testgenauigkeit führten. Was Sie tun möchten, ist, den Algorithmus zu wählen, der die beste Genauigkeit liefert was dann zu einer hohen Testgenauigkeit führt. Was Sie tun möchten, ist, den Algorithmus zu wählen, der die beste Genauigkeit liefert was dann zu einer hohen Testgenauigkeit führt. Was Sie tun möchten, ist, den Algorithmus zu wählen, der die beste Genauigkeit liefertgemittelt über alle k Falten . Nachdem Sie den Algorithmus ausgewählt haben, können Sie ihn mit Ihren gesamten Trainingsdaten trainieren und Vorhersagen in der Natur treffen.
Dies würde den Rahmen dieser Frage sprengen, Sie sollten jedoch auch die Hyperparameter des Modells (falls vorhanden) optimieren, um den ausgewählten Algorithmus optimal zu nutzen. Normalerweise wird eine Hyperparameteroptimierung mithilfe einer Kreuzvalidierung durchgeführt.
quelle
Nehmen wir also an, Sie haben ein Training, von dem Sie 80% als Training und 20% als Validierungsdaten verwenden. Wir können die 80% trainieren und die restlichen 20% testen, aber es ist möglich, dass die 20%, die wir genommen haben, nicht mit den tatsächlichen Testdaten übereinstimmen und letztere möglicherweise schlecht abschneiden. Um dies zu verhindern, können wir die k-fache Kreuzvalidierung verwenden.
Nehmen wir also an, Sie haben verschiedene Modelle und möchten wissen, welche mit Ihrem Datensatz besser abschneiden. Die k-fache Kreuzvalidierung funktioniert hervorragend. Sie können die Validierungsfehler bei den k-Validierungsleistungen kennen und basierend darauf das bessere Modell auswählen. Dies ist im Allgemeinen der Zweck für die k-fache Kreuzvalidierung.
Kommt man nur zu einem Modell und prüft es mit einer k-fachen Kreuzvalidierung, kann man eine ungefähre Fehlerquote der Testdaten erhalten, aber
when you are actually training it finally, you can use the complete training data
(da hier davon ausgegangen wird, dass die gesamten Daten zusammen eine bessere Leistung erbringen als ein Teil davon) .Möglicherweise ist dies manchmal nicht der Fall, aber dies ist die allgemeine Annahme.)quelle