Wie wählt man einen Klassifikator nach der Kreuzvalidierung?

12

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?

Armon Safai
quelle
Ich denke, diese Frage hängt stark von der Metrik ab, die zur Bestimmung des "besten Ansatzes" verwendet wird. Quantifizierbar viele Leute verwenden Genauigkeit, aber abhängig vom Datensatz können andere Metriken wie ein harmonischer Mittelwert wie F1-Score verwendet werden. Die Wahl der Metrik kann also ebenso wichtig sein.
Nathan McCoy
@ NathanMcCoy gut angenommen, wir wählen Genauigkeit, würden wir den Klassifikator mit der höchsten Testgenauigkeit wählen?
Armon Safai
Sicher! Ich versuche nur, etwas anderes zu erwähnen, worüber ich nachdenken muss :)
Nathan McCoy

Antworten:

15

Sie führen eine Kreuzvalidierung durch, wenn Sie eine der beiden folgenden Aktionen ausführen möchten:

  • Modellauswahl
  • Fehlerschätzung eines Modells

Die Modellauswahl kann in verschiedenen Szenarien erfolgen:

  • Auswählen eines Algorithmus im Vergleich zu anderen für ein bestimmtes Problem / einen bestimmten Datensatz
  • Auswählen von Hyperparametern eines bestimmten Algorithmus für ein bestimmtes Problem / einen bestimmten Datensatz

(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

Javierfdr
quelle
Ich verstehe, müssen Sie wirklich separate Testdaten haben oder können Sie Ihren Klassifikator einfach auf 100% aller Daten trainieren, die Sie haben, da wir bereits eine Kreuzvalidierung durchgeführt haben und den ungefähren Testfehler für das Modell erhalten haben?
Armon Safai
+1 für "wählte diejenige, die in Bezug auf Fehler und deren Varianz zwischen Falten besser abschneidet ". Jeder scheint die Varianz zwischen den Falten bei der Auswahl der Modelle zu ignorieren.
Stmax
Warum sollte ich mich um den Testfehler kümmern, wenn mir nur der CV-Fehler am Herzen liegt? Ich habe gefragt, weil Sie "wirklich über den geschätzten Fehler geschrieben haben, der durch das CV-Verfahren verursacht wurde".
HelloWorld
Eine andere Frage. Was ist, wenn das beste Modell aus dem Lebenslauf nicht das beste Modell ist, wenn es für den gesamten Datensatz erstellt wurde?
HelloWorld
1
Sie bauen das Modell auf den 100% der Daten auf, dh auf den 100% der Daten, die für die Kreuzvalidierung verwendet werden. Wenn Sie zuvor die ursprünglichen Daten für Training und weitere Tests auf 80% -20% aufgeteilt haben, führen Sie einen Lebenslauf mit 80% durch, wählen Sie das Modell aus und trainieren Sie die gesamten 80% neu. Wenn Sie in diesem Fall einen Testsatz haben (20%), können Sie nur sehen, wie sich das Verhalten mit neuen unsichtbaren Daten verhält (Sie können sich das als Daten vorstellen, die in Zukunft verfügbar wurden), aber die von Ihnen verwendete Fehlerabschätzung stammt aus dem Lebenslauf . Hoffentlich wird ein ähnlicher Fehler bei neuen Daten auftreten, wenn es sich um ein gutes Modell handelt (diese 20% oder tatsächlich neue Daten). @ArmonSafai
Javierfdr
8

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.

Tuomastik
quelle
Ich dachte, die k-fache Kreuzvalidierung erzeugt k verschiedene Modelle, da es 10 verschiedene Sätze von Trainingsdaten gibt.
Armon Safai
Schau dir meine aktualisierte Antwort an. Ich habe es verfeinert, um die Frage direkter anzusprechen und mit einem Beispiel besser zu erklären.
Tuomastik
Ich verstehe, wenn Sie also endlich Ihren Klassifikator trainieren, verwenden Sie ALLE Ihre Daten, um den Klassifikator zu trainieren, nachdem Sie Ihren Algorithmus aus der Kreuzvalidierung ausgewählt haben
Armon Safai
Ja, wenn Sie keine weiteren Analysen wie die Hyperparameteroptimierung durchführen möchten, die eine verschachtelte Kreuzvalidierung erfordern, bei der die innere CV-Schleife für die Optimierung der Hyperparameter sorgt und die äußere CV-Schleife die Modellleistung für einen unabhängigen Datensatz mit optimaler Leistung bewertet Hyperparameter.
Tuomastik
1

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

Hima Varsha
quelle
Also, wenn wir die Kreuzvalidierung durchführen, wählen wir einfach das Modell mit der höchsten Testgenauigkeit aus?
Armon Safai
Wenn Sie Test sagen, meinen Sie den Test des Validierungsdatensatzes, oder?
Hima Varsha
ja das ist was ich meine
Armon Safai
Sobald wir die Kreuzvalidierung verwendet haben, um das leistungsfähigere Modell auszuwählen (zum Beispiel haben Sie 2 Modelle - lineare Regression oder neuronales Netzwerk), trainieren wir dieses Modell (ob es nun die lineare Regression oder das neuronale Netzwerk ist) für alle Daten
Hima Varsha
1
@HimaVarsha Also, wenn wir uns entscheiden, den Durchschnitt zu nehmen, wie würden wir den "gemittelten Klassifikator" wählen?
Armon Safai