Gibt es eine Faustregel, wie Daten am besten in Trainings- und Validierungssätze unterteilt werden können? Ist eine gleichmäßige Aufteilung von 50/50 ratsam? Oder gibt es klare Vorteile, mehr Trainingsdaten im Vergleich zu Validierungsdaten zu haben (oder umgekehrt)? Oder ist diese Wahl ziemlich anwendungsabhängig?
Ich habe hauptsächlich 80% / 20% der Trainings- bzw. Validierungsdaten verwendet, aber ich habe diese Abteilung ohne grundsätzlichen Grund gewählt. Kann mich jemand beraten, der mehr Erfahrung im maschinellen Lernen hat?
machine-learning
Robguinness
quelle
quelle
Antworten:
Es gibt zwei konkurrierende Bedenken: Mit weniger Trainingsdaten weisen Ihre Parameterschätzungen eine größere Varianz auf. Mit weniger Testdaten weist Ihre Leistungsstatistik eine größere Varianz auf. Im Allgemeinen sollten Sie sich mit der Aufteilung von Daten befassen, sodass keine der Varianzen zu hoch ist. Dies hängt eher mit der absoluten Anzahl von Instanzen in jeder Kategorie als mit dem Prozentsatz zusammen.
Wenn Sie insgesamt 100 Instanzen haben, stecken Sie wahrscheinlich in der Kreuzvalidierung fest, da keine einzelne Aufteilung zu einer zufriedenstellenden Varianz Ihrer Schätzungen führt. Wenn Sie 100.000 Instanzen haben, spielt es keine Rolle, ob Sie einen 80: 20-Split oder einen 90: 10-Split wählen (tatsächlich können Sie weniger Trainingsdaten verwenden, wenn Ihre Methode besonders rechenintensiv ist).
Angenommen, Sie haben genügend Daten, um ordnungsgemäß durchgehaltene Testdaten durchzuführen (anstatt eine Kreuzvalidierung), ist das Folgende eine lehrreiche Methode, um Abweichungen in den Griff zu bekommen:
quelle
Es würde Sie überraschen, herauszufinden, dass 80/20 ein häufig vorkommendes Verhältnis ist, das oft als Pareto-Prinzip bezeichnet wird . Es ist normalerweise eine sichere Wette, wenn Sie dieses Verhältnis verwenden.
Abhängig von der von Ihnen verwendeten Schulungs- / Validierungsmethode kann sich das Verhältnis jedoch ändern. Beispiel: Wenn Sie eine 10-fache Kreuzvalidierung verwenden, erhalten Sie bei jeder Falte einen Validierungssatz von 10%.
Es wurde untersucht, wie das richtige Verhältnis zwischen dem Trainingssatz und dem Validierungssatz ist :
In ihrer Schlussfolgerung geben sie eine Formel an:
Was sie unter Komplexität verstehen, ist:
Wenn Sie die erste Faustregel verwenden (der Alterationssatz sollte umgekehrt proportional zur Quadratwurzel der Anzahl der frei einstellbaren Parameter sein), können Sie daraus schließen, dass bei 32 einstellbaren Parametern die Quadratwurzel von 32 ~ 5,65 ist und der Bruchteil sein sollte 1 / 5,65 oder 0,177 (v / t). Etwa 17,7% sollten für die Validierung und 82,3% für die Schulung reserviert werden.
quelle
Letztes Jahr nahm ich am Online-Kurs für maschinelles Lernen von Prof: Andrew Ng teil. Seine Empfehlung war:
Ausbildung : 60%
Kreuzvalidierung : 20%
Testen : 20%
quelle
in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total.
Er schlägt vor, dass es 99,5: 0,25: 0,25 sein könnte.Nun, Sie sollten noch über eine Sache nachdenken.
Wenn Sie einen wirklich großen Datensatz haben, wie z. B. 1.000.000 Beispiele, ist eine Aufteilung von 80/10/10 möglicherweise nicht erforderlich, da 10% = 100.000 Beispiele nicht erforderlich sind, um festzustellen, ob das Modell ordnungsgemäß funktioniert.
Vielleicht reichen 99 / 0,5 / 0,5 aus, da 5.000 Beispiele den größten Teil der Datenvarianz darstellen können und Sie anhand dieser 5.000 Beispiele in Test und Entwicklung leicht erkennen können, dass das Modell gut funktioniert.
quelle
Angenommen, Sie haben weniger Daten. Ich schlage vor, 70%, 80% und 90% auszuprobieren und zu testen, was zu einem besseren Ergebnis führt. Bei 90% besteht die Möglichkeit, dass Sie bei einem 10% -Test eine schlechte Genauigkeit erhalten.
quelle
Vielleicht sind 63,2% / 36,8% eine vernünftige Wahl. Der Grund wäre, dass, wenn Sie eine Gesamtstichprobengröße n hatten und zufällig mit Ersatzfällen (auch bekannt als erneutes Stichprobenverfahren, wie im statistischen Bootstrap) n Fällen aus dem Anfangsbuchstaben n auswählen möchten , die Wahrscheinlichkeit, dass ein Einzelfall im Fall ausgewählt wird Die erneute Stichprobe würde ungefähr 0,632 betragen, vorausgesetzt, n ist nicht zu klein, wie hier erläutert: https://stats.stackexchange.com/a/88993/16263
Für eine Stichprobe von n = 250 beträgt die Wahrscheinlichkeit, dass ein Einzelfall für eine erneute Stichprobe auf 4 Stellen ausgewählt wird, 0,6329. Für eine Stichprobe von n = 20000 beträgt die Wahrscheinlichkeit 0,6321.
quelle
Es hängt alles von den vorliegenden Daten ab. Wenn Sie über eine beträchtliche Datenmenge verfügen, ist 80/20 eine gute Wahl, wie oben erwähnt. Wenn Sie jedoch keine Kreuzvalidierung mit einer 50/50-Aufteilung durchführen, kann dies viel mehr helfen und Sie daran hindern, ein Modell zu erstellen, das Ihren Trainingsdaten überpasst.
quelle