Kann ich ein winziges Validierungsset verwenden?


15

Ich verstehe die Gründe für die Aufteilung der Daten in einen Test- und einen Validierungssatz. Ich verstehe auch, dass die Größe des Split von der Situation abhängen wird, aber im Allgemeinen von 50/50 bis 90/10 variieren wird.

Ich habe eine RNN erstellt, um die Rechtschreibung zu korrigieren und mit einem Datensatz von ~ 5 m Sätzen zu beginnen. Ich rasiere 500k Sätze ab und trainiere dann mit den restlichen ~ 4,5m Sätzen. Wenn das Training beendet ist, nehme ich meinen Validierungssatz und berechne die Genauigkeit.

Das Interessante ist, dass ich nach nur 4% meines Validierungssatzes eine Genauigkeit von 69,4% habe und dieser Prozentsatz sich in keiner Richtung um mehr als 0,1% ändert. Irgendwann habe ich die Validierung einfach abgebrochen, weil die Zahl bei 69,5% steckt.

Warum also 10% für die Validierung einsparen, wenn ich wahrscheinlich mit 1% davonkommen könnte? Ist das wichtig?


4
Eine allgemeine Antwort ist, dass eine Stichprobe, die größer als 10.000 ist, eine sehr repräsentative Untergruppe der Bevölkerung darstellt. Das Erhöhen der Stichprobe, wenn sie korrekt gezeichnet wurde, kann kostspielig sein, während die Schätzung, die Sie sehen, in etwa gleich ist. Suchen Sie nach einem Konfidenzintervallkonzept.
Alexey Burnakov

Antworten:


20

Größere Validierungssätze liefern genauere Schätzungen der Leistung außerhalb der Stichprobe. Aber wie Sie bemerkt haben, kann diese Schätzung zu einem bestimmten Zeitpunkt so genau sein, wie Sie es benötigen, und Sie können grobe Vorhersagen darüber treffen, wie groß die Validierungsstichprobe sein muss, um diesen Punkt zu erreichen.

Für eine einfache korrekte / inkorrekte Klassifikationsgenauigkeit können Sie den Standardfehler der Schätzung als (Standardabweichung einer Bernouilli - Variablen) berechnen, wobei die Wahrscheinlichkeit einer korrekten Klassifikation ist, und ist die Größe des Validierungssatzes. Natürlich weißt du , aber du könntest eine Vorstellung von seiner Reichweite haben. Angenommen, Sie erwarten eine Genauigkeit zwischen 60 und 80% und möchten, dass Ihre Schätzungen einen Standardfehler von weniger als 0,1% aufweisen: Wie groß sollte (die Größe von das validierungsset) sein? Für wir: Für pnpp(1p)/npnpnp=0,6n> 0,6 - 0,6 2

p(1p)/n<0.001
np=0.6p=0,8n>0,8-0,82
n>0.60.620.0012=240,000
p=0.8Wir erhalten: Dies zeigt uns, dass Sie weniger als 5% Ihrer 5 Millionen Datenproben für die Validierung verwenden könnten. Dieser Prozentsatz sinkt, wenn Sie eine höhere Leistung erwarten oder insbesondere, wenn Sie mit einem niedrigeren Standardfehler Ihrer Out-of-Sample-Leistungsschätzung zufrieden sind (z. B. mit und für eine se <1% benötigen Sie nur 2100 Validierungsmuster oder weniger als ein Zwanzigstel Prozent Ihrer Daten).p=0,7
n>0.80.820.0012=160,000
p=0.7

Diese Berechnungen zeigen auch, dass Tim in seiner Antwort darauf hingewiesen hat, dass die Genauigkeit Ihrer Schätzungen von der absoluten Größe Ihres Validierungssatzes (dh von ) abhängt und nicht von seiner Größe im Verhältnis zum Trainingssatz.n

(Ich könnte auch hinzufügen, dass ich hier eine repräsentative Stichprobe annehme. Wenn Ihre Daten sehr heterogen sind, müssen Sie möglicherweise größere Validierungssätze verwenden, um sicherzustellen, dass die Validierungsdaten dieselben Bedingungen usw. wie Ihre Zug- und Testdaten enthalten. )


14
Man beachte, dass sein Maximum bei 1/2 erreicht , in welchem ​​Fall . Sie können also immer als Worst-Case-Schätzung verwenden. Insbesondere sollten 250.000 Validierungsmuster immer ausreichen, um Ihr Ziel eines maximalen Standardfehlers von <0,1% zu erreichen (und 2.500 Muster reichen für <1% aus), unabhängig von der tatsächlichen Klassifizierungsgenauigkeit. p(1p)p=1/2p(1p)=1/4p(1p)/n1/4n
Ilmari Karonen

11

Eine nette Diskussion über dieses Problem bietet Andrew Ng in seinem Deep Learning-Kurs auf Coursera.org . Wie er bemerkt, sind die Standardaufteilungen wie 8: 2 oder 9: 1 gültig, wenn Ihre Daten klein bis mäßig groß sind, aber viele der heutigen Probleme beim maschinellen Lernen große Datenmengen verwenden (z. B. Millionen von Beobachtungen wie in Ihrem Fall). und in einem solchen Szenario könnten Sie 2%, 1% oder sogar weniger der Daten als Testsatz belassen und alle verbleibenden Daten für Ihren Trainingssatz verwenden (er argumentiert tatsächlich, auch einen Entwicklungssatz zu verwenden). Je mehr Daten Sie Ihrem Algorithmus zur Verfügung stellen, desto besser ist die Leistung. Dies gilt insbesondere für Deep Learning * (er weist auch darauf hin, dass dies bei nicht-Deep Learning-Algorithmen für maschinelles Lernen nicht der Fall sein darf).

Wie bereits in einem Kommentar von Alex Burn bemerkt , geht es nicht wirklich um die Größe Ihres Testsets, sondern um die Repräsentativität für Ihr Problem. Normalerweise hoffen wir bei größeren Datenmengen, dass diese repräsentativer sind, aber dies muss nicht der Fall sein. Dies ist immer ein Kompromiss und Sie müssen problemspezifische Überlegungen anstellen. Es gibt keine Regeln, die besagen, dass der Testsatz nicht weniger als X Fälle oder weniger als Y% Ihrer Daten sein sollte.

* - Haftungsausschluss: Ich wiederhole hier die Argumente von Andrew Ng, ich würde mich nicht als Spezialist für tiefes Lernen betrachten.


2
"Es geht nicht wirklich um die Größe Ihres Test-Sets, sondern um die Repräsentativität für Ihr Problem." - Wahrscheinlich ist es eine malerische Art zu sagen, dass es keinen Sinn hat, ein großes Trainingsset für etwas zu haben, das sich mit Hunden und Katzen befasst, wenn Ihr Trainingsset fast ausschließlich aus Katzen besteht.
JM ist kein Statistiker

Genauer gesagt war dies in der Vorlesung 'Train / Dev / Test Sets' in Woche 1 des Kurses 'Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization' (Teil 2 der gesamten Spezialisierung Deep Learning)
icc97

2
Hier ist das vollständige Zitat aus der Vorlesung: "Wenn Sie in diesem Beispiel, in dem Sie eine Million Beispiele haben, nur 10.000 für Ihren Entwickler und 10.000 für Ihren Test benötigen, liegt Ihr Verhältnis eher bei 1% von 1 Million Ich werde 98% trainieren, 1% dev, 1% testen und ich habe auch Anwendungen gesehen, bei denen Sie, wenn Sie mehr als eine Million Beispiele haben, am Ende 99,5% trainieren und 0,25% dev, 0,25% testen könnten Oder vielleicht ein 0,4% dev, 0,1% Test. "
ICC97

5

In dem Artikel Asymptotic Statistical Theory of Overtraining and Cross-Validationvon Shun-ichi Amari et al. [1] Sie untersuchen die optimale Menge an Proben, die als Validierungssatz ausgelassen werden soll (zum Zweck des vorzeitigen Stopps), und kommen zu dem Schluss, dass die optimale Aufteilung beträgt1/2NNN=51060.00032=0.032%

[1] https://www.ncbi.nlm.nih.gov/pubmed/18255701

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.