Perché utilizzare sia il set di validazione che il set di test?


17

Considera una rete neurale:

Per un determinato set di dati, li dividiamo in training, validazione e set di test. Supponiamo di farlo nel classico rapporto 60:20:20, quindi preveniamo il sovradimensionamento convalidando la rete controllandola sul set di convalida. Quindi qual è la necessità di testarlo sul set di test per verificarne le prestazioni?

L'errore sul set di test non sarà in qualche modo lo stesso del set di convalida poiché per la rete si tratta di dati non visti proprio come il set di convalida e anche entrambi sono uguali?

Invece non possiamo aumentare il set di training unendo il set di test ad esso in modo da avere più dati di training e la rete si allena meglio e quindi utilizzare il set di validazione per evitare un overfitting? Perché non lo facciamo?


4
Vorresti che fosse lo stesso, ma non puoi essere sicuro perché l'hai toccato per l'ottimizzazione dell'iperparametro e l'arresto anticipato, quindi hai bisogno di un set di test vergine.
Emre,

@Emre Ma i pesi verranno regolati in base al set di allenamento e non al set di validazione, quindi il risultato sul test e sul set di validazione non dovrebbe essere diverso.
user1825567

No, non lo fanno (vengono adattati in base al set di allenamento). Questo è per parametri regolari.
Emre,

Risposte:


23

Supponiamo che tu stia allenando un modello le cui prestazioni dipendono da una serie di iperparametri. Nel caso di una rete neurale, questi parametri possono essere ad esempio il tasso di apprendimento o il numero di iterazioni di addestramento.

Data una scelta di valori di iperparametro, si utilizza il set di training per addestrare il modello. Ma come si impostano i valori per gli iperparametri? Ecco a cosa serve il set di validazione . È possibile utilizzarlo per valutare le prestazioni del modello per diverse combinazioni di valori di iperparametro (ad es. Mediante un processo di ricerca della griglia) e mantenere il modello meglio addestrato.

Ma come si confronta il modello selezionato con altri modelli diversi? La tua rete neurale funziona meglio di, diciamo, una foresta casuale addestrata con la stessa combinazione di dati di allenamento / test? Non è possibile eseguire il confronto in base al set di convalida, poiché tale set di convalida faceva parte del raccordo del modello. L'hai usato per selezionare i valori dell'iperparametro!

Il set di test consente di confrontare diversi modelli in modo imparziale, basando i confronti su dati che non sono stati utilizzati in nessuna parte del processo di selezione dell'allenamento / iperparametro.


11

Il set di test e il set di convalida incrociata hanno scopi diversi. Se lasci cadere uno di questi, perdi i suoi benefici:

  • Il set di convalida incrociata viene utilizzato per rilevare il sovra-adattamento e per facilitare la ricerca di iperparametri.

  • Il set di test viene utilizzato per misurare le prestazioni del modello.

Non è possibile utilizzare il set di validazione incrociata per misurare le prestazioni del modello con precisione, perché si deliberatamente sintonizzare i risultati per ottenere la migliore possibile metrica, oltre forse centinaia di varianti dei vostri parametri. È quindi probabile che il risultato della convalida incrociata sia troppo ottimista.

Per lo stesso motivo, non è possibile eliminare il set di convalida incrociata e utilizzare il set di test per selezionare i parametri ipertestuali, perché in questo modo si è praticamente sicuri di sopravvalutare la qualità del modello. Nel mondo ideale utilizzi il set di test una sola volta o lo usi in modo "neutro" per confrontare diversi esperimenti.

Se esegui la convalida incrociata, trova il modello migliore, quindi aggiungi i dati del test per allenarti, è possibile (e in alcune situazioni forse abbastanza probabile) il tuo modello sarà migliorato. Tuttavia, non hai modo di essere sicuro che ciò sia effettivamente accaduto e, anche se lo è, non hai una stima imparziale di quale sia la nuova performance.

Dall'aver assistito a molte competizioni di Kaggle, la mia esperienza è che la messa a punto del test impostato con un uso eccessivo è una cosa reale e influisce su tali competizioni su larga scala. Spesso c'è un gruppo di concorrenti che hanno scalato la classifica pubblica e selezionato il loro miglior modello in prova (la classifica pubblica è effettivamente un set di test), pur non essendo così approfondita sulla loro validazione incrociata. . . questi concorrenti abbandonano la classifica quando viene introdotto un nuovo set di test alla fine.

Un approccio ragionevole è quello di riutilizzare i dati (train + cv) per riqualificare utilizzando gli hyper-params che hai trovato, prima del test. In questo modo ti alleni su più dati e alla fine ottieni ancora una misura indipendente delle prestazioni.

Se vuoi ottenere di più dalla validazione incrociata, l'approccio abituale è la validazione incrociata k-fold . Un trucco comune nelle competizioni di Kaggle è usare la validazione incrociata di k-fold e invece di ricombinare i dati in un set di addestramento più grande (train + cv), per raggruppare o impilare i risultati del cv in un meta-modello.

Infine, verifica sempre che le suddivisioni per la convalida e il test siano affidabili rispetto alla possibile correlazione all'interno del tuo set di dati.


1
cosa intendi con "solido contro possibile correlazione all'interno del tuo set di dati"?
user6903745
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.