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 .K
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 K
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?
quelle
Antworten:
Die Wahl von ist etwas willkürlich. So entscheide ich mich für :kk=10 k
Um die Varianz des CV-Ergebnisses zu verringern, können und sollten Sie zunächst den CV mit neuen zufälligen Splits wiederholen / iterieren.k
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.
@ogrisel hat bereits erklärt, dass normalerweise große weniger (pessimistische) Verzerrung bedeuten. (Einige Ausnahmen sind insbesondere für , dh Auslassen von Eins).k = nk k=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
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.k n
quelle
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).
quelle
Ich weiß nicht, wie sich dies
K
auf 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 dieK-1
Zeit, 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=2
dass die Rechenzeit für einen Trainingsalgorithmus mit einer linearen asymptotischen Komplexität nicht länger wird von Trainingsinstanzen.quelle
Lösung:
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.
quelle