Wie wählt man ein Vorhersagemodell nach einer k-fachen Kreuzvalidierung?


148

Ich frage mich, wie ich ein Vorhersagemodell auswählen soll, nachdem ich die K-fache Kreuzvalidierung durchgeführt habe.

Dies mag umständlich formuliert sein. Lassen Sie mich dies näher erläutern: Wenn ich eine K-fache Kreuzvalidierung durchführe, verwende ich K Teilmengen der Trainingsdaten und erhalte K verschiedene Modelle.

Ich würde gerne wissen, wie man eines der K-Modelle auswählt, damit ich es jemandem vorstellen und sagen kann: "Dies ist das beste Modell, das wir produzieren können."

Ist es in Ordnung, eines der K-Modelle auszuwählen? Oder handelt es sich um eine bewährte Methode, z. B. die Auswahl des Modells, mit dem der Median-Testfehler erzielt wird?


2
Die Antworten finden Sie möglicherweise in der folgenden hilfreichen Frage: stats.stackexchange.com/questions/2306/…
BGreene

Sie müssen den 5-fachen Lebenslauf 100 Mal wiederholen und die Ergebnisse mitteln, um eine ausreichende Genauigkeit zu erzielen. Und die Antwort von @bogdanovist ist genau richtig. Mit dem Bootstrap erhalten Sie die gleiche Genauigkeitsschätzung mit weniger Modellanpassungen.
Frank Harrell

@Frank Harrell, warum sagst du, sind 100 Wiederholungen erforderlich (ich verwende normalerweise 10 Wiederholungen auf dem 10-fachen)? Ist dies eine Faustregel, da das OP keine Einzelheiten angegeben hat?
BGreene

2
Bei 10-fachem Lebenslauf ist es am besten, Wiederholungen durchzuführen. Weitere Wiederholungen werden mit 5-fach benötigt. Dies sind Faustregeln. Ein einzelner 10-facher Lebenslauf gibt eine instabile Antwort, dh wiederholen Sie die 10 Teilungen, und Sie bekommen genug von einer anderen Antwort, um sich Sorgen zu machen. 50
Frank Harrell

Fast ein genaues Duplikat: stats.stackexchange.com/questions/11602 mit vielen wertvollen Antworten. Vielleicht sollten diese Threads zusammengeführt werden, aber ich bin nicht sicher, in welche Richtung. Beide haben Antworten akzeptiert, die sehr gut sind. Aber der andere ist älter und hat mehr Ansichten / Upvotes, so dass es möglicherweise Sinn macht, diese mit der einen zu verschmelzen.
Amöbe

Antworten:


200

Ich denke, dass Ihnen noch etwas im Verständnis des Zwecks der gegenseitigen Validierung fehlt.

Lassen Sie uns einige Begriffe klarstellen. Wenn wir "ein Modell" sagen, beziehen wir uns auf eine bestimmte Methode, um zu beschreiben, wie sich einige Eingabedaten auf das beziehen, was wir vorherzusagen versuchen. Wir bezeichnen bestimmte Instanzen dieser Methode im Allgemeinen nicht als unterschiedliche Modelle. Sie könnten also sagen, dass ich ein lineares Regressionsmodell habe, aber Sie würden nicht zwei verschiedene Mengen der trainierten Koeffizienten als verschiedene Modelle bezeichnen. Zumindest nicht im Rahmen der Modellauswahl.

Wenn Sie also eine K-fach Kreuzvalidierung durchführen, testen Sie, wie gut Ihr Modell durch einige Daten trainiert werden kann, und sagen dann Daten voraus, die es nicht gesehen hat. Wir verwenden hierfür die Kreuzvalidierung, da Sie, wenn Sie mit allen Ihnen zur Verfügung stehenden Daten trainieren, keine zum Testen mehr haben. Sie könnten dies einmal tun, indem Sie beispielsweise 80% der Daten zum Trainieren und 20% zum Testen verwenden, aber was passiert, wenn die 20%, die Sie zum Testen ausgewählt haben, eine Reihe von Punkten enthalten, die besonders einfach (oder besonders schwer) sind? zu prognostizieren? Wir werden nicht die bestmögliche Schätzung der Lern- und Vorhersagemöglichkeiten des Modells erhalten haben.

Wir wollen alle Daten nutzen. Um das obige Beispiel einer 80/20-Aufteilung fortzusetzen, würden wir eine fünffache Kreuzvalidierung durchführen, indem wir das Modell fünfmal auf 80% der Daten trainieren und auf 20% testen. Wir stellen sicher, dass jeder Datenpunkt genau einmal im 20% -Testset endet. Wir haben daher jeden Datenpunkt verwendet, um zu verstehen, wie gut unser Modell die Aufgabe erfüllt, aus einigen Daten zu lernen und einige neue Daten vorherzusagen.

Der Zweck der Kreuzvalidierung besteht jedoch nicht darin, unser endgültiges Modell zu entwickeln. Wir verwenden diese 5 Instanzen unseres trainierten Modells nicht, um echte Vorhersagen zu treffen. Dafür wollen wir alle Daten nutzen, um das bestmögliche Modell zu finden. Der Zweck der Kreuzvalidierung ist die Modellprüfung, nicht die Modellbildung.

Nehmen wir an, wir haben zwei Modelle, ein lineares Regressionsmodell und ein neuronales Netzwerk. Wie können wir sagen, welches Modell besser ist? Wir können eine K-fache Kreuzvalidierung durchführen und sehen, welche sich bei der Vorhersage der Testsollwerte als besser erweist. Sobald wir jedoch die Kreuzvalidierung zur Auswahl des leistungsstärkeren Modells verwendet haben, trainieren wir dieses Modell (sei es die lineare Regression oder das neuronale Netzwerk) für alle Daten. Wir verwenden nicht die tatsächlichen Modellinstanzen, die wir während der Kreuzvalidierung trainiert haben, für unser endgültiges Vorhersagemodell.

Beachten Sie, dass es eine als Bootstrap-Aggregation bezeichnete Technik gibt (in der Regel auf "Bagging" abgekürzt), bei der Modellinstanzen verwendet werden, die auf ähnliche Weise wie bei der Kreuzvalidierung erstellt wurden, um ein Ensemble-Modell aufzubauen von deiner frage hier.


8
Ich stimme diesem Punkt vollkommen zu und habe darüber nachgedacht, alle Daten zu verwenden. Das heißt, wenn wir unser endgültiges Modell unter Verwendung des gesamten Datensatzes trainieren würden, würde dies dann nicht zu einer Überanpassung führen und damit zukünftige Vorhersagen sabotieren?
Berk U.

19
Nein! Eine Überanpassung hat mit der Komplexität des Modells zu tun. Sie hat nichts mit der Datenmenge zu tun, die zum Trainieren des Modells verwendet wird. Die Komplexität des Modells hängt mit der vom Modell verwendeten Methode zusammen, nicht mit den Werten, die die Parameter annehmen. Zum Beispiel, ob x ^ 2-Koeffizienten sowie x-Koeffizienten in ein Regressionsmodell einbezogen werden sollen.
Bogdanovist

17
@ Bogdanovist: Ich sage eher, dass Überanpassung damit zu tun hat, dass zu wenige Trainingsfälle für ein zu komplexes Modell vorliegen. Es hat also (auch) mit der Anzahl der Trainingsfälle zu tun. Mehr Trainingsfälle verringern jedoch das Risiko einer Überanpassung (für eine konstante Modellkomplexität).
Glaube

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.- Bedeutet dies, dass Sie bei einer Rastersuche mit K-facher Kreuzvalidierung die besten durch Rastersuche gefundenen Parameter verwenden und ein Modell auf die gesamten Trainingsdaten anwenden und dann die Generalisierungsleistung mithilfe des Testsets bewerten würden?
Arun

4
@arun, wenn Sie die k-fache Kreuzvalidierung verwendet und das beste Modell mit den besten Parametern und Hyperparametern ausgewählt haben, müssen Sie nach dem Anpassen des endgültigen Modells über dem Trainingssatz nicht erneut mit a auf Leistung prüfen Test-Set. Dies liegt daran, dass Sie bereits überprüft haben, wie sich das Modell mit den angegebenen Parametern bei unsichtbaren Daten verhalten hat.
Sandeep S. Sandhu

29

Lassen Sie mich zusätzlich zu Bogdanovists Antwort einige Punkte ansprechen

k

Nun gibt es einige Annahmen in diesem Prozess.


  • k

  • k
    Nk-1kkk

  • Die endliche Anzahl von Fällen bedeutet, dass die Leistungsmessung aufgrund der endlichen Anzahl von Testfällen einem zufälligen Fehler (Varianz) unterliegt. Diese Varianzquelle unterscheidet sich von der Modellinstabilitätsvarianz (und erhöht diese somit).

Die Unterschiede in der beobachteten Leistung sind auf diese beiden Varianzquellen zurückzuführen.

Die "Auswahl", über die Sie nachdenken, ist eine Datensatzauswahl: Wenn Sie eines der Ersatzmodelle auswählen, müssen Sie eine Teilmenge der Trainingsmuster auswählen und behaupten, dass diese Teilmenge der Trainingsmuster zu einem überlegenen Modell führt. Während dies der Fall sein mag, ist die "Überlegenheit" gewöhnlich falsch. In jedem Fall müssen Sie dieses ausgewählte Modell mit neuen unbekannten Daten validieren (die Leistung messen), da die Auswahl des "besten" Ersatzmodells eine datengesteuerte Optimierung ist. Der Testsatz innerhalb dieser Kreuzvalidierung ist nicht unabhängig, da er zur Auswahl des Ersatzmodells verwendet wurde.

Vielleicht möchten Sie sich unsere Arbeit ansehen, es geht um eine Klassifizierung, bei der die Dinge normalerweise schlechter sind als bei einer Regression. Es wird jedoch gezeigt, wie sich diese Ursachen für Varianz und Verzerrung addieren.
Beleites, C. und Neugebauer, U. und Bocklitz, T. und Krafft, C. und Popp, J .: Stichprobenplanung für Klassifizierungsmodelle. Anal Chim Acta, 2013, 760, 25 & ndash; 33.
DOI: 10.1016 / j.aca.2012.11.007
akzeptiertes Manuskript auf arXiv: 1211.1323


Sie und Bogdanovist sind sich nicht picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.
einig,

Insbesondere bei kleinen Datensätzen, bei denen das Auslassen von Daten aus dem Lebenslauf möglicherweise nicht möglich ist, das Risiko einer Überanpassung Ihres Modells jedoch ebenfalls hoch ist! Zur Klärung dieses Problems sind Verweise erforderlich.
Jpcgandre

5
@jpcgandre: Ich sehe keine Meinungsverschiedenheiten. Bogdanovist erklärt, wie das Modell der Wahl aus den durch Kreuzvalidierung ausgewählten Hyperparametern berechnet werden kann, und ich fügte hinzu, dass das Modell nach einer solchen Auswahl eine andere (äußere) unabhängige Validierungsebene durchlaufen muss. Mit anderen Worten, z. B. ein verschachteltes Validierungsdesign: innere Validierungsschleife für die Hyperparameterauswahl, äußere Schleife zum Testen der ausgewählten Modelle (wenn Sie genügend Fälle haben, können Sie auch ein unabhängiges Testset auswählen).
Glaube

5
Die innere / äußere Validierung ist für die Kreuzvalidierung eingerichtet und wird als doppelte oder verschachtelte Kreuzvalidierung bezeichnet. Ich habe gesehen, dass sie auch als modellübergreifende Validierung bezeichnet wird ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ). Bei unabhängigen Testsätzen entspricht dies der Aufteilung in drei Sätze: Zug- / (Optimierungs-) Validierung / Test (= Endvalidierung). Wenn Sie so wenige Fälle haben, in denen Sie Daten für einen Lebenslauf der zweiten Ebene nicht auslassen können, würde ich argumentieren, dass Sie Ihre Hyperparameter auf andere Weise korrigieren sollten, anstatt zu versuchen, durch Auswahl eines der Hyperparametersätze zu optimieren.
Glaube

@cbeleites Ich habe eine Frage. Würden Sie dann, um die endgültigen Modellparameter zu erhalten, den Durchschnitt der Hyperparameter aus jeder externen Falte nehmen und den gesamten Datensatz unter Verwendung dieses gemittelten Hyperparameters neu trainieren? Oder würde eine Hyperparametersuche in einem regulären Lebenslauf auch funktionieren, um die Stabilität dieser Methode mithilfe eines wiederholten verschachtelten Lebenslaufs zu bestätigen?
Michelle

11

Ich fand diesen hervorragenden Artikel, wie man ein letztes Modell des maschinellen Lernens trainiert, sehr hilfreich, um alle Unklarheiten zu beseitigen, die ich in Bezug auf die Verwendung des Lebenslaufs beim maschinellen Lernen habe.

Grundsätzlich verwenden wir CV (z. B. 80/20 Split, k-fach usw.), um abzuschätzen, wie gut Ihre gesamte Prozedur (einschließlich des Daten-Engineerings, der Wahl des Modells (dh des Algorithmus) und der Hyperparameter usw.) in Zukunft ungesehen abschneiden wird Daten. Und sobald Sie das Siegerverfahren ausgewählt haben, haben die angepassten Modelle von CV ihren Zweck erfüllt und können nun verworfen werden. Anschließend verwenden Sie das gleiche "Gewinnverfahren" und trainieren Ihr endgültiges Modell mit dem gesamten Datensatz.


1

Das ist eine sehr interessante Frage. Um dies zu verdeutlichen, sollten wir den Unterschied zwischen Modell und Modellbewertung verstehen. Wir verwenden den vollständigen Trainingssatz, um ein Modell zu erstellen, und wir gehen davon aus, dass dieses Modell endlich verwendet wird.

Eine K-fache Kreuzbewertung würde K-Modelle erstellen, aber alle würden fallengelassen. Die K-Modelle werden nur zur Auswertung herangezogen. und es wurden nur Messdaten erstellt, die Ihnen zeigen, wie gut dieses Modell mit Ihren Daten übereinstimmt.

Beispielsweise wählen Sie LinearRegression algo und führen zwei Operationen mit demselben Trainingssatz durch: eine mit 10-facher Kreuzvalidierung und die andere mit 20-facher. Das Regressions- (oder Klassifikator-) Modell sollte dasselbe sein, aber der Korrelationskoeffizient und der relative Quadratfehler der Wurzel sind unterschiedlich.

Nachfolgend finden Sie zwei Läufe für die 10-fache und 20-fache Kreuzvalidierung mit weka

1. Lauf mit 10-fach

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

2. Lauf mit 20-fach

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

Ich bin nicht sicher, ob die obige Diskussion völlig richtig ist. Bei der Kreuzvalidierung können wir die Daten für jeden Lauf in Training und Testen aufteilen. Nur anhand der Trainingsdaten muss das Modell angepasst und die Optimierungsparameter für jede Modellklasse ausgewählt werden. In neuronalen Netzen sind die Abstimmungsparameter beispielsweise die Anzahl der Neuronen und die Auswahlmöglichkeiten für die Aktivierungsfunktion. Zu diesem Zweck werden nur die Trainingsdaten quervalidiert .

Sobald das beste Modell in jeder Klasse gefunden ist, wird das am besten passende Modell unter Verwendung der Testdaten bewertet. Die "äußere" Kreuzvalidierungsschleife kann verwendet werden, um eine bessere Schätzung der Testdatenleistung sowie eine Schätzung der Variabilität zu geben. Eine Diskussion kann dann die Testleistung für verschiedene Klassen vergleichen, z. B. Neuronale Netze vs. SVM. Es wird eine Modellklasse mit fester Modellgröße ausgewählt, und jetzt werden die gesamten Daten verwendet, um das beste Modell zu lernen.

Wenn Sie nun im Rahmen Ihres maschinellen Lernalgorithmus ständig die beste Modellklasse auswählen möchten (etwa jede Woche), muss auch diese Auswahl in den Trainingsdaten ausgewertet werden! Die Messung von Testdaten kann nicht verwendet werden, um die Auswahl der Modellklasse zu beurteilen, wenn es sich um eine dynamische Option handelt.


0

Warum verwenden wir die k-fache Kreuzvalidierung?

Die Kreuzvalidierung ist eine Methode zur Schätzung des Könnens einer Methode anhand nicht sichtbarer Daten. Wie bei einem Zugtest-Split.

Durch die Kreuzvalidierung werden systematisch mehrere Modelle für mehrere Teilmengen des Datensatzes erstellt und ausgewertet. Dies liefert wiederum eine Population von Leistungsmaßstäben .

  • Wir können den Mittelwert dieser Maßnahmen berechnen, um eine Vorstellung davon zu bekommen, wie gut das Verfahren im Durchschnitt abschneidet.
  • Wir können die Standardabweichung dieser Maße berechnen, um eine Vorstellung davon zu bekommen, wie stark die Fähigkeiten des Verfahrens in der Praxis variieren sollen.

Dies ist auch hilfreich, um einen differenzierteren Vergleich von Verfahren zu Verfahren zu ermöglichen, wenn Sie versuchen, den zu verwendenden Algorithmus und die zu verwendenden Datenvorbereitungsverfahren auszuwählen.

Außerdem sind diese Informationen von unschätzbarem Wert, da Sie den Mittelwert und die Streuung verwenden können, um ein Konfidenzintervall für die erwartete Leistung bei einem maschinellen Lernvorgang in der Praxis anzugeben.

Referenz

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.