Posso usare un piccolo set di convalida?


15

Comprendo il ragionamento alla base della suddivisione dei dati in un set di test e un set di convalida. Comprendo anche che la dimensione della divisione dipenderà dalla situazione, ma generalmente varierà dal 50/50 al 90/10.

Ho creato un RNN per correggere l'ortografia e iniziare con un set di dati di frasi ~ 5m. Mi rado 500k frasi e poi mi alleno con le restanti frasi ~ 4,5m. Quando l'addestramento è terminato prendo il mio set di validazione e calcolo l'accuratezza.

La cosa interessante è che dopo solo il 4% del mio set di validazione ho una precisione del 69,4% e questa percentuale non cambia di oltre lo 0,1% in entrambe le direzioni. Alla fine ho appena abbreviato la convalida perché il numero è bloccato al 69,5%.

Quindi perché tagliare il 10% per la convalida quando potrei probabilmente cavarmela con l'1%? Importa?


4
Una risposta generale è che una dimensione del campione maggiore di quella che direi 10.000 sarebbe un sottoinsieme molto rappresentativo della popolazione. L'aumento del campione, se è stato disegnato correttamente, può essere costoso mentre la stima che vedi sarà più o meno la stessa. Cerca un concetto di intervallo di confidenza.
Alexey Burnakov,

Risposte:


20

Set di validazione più grandi forniscono stime più accurate delle prestazioni fuori campione. Ma come hai notato, ad un certo punto tale stima potrebbe essere accurata come ne hai bisogno e puoi fare delle previsioni approssimative sulla dimensione del campione di validazione che devi raggiungere per raggiungere quel punto.

Per una semplice precisione di classificazione corretta / errata, è possibile calcolare l'errore standard della stima come (deviazione standard di una variabile di Bernouilli), dovepè la probabilità di una classificazione corretta enè la dimensione dell'insieme di convalida. Ovviamente non conoscip, ma potresti avere qualche idea della sua portata. Ad esempio, supponiamo che ti aspetti una precisione tra il 60-80% e desideri che le tue stime abbiano un errore standard inferiore allo 0,1%: p(1-p)/npnp Quanto dovrebbe essere granden(la dimensione del set di validazione)? Perp=0,6otteniamo: n> 0,6 - 0,6 2

p(1-p)/n<0.001
np=0.6 Perp=0,8otteniamo: n>0,8-0,82
n>0.6-0.620.0012=240,000
p=0.8 Quindi questo ci dice che potresti cavartela usando meno del 5% dei tuoi 5 milioni di campioni di dati, per la validazione. Questa percentuale diminuisce se si prevedono prestazioni più elevate, o soprattutto se si è soddisfatti di un errore standard inferiore della stima delle prestazioni fuori campione (ad es. Conp=0,7e per un valore <1%, sono necessari solo 2100 campioni di convalida o meno del ventesimo per cento dei dati).
n>0.8-0.820.0012=160,000
p=0.7

Questi calcoli mostrano anche il punto sollevato da Tim nella sua risposta, secondo cui l'accuratezza delle tue stime dipende dalla dimensione assoluta del tuo set di validazione (cioè su ), piuttosto che dalla sua dimensione rispetto al set di training.n

(Potrei anche aggiungere che sto assumendo un campionamento rappresentativo qui. Se i tuoi dati sono molto eterogenei, potresti aver bisogno di utilizzare set di validazione più grandi solo per assicurarti che i dati di validazione includano tutte le stesse condizioni, ecc. Dei dati del treno e dei test. )


14
p(1-p)p=1/2p(1-p)=1/4p(1-p)/n1/4n

11

Una piacevole discussione di questo problema è fornita da Andrew Ng sul suo corso di Deep Learning su Coursera.org . Come osserva, le divisioni standard come 8: 2 o 9: 1 sono valide se i tuoi dati sono da piccoli a moderatamente grandi, ma molti problemi di machine learning attuali utilizzano enormi quantità di dati (ad esempio milioni di osservazioni come nel tuo caso), e in tale scenario potresti lasciare il 2%, 1% o anche meno dei dati come set di test, prendendo tutti i dati rimanenti per il tuo set di allenamento (egli sostiene effettivamente di usare anche un set di sviluppo). Come sostiene, più dati dai al tuo algoritmo, migliore è per le sue prestazioni e questo è particolarmente vero per il deep learning * (nota anche che questo non deve essere il caso degli algoritmi di apprendimento automatico non di deep learning).

Come già notato nel commento di Alex Burn , non si tratta in realtà delle dimensioni del set di test, ma della sua rappresentatività per il tuo problema. Di solito con dimensioni maggiori dei dati speriamo che sia più rappresentativo, ma non è così. Questo è sempre un compromesso ed è necessario prendere considerazioni specifiche del problema. Non ci sono regole che affermano che il set di test non dovrebbe essere inferiore a X casi o inferiore a Y% dei dati.

* - Disclaimer: sto ripetendo gli argomenti di Andrew Ng qui, non mi considero uno specialista dell'apprendimento profondo.


2
"non si tratta in realtà delle dimensioni del set di test, ma della sua rappresentatività per il tuo problema." - probabilmente un modo pittoresco per dirlo è che non è utile avere un grande set di allenamento per qualcosa che si occupa di cani e gatti se il tuo set di allenamento è quasi interamente composto da gatti.
JM non è uno statistico il

Più specificamente questo è stato nella lezione "Train / Dev / Test sets" della settimana 1 del corso "Miglioramento delle reti neurali profonde: ottimizzazione dell'iperparametro, regolarizzazione e ottimizzazione" (che è il punto 2 dell'intera specializzazione dell'apprendimento profondo)
icc97

2
Ecco la citazione completa della lezione: "Quindi in questo esempio in cui hai un milione di esempi, se hai bisogno solo di 10.000 per il tuo sviluppatore e 10.000 per il tuo test, il tuo rapporto sarà più simile a questo 10.000 è dell'1% di 1 milione, quindi tu avremo il 98% di treni, l'1% di dev, l'1% di test. E ho anche visto applicazioni in cui, se hai anche più di un milione di esempi, potresti finire con il 99,5% di treni e lo 0,25% di sviluppo, lo 0,25% di test O forse uno sviluppo dello 0,4%, test dello 0,1%. "
icc97,

5

Nell'articolo Asymptotic Statistical Theory of Overtraining and Cross-Validationdi Shun-ichi Amari et al. [1] studiano la quantità ottimale di campioni da escludere come set di convalida (ai fini dell'arresto anticipato) e concludono che la divisione ottimale è1/2N, dove Nè il numero di campioni disponibili. Nel tuo casoN=5106 e la divisione ottimale è 0,00032=0,032%. Secondo la formula 1580 i campioni dovrebbero essere ottimali nel tuo caso.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.