Perché suddividere i dati nel set di training e test non è sufficiente


18

So che per accedere alle prestazioni del classificatore devo dividere i dati in training / test set. Ma leggendo questo :

Quando si valutano impostazioni diverse ("iperparametri") per gli stimatori, come l'impostazione C che deve essere impostata manualmente per un SVM, sussiste il rischio di un overfitting sul set di test perché i parametri possono essere modificati fino a quando lo stimatore non funziona in modo ottimale. In questo modo, la conoscenza del set di test può "infiltrarsi" nel modello e le metriche di valutazione non riportano più sulle prestazioni di generalizzazione. Per risolvere questo problema, un'altra parte del set di dati può essere considerata come un cosiddetto "set di convalida": la formazione procede sul set di formazione, dopodiché la valutazione viene eseguita sul set di convalida e quando l'esperimento sembra avere esito positivo , la valutazione finale può essere eseguita sul set di test.

Vedo che viene introdotto un altro (terzo) set di validazione che è giustificato dal sovradimensionamento del set di test durante la messa a punto degli iperparametri.

Il problema è che non riesco a capire come possa apparire questo overfitting e quindi non riesca a capire la giustificazione del terzo set.


2
Penso che molta della confusione qui provenga da 2 o 3 significati piuttosto diversi del termine "convalida". La convalida nella convalida incrociata è principalmente solo un nome per una procedura di suddivisione senza sostituzione. La "validazione" impostata nel testo citato sarebbe meglio intesa come "tuning" o "set di ottimizzazione". Considerando che la "convalida", ad esempio in ingegneria o anche in chimica analitica, significa dimostrare che un determinato metodo finale è adatto al suo scopo, che viene eseguito (simulato, approssimato) dall'insieme di "test". (Per me, i test sembrano molto meno definitivi della convalida ...)
cbeleites supporta Monica il

Risposte:


17

Anche se si stanno formando modelli esclusivamente sui dati di allenamento, si stanno ottimizzando gli iperparametri (ad es. per un SVM) in base al set di test. Pertanto, la tua stima delle prestazioni può essere ottimista, perché stai essenzialmente riportando i risultati migliori. Come alcuni hanno già accennato in questo sito, l' ottimizzazione è la radice di tutto il male nelle statistiche .C

Le stime delle prestazioni devono sempre essere eseguite su dati completamente indipendenti. Se stai ottimizzando alcuni aspetti in base ai dati di test, i tuoi dati di test non sono più indipendenti e avrai bisogno di un set di validazione.

Un altro modo per gestirlo è tramite la validazione incrociata nidificata , che consiste in due procedure di validazione incrociata racchiuse tra loro. La convalida incrociata interna viene utilizzata nell'ottimizzazione (per stimare le prestazioni di un determinato set di iperparametri, che è ottimizzato) e la convalida incrociata esterna stima le prestazioni di generalizzazione dell'intera pipeline di machine learning (ovvero, ottimizzando gli iperparametri + formazione del modello finale ).


Potrei sbagliarmi, ma il set di test non è solo per la messa a punto di iperparametri, ma anche per confrontare diversi tipi di tecniche come ad esempio le prestazioni di SVM rispetto a LDA o foresta casuale come indicato nella mia risposta.

@fcoppens Sì, sicuramente. Non l'ho menzionato esplicitamente, ma sicuramente rientra anche in questo passaggio.
Marc Claesen,

1
più in generale, l'ottimizzazione o l'ottimizzazione qui è qualsiasi tipo di processo basato sui dati (mediante la validazione incrociata interna).
cbeleites supporta Monica il

@MarcClaesen Ho una domanda. Se ho 2 valori diversi dell'iperparametro e inserisco questi 2 modelli sul set di allenamento, quindi li applico sul set di test, quindi il tasso di errore che ho ottenuto sul set di test dovrebbe essere uno stimatore imparziale del tasso di errore di previsione reale di questi 2 modelli? Perché se ora mi dai un altro set di dati di test indipendenti, questo nuovo set di dati di test è essenzialmente lo stesso del set di test precedente. Quindi, se un modello ha un punteggio di test migliore, dovrebbe anche superare l'altro modello in un nuovo set di dati di test. Perché abbiamo bisogno di un set di validazione?
KevinKim,

"Se stai ottimizzando alcuni aspetti in base ai dati di test, i tuoi dati di test non sono più indipendenti e avrai bisogno di un set di validazione." è perspicace
Sudip Bhandari,

11

Penso che sia più facile pensare alle cose in questo modo. Esistono due elementi per i quali viene utilizzata la convalida incrociata, l' ottimizzazione degli iperparametri di un modello / algoritmo e la valutazione delle prestazioni di un modello / algoritmo.

Considera il primo utilizzo come parte della formazione effettiva dell'algoritmo. Ad esempio, la convalida incrociata per determinare la forza di regolarizzazione di un GLM fa parte della determinazione del risultato finale del GLM. Questo uso è in genere chiamato convalida incrociata interna . Poiché i parametri (iper) sono ancora impostati, la perdita del set di ottimizzazione non è una grande misura delle prestazioni degli algoritmi effettivi.

Il secondo uso della validazione incrociata sta usando i dati che sono stati tenuti fuori dall'intero processo che ha prodotto il modello, per testare il suo potere predittivo. Questo processo è chiamato validazione incrociata esterna .

Si noti che la convalida interna potrebbe aver fatto parte del processo che ha prodotto il modello, quindi in molti casi sono necessarie sia la convalida incrociata interna che quella esterna.


Personalmente, non userei la frase "validazione incrociata esterna", poiché vedrei la validazione incrociata come la suddivisione ripetuta di diversi set di validazione dal set di addestramento per la selezione e la regolazione del modello. Non è possibile farlo in modo significativo ripetutamente con il set di test, poiché si tratta di un proxy una tantum per i dati futuri ancora sconosciuti utilizzati per giudicare le prestazioni del modello finale.
Henry,

3
Henry, non credo tu stia capendo la validazione incrociata esterna. Puoi "farlo ripetutamente con il set di test", tenendo ripetutamente una parte dei tuoi dati completi a scopo di test mentre esegui la procedura di allenamento completa sul resto (che può includere la convalida incrociata interna). In genere, la convalida incrociata esterna viene ancora eseguita in piega e consente a tutti i dati originali di trovarsi nel set di test.
jlimahaverford,

αα

2

Durante la costruzione del modello, alleni i tuoi modelli su un campione di addestramento . Si noti che è possibile addestrare modelli diversi (ovvero tecniche diverse come SVM, LDA, Random Forest, ... o la stessa tecnica con valori diversi dei parametri di ottimizzazione o una miscela).

Tra tutti i diversi modelli che hai addestrato, devi sceglierne uno e quindi utilizzare l' esempio di convalida per trovare quello con l'errore più piccolo sull'esempio di test.

Per questo modello "finale" dobbiamo ancora stimare l'errore e quindi utilizziamo il campione di prova .


1
Vorrei invertire la formulazione nel tuo secondo e terzo paragrafo: userò il set di validazione per trovare il modello migliore e mettere a punto i suoi iperparametri (facendo questo con diversi set di validazione che partizionano il set di training rende questa validazione incrociata ) e, una volta che il modello ha è stato finalizzato, quindi applicarlo al set di test per vedere un esempio delle prestazioni fuori campione del modello.
Henry,

@ Henry: OK Henry, penso che le etichette delle fasi siano meno importanti della loro sequenza / contenuti, ma la tua osservazione ha senso per me, modificherò il testo, grazie (+1),

1

La convalida incrociata non risolve completamente il problema di sovra-adattamento nella selezione del modello, ma semplicemente lo riduce. L'errore di convalida incrociata dipende dal set di dati utilizzato. Più piccolo è il set di dati, maggiore sarebbe l'errore di convalida incrociata.

Inoltre, se si ha un alto grado di libertà nella selezione del modello, esiste il pericolo che il modello abbia prestazioni scarse, poiché il criterio di convalida incrociata viene sovrascritto.

Pertanto, quando i dati vengono divisi in 2 set, ovvero i set di training e test, la divisione viene eseguita staticamente. Quindi, c'è la possibilità di sovralimentare il set di allenamento. Tuttavia, i set di convalida incrociata vengono creati attraverso metodi diversi , come la convalida incrociata k-fold, la validazione incrociata (LOOCV) ecc. Che consente di eliminare la ricompensa esatta della divisione della divisione 2 set e quindi la possibilità di over fit si riduce.

Queste sono alcune risorse che potrebbero aiutarti a capire meglio.

Pertanto, la convalida incrociata sarebbe utile quando si dispone di un set di dati più grande, anziché di un set più piccolo.

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.