Auswahl von K bei der K-fachen Kreuzvalidierung

136

Ich habe die fache Kreuzvalidierung jetzt einige Male verwendet, um die Leistung einiger Lernalgorithmen zu bewerten, aber ich war immer verwirrt, wie ich den Wert von wählen sollte .KKK

Ich habe oft einen Wert von gesehen und verwendet , aber das scheint mir völlig willkürlich zu sein, und ich verwende jetzt nur aus Gewohnheit, anstatt darüber nachzudenken. Mir scheint, dass Sie eine bessere Granularität erhalten, wenn Sie den Wert von verbessern. Idealerweise sollten Sie also Ihren sehr groß machen, aber es besteht auch die Gefahr, dass Sie voreingenommen sind.10 K KK=1010KK

Ich möchte wissen, wovon der Wert von abhängen sollte und wie ich darüber nachdenken sollte, wenn ich meinen Algorithmus auswerte. Ändert es etwas, wenn ich die geschichtete Version der Kreuzvalidierung verwende oder nicht?K

Charles Menguy
quelle

Antworten:

69

Die Wahl von ist etwas willkürlich. So entscheide ich mich für :kk=10k

  • Um die Varianz des CV-Ergebnisses zu verringern, können und sollten Sie zunächst den CV mit neuen zufälligen Splits wiederholen / iterieren.
    Dies macht das Argument von high => mehr Rechenzeit weitgehend irrelevant, da man sowieso viele Modelle berechnen möchte. Ich denke eher an die Gesamtzahl der berechneten Modelle (analog zum Bootstrapping). Ich kann mich also für 100 x 10-fachen Lebenslauf oder 200 x 5-fachen Lebenslauf entscheiden.k

  • @ogrisel hat bereits erklärt, dass normalerweise große weniger (pessimistische) Verzerrung bedeuten. (Einige Ausnahmen sind insbesondere für , dh Auslassen von Eins).k = nkk=n

  • Wenn möglich, verwende ich ein , das ein Teiler der Stichprobengröße ist, oder der Größe der Gruppen in der Stichprobe, die geschichtet werden sollen.k

  • Ein zu großes bedeutet, dass nur eine geringe Anzahl von Abtastwertkombinationen möglich ist, wodurch die Anzahl der unterschiedlichen Iterationen begrenzt wird.k

    • Zum : verschiedene Modell- / Testmusterkombinationen sind möglich. Iterationen ergeben überhaupt keinen Sinn.(n1)=n=k
    • ZB und : verschiedene Modell- / Testmusterkombinationen existieren. Sie können hier alle möglichen Kombinationen durchgehen, da 19 Iterationen des fachen CV oder insgesamt 190 Modelle nicht sehr viel bedeuten .n=20k=10(n=202)=190=19kk
  • Diese Gedanken haben bei kleinen Stichproben mehr Gewicht. Bei mehr verfügbaren Samples spielt keine Rolle. Die mögliche Anzahl von Kombinationen wird bald groß genug, so dass die (etwa) 100 Iterationen des 10-fachen Lebenslaufs kein großes Risiko für Duplikate bergen. Außerdem bedeutet mehr Trainingsstichproben normalerweise, dass Sie sich an einem flacheren Punkt der Lernkurve befinden, sodass der Unterschied zwischen den Ersatzmodellen und dem "echten" Modell, das an allen Stichproben trainiert wurde, vernachlässigbar wird.kn

Glaube
quelle
6
(+1) für die Ausarbeitung, aber (-1) für die Anzahl der Wiederholungen des Lebenslaufs. Das Risiko, exakte Duplikate zu erstellen (unter Berücksichtigung der IDs der Beobachtungen), ist zwar gering (bei ausreichender Datenmenge usw.), das Risiko, Muster- / Datenstrukturduplikate zu erstellen , ist jedoch sehr hoch. Ich würde einen Lebenslauf nicht öfter als 10 Mal wiederholen, egal was k ist ... nur um eine Unterschätzung der Varianz zu vermeiden.
steffen
3
@steffen, hat ogrisel nicht schon darauf hingewiesen, dass die (Ersatz-) Modelle nicht wirklich unabhängig sind? Ich stimme vollkommen zu, dass dies der Fall ist. Tatsächlich versuche ich dies zu berücksichtigen, indem ich die Ergebnisse in Bezug auf die Stabilität der (Ersatz-) Modelle interpretiere. Austausch von "ein paar" Samples (die ich hier nicht näher erläutern wollte - siehe aber zB stats.stackexchange.com/a/26548/4598 ). Und ich berechne keinen Standardfehler, sondern berichte zB den Median und das bis Perzentil der beobachteten Fehler über die Iterationen. Ich werde eine separate Frage dazu posten. 5th95th
cbeleites
2
Aha. Ich bin damit einverstanden, dass der Ansatz gültig ist, um die Stabilität des Ersatzes abzuschätzen. Was ich im Hinterkopf hatte, war der statistische Folgetest, um zu entscheiden, ob ein Modell ein anderes übertrifft. Zu häufiges Wiederholen eines Lebenslaufs erhöht die Wahrscheinlichkeit eines unvorhersehbaren Alphafehlers. Also habe ich die innere mit der äußeren Validierung verwechselt (wie Dikran es hier ausgedrückt hat ).
steffen
2
@cbeleites: Da stimme ich dir zu. Die Varianz aufgrund der begrenzten Stichprobengröße dominiert normalerweise die Modellunsicherheit.
Jpcgandre
2
@jpcgandre: Zumindest für Klassifizierungsfehler wie Sensitivität, Spezifität usw. kann eine Unsicherheit aufgrund der Gesamtzahl der getesteten Fälle berechnet werden. Dies ist zwar nur ein Teil der Gesamtvarianz, zumindest in den Situationen, die ich in meiner Arbeit erlebe, aber diese Unsicherheit ist oft so groß, dass selbst eine grobe Schätzung ausreicht, um zu verdeutlichen, dass die Schlussfolgerungen stark eingeschränkt sind. Diese Einschränkung bleibt bestehen und wird durch die Verwendung von 50x 8-fach oder 80x 5-fach anstelle der 40x 10-fach Kreuzvalidierung nicht aufgehoben.
Glaube
37

Größeres K bedeutet weniger Neigung zur Überschätzung des tatsächlich erwarteten Fehlers (da die Trainingsfalten näher am Gesamtdatensatz liegen), aber höhere Varianz und längere Laufzeit (je näher Sie dem Grenzfall kommen: Auslassen eines Lebenslaufs).

Wenn die Steigung der Lernkurve bei training_size = 90% des gesamten Datensatzes flach genug ist, kann die Verzerrung ignoriert werden und K = 10 ist sinnvoll.

Ein höherer K gibt Ihnen mehr Stichproben, um ein genaueres Konfidenzintervall für Ihre Schätzung abzuschätzen (entweder unter Verwendung eines parametrischen Standardfehlers unter Annahme einer Normalverteilung der CV-Testfehler oder eines nicht parametrischen Bootstrap-CI, der nur die iid-Annahme trifft, die tatsächlich nicht sehr wahr ist da CV-Falze nicht unabhängig voneinander sind).

Edit: unterschätzen => Überschätzen des wahrheitsgemäßen erwarteten Fehlers

Edit: Der Teil dieser Antwort über höhere Varianzen für große K oder LOOCV ist wahrscheinlich falsch (nicht immer wahr). Weitere Details mit Simulationen in dieser Antwort: Bias und Varianz in der Leave-One-Out- vs. K-Fold-Kreuzvalidierung (danke Xavier Bourret Sicotte für diese Arbeit).

Oger
quelle
1
Können Sie etwas mehr über die höhere Varianz mit großem erklären ? In erster Näherung hätte ich gesagt, dass die Gesamtvarianz des CV-Ergebnisses (= eine Art Fehler, der aus allen Stichproben berechnet wurde , die von einem der Ersatzmodelle getestet wurden ) = Varianz aufgrund des Testens von nur Stichproben + Varianz aufgrund von Unterschieden zwischen die Modelle (Instabilität). Was vermisse ich? knknk
Glaube
6
Mit Varianz meine ich die Varianz des geschätzten erwarteten Testfehlers, der durch Verwenden des Medians oder des Mittels der CV-Falzfehler bezogen auf die "wahre Verteilung", nicht über CV-Falzungen, erhalten wird. Wenn k groß ist, sind Sie näher an LOO-CV, was sehr von dem jeweiligen Trainingssatz abhängt, den Sie zur Hand haben: Wenn die Anzahl der Stichproben klein ist, kann dies nicht so repräsentativ für die wahre Verteilung sein, daher die Varianz. Wenn k groß ist, kann der k-fache Lebenslauf solche willkürlichen harten Abtastwerte des Trainingssatzes simulieren.
Ogrisel
8
Als Ergänzung: Kohavi untersucht den Bias-Varianz-Tradeoff in der Validierung in Kapitel 3 seiner Doktorarbeit . Ich empfehle es sehr.
Steffen
3
+1, übrigens bedeutet "größeres K höhere Varianz", wie ich es verstehe, mit großem werden alle Trainingssätze große Daten gemeinsam haben, so dass die trainierten Modelle etwas korreliert sind, was zu korrelierten Testfehlern führt. Der Mittelwert des Testfehlers hat also eine höhere Varianz, oder? KKKK
Avocado
Ja, ich denke das ist eine richtige Intuition.
Ogrisel
0

Ich weiß nicht, wie sich dies Kauf Genauigkeit und Verallgemeinerung auswirkt, und dies kann vom Lernalgorithmus abhängen, aber es wirkt sich definitiv fast linear (asymptotisch, linear) auf die Rechenkomplexität für Trainingsalgorithmen aus, deren algorithmische Komplexität in der Anzahl der Trainingsinstanzen linear ist. Die Rechenzeit für das Training erhöht sich um die K-1Zeit, wenn die Trainingszeit in der Anzahl der Trainingsinstanzen linear ist. Daher würde ich bei kleinen Trainingssätzen die Aspekte Genauigkeit und Verallgemeinerung berücksichtigen, insbesondere angesichts der Tatsache, dass wir aus einer begrenzten Anzahl von Trainingsinstanzen das Beste herausholen müssen.

Für große Trainingssätze und Lernalgorithmen mit einem hohen Wachstum der asymptotischen rechnerischen Komplexität in der Anzahl der Trainingsinstanzen (zumindest linear) wähle ich jedoch nur aus, K=2dass die Rechenzeit für einen Trainingsalgorithmus mit einer linearen asymptotischen Komplexität nicht länger wird von Trainingsinstanzen.

Serge Rogatch
quelle
-6

Lösung:

K = N/N*0.30
  • N = Größe des Datensatzes
  • K = Falten

Kommentar: Wir können auch 20% anstelle von 30% auswählen, abhängig von der Größe, die Sie als Test-Set auswählen möchten.

Beispiel:

Wenn Datensatzgröße: N = 1500; K = 1500/1500 * 0,30 = 3,33; Wir können den K-Wert als 3 oder 4 wählen

Hinweis:

Ein großer K-Wert, bei dem eine Kreuzvalidierung ausgelassen wird, würde zu einer Überanpassung führen. Ein kleiner K-Wert, bei dem eine Kreuzvalidierung ausgelassen wird, würde zu einer Unteranpassung führen.

Ansatz mag naiv sein, wäre aber immer noch besser als die Wahl von k = 10 für Datensätze unterschiedlicher Größe.

Subhash Rajagopal
quelle
4
(-1)Sie schlagen also vor, immer k = 3 oder 4 unabhängig von der Stichprobengröße zu verwenden - dies unterscheidet sich IMHO nicht wesentlich von der Verwendung von k = 10 gleichermaßen unabhängig von der Stichprobengröße. NN0.3=10.33.33=const.
Glaube
K = N / N * 0,3 = 10/3, was eine Konstante ist. Es ist also nicht logisch, diesen Wert für jede Bedingung zu verwenden.
Kamal Thapa