Convalida incrociata (generalizzazione degli errori) dopo la selezione del modello


21

Nota: il caso è n >> p

Sto leggendo Elements of Statistical Learning e ci sono varie menzioni sul modo "giusto" di fare la validazione incrociata (es. Pagina 60, pagina 245). In particolare, la mia domanda è come valutare il modello finale (senza un set di test separato) usando k-fold CV o bootstrap quando c'è stata una ricerca del modello? Sembra che nella maggior parte dei casi (algoritmi ML senza selezione di funzionalità incorporate) ci saranno

  1. Una fase di selezione delle funzionalità
  2. Una fase di selezione dei meta parametri (ad es. Il parametro di costo in SVM).

Le mie domande:

  1. Ho visto che la fase di selezione delle funzioni può essere eseguita laddove la selezione delle funzioni viene eseguita sull'intero set di allenamento e tenuta da parte. Quindi, usando il CV di k-fold, l'algoritmo di selezione delle caratteristiche viene usato in ogni piega (ottenendo ogni volta diverse caratteristiche eventualmente scelte) e la media dell'errore. Quindi, useresti le funzionalità scelte usando tutti i dati (che erano stati messi da parte) per addestrare la modalità finale, ma avresti usato l'errore della validazione incrociata come stima delle prestazioni future del modello. È CORRETTO?
  2. Quando si utilizza la convalida incrociata per selezionare i parametri del modello, quindi come stimare le prestazioni del modello in seguito? È LO STESSO PROCESSO N ° 1 SOPRA O DOVREBBE UTILIZZARE IL CV NIDATO COME VISUALIZZATO A PAGINA 54 ( pdf ) O QUALCOSA ALTRO?
  3. Quando si eseguono entrambi i passaggi (impostazione di funzionalità e parametri) ..... quindi cosa si fa? loop nidificati complessi?
  4. Se si dispone di un campione di controllo separato, la preoccupazione scompare e è possibile utilizzare la convalida incrociata per selezionare funzionalità e parametri (senza preoccupazioni poiché la stima delle prestazioni verrà da un set di controllo)?

@ user2040 (+1) Quelle domande sono davvero ottime! Una domanda in qualche modo correlata può essere trovata qui: Selezione delle caratteristiche per il modello "finale" quando si esegue la validazione incrociata nell'apprendimento automatico .
chl

@chi Grazie, avevo visto quel post. Pensi che io sia sulla buona strada con il mio processo di pensiero almeno? Sembra che un set di test indipendente ci consenta di essere più liberali nel nostro uso del CV per la selezione delle caratteristiche e la messa a punto / selezione del modello. Altrimenti, sembrano necessari cicli annidati per addestrare, ottimizzare e stimare la generalizzazione degli errori utilizzando tutti gli stessi dati di allenamento.
B_Miner

Risposte:


18

La cosa fondamentale da ricordare è che, affinché la convalida incrociata fornisca una stima delle prestazioni (quasi) imparziale, ogni passaggio coinvolto nell'adattamento del modello deve essere eseguito indipendentemente in ogni piega della procedura di convalida incrociata. La cosa migliore da fare è visualizzare la selezione delle caratteristiche, l'impostazione dei meta / iperparametri e l'ottimizzazione dei parametri come parti integranti del fitting del modello e non eseguire mai nessuno di questi passaggi senza eseguire gli altri due.

La distorsione ottimistica che può essere introdotta partendo da quella ricetta può essere sorprendentemente grande, come dimostrato da Cawley e Talbot , dove la distorsione introdotta da una partenza apparentemente benigna era maggiore della differenza di prestazioni tra classificatori concorrenti. I protocolli ancora peggio ancora favorevoli favoriscono fortemente i modelli cattivi, poiché sono più sensibili all'ottimizzazione degli iperparametri e quindi sono più inclini a sovra-adattarsi al criterio di selezione del modello!

Risposte a domande specifiche:

La procedura nel passaggio 1 è valida perché la selezione della funzione viene eseguita separatamente in ogni piega, quindi ciò che si sta validando in modo incrociato è l'intera procedura utilizzata per adattarsi al modello finale. La stima di convalida incrociata avrà una leggera inclinazione pessimistica poiché il set di dati per ogni piega è leggermente più piccolo dell'intero set di dati utilizzato per il modello finale.

Per 2, poiché la convalida incrociata viene utilizzata per selezionare i parametri del modello, è necessario ripetere tale procedura in modo indipendente in ogni piega della convalida incrociata utilizzata per la stima delle prestazioni, si finisce con la convalida incrociata nidificata.

Per 3, in sostanza, sì, è necessario eseguire la convalida incrociata nidificata. In sostanza, è necessario ripetere in ogni piega della convalida incrociata più esterna (utilizzata per la stima delle prestazioni) tutto ciò che si intende fare per adattarsi al modello finale.

Per 4 - sì, se si dispone di un set di controllo separato, ciò fornirà una stima imparziale delle prestazioni senza necessità di una convalida incrociata aggiuntiva.


re la tua risposta a Q1. Questo è il problema non è vero? Molto spesso pensiamo di convalidare in modo incrociato il modello, mentre in realtà stiamo convalidando in modo incrociato la procedura di modellazione. La differenza potrebbe essere filosofica, perché quando scrivi la matematica, la f potrebbe rappresentare il modello o la procedura di modellazione. Ma poi si potrebbe chiedere, è convalidare in modo incrociato la procedura ciò che vogliamo o convalidare in modo incrociato il modello. Qual è il tuo pensiero?
qoheleth,

Non è possibile convalidare in modo incrociato un modello poiché il modello dipende dal campione di dati su cui è stato formato, non appena lo si adatta a un diverso campione di dati, si tratta di un modello diverso. Il punto che stavo davvero sollevando è che se si sintonizza il modello in qualche modo sull'intero campione di dati (ad es. Eseguendo la selezione delle funzionalità), la convalida incrociata fornirà una stima ottimistica della generalizzazione poiché le partizioni di test sono state utilizzate per ottimizzare aspetti del modello (ovvero il set di funzionalità utilizzato). HTH.
Dikran Marsupial

Non so se è giusto continuare la nostra discussione nella sezione commenti, ma fino a quando qualcuno non dirà diversamente ... Sì, capisco che il tuo punto sul CV deve essere fatto al livello più esterno e non lo sto obiettando. In effetti, ieri ho dato lo stesso consiglio al mio collega. Sto solo sottolineando che spesso non siamo sicuri di ciò che stiamo convalidando in modo incrociato. Allo stesso tempo, mi chiedo se ottenere la valutazione sul modello, piuttosto che sulla procedura di modellazione, sia ciò che realmente desideriamo. Un rimedio potrebbe essere quello di pensare che stia usando l'errore di procedura per stimare l'errore del modello. Forse questo funziona.
qoheleth,

Non è possibile ottenere una stima diretta delle prestazioni di un determinato modello senza disporre di un set di test esterno. Le prestazioni del metodo per la produzione di un modello sono tuttavia un proxy ragionevole per le prestazioni del modello stesso, a condizione che sia l'intero metodo a convalida incrociata. In altre parole, sono d'accordo con il riassunto della tua ultima frase!
Dikran Marsupial

5

Ho fatto un'analisi approfondita di convalida incrociata su un set di dati che è costato milioni di acquisizioni e non è disponibile alcun set di convalida esterno. In questo caso, ho eseguito un'ampia convalida incrociata nidificata per garantire la validità. Ho selezionato funzionalità e parametri ottimizzati solo dai rispettivi set di allenamento. Questo è computazionalmente costoso per grandi set di dati, ma è quello che dovevo fare per mantenere la validità. Tuttavia, ci sono complicazioni che ne derivano ... ad esempio, in ogni set di allenamento vengono selezionate diverse funzionalità.

Quindi la mia risposta è che nei casi in cui non si ha accesso fattibile a un set di dati esterno, questa è una strada ragionevole da percorrere. Quando hai un set di dati esterno, puoi praticamente andare in città come desideri sul set di dati principale e quindi testare una volta sul set di dati esterno.


@ user2643: hai riferimenti da condividere su come hai creato il CV nidificato? È stato sulla stessa linea del pdf a cui ho collegato la mia domanda? Inoltre ..... questi dati sono dati di marketing per caso?
B_Miner

@ user2643 Il problema con quell'approccio (che è corretto) è che produce un solo criterio per l'accuratezza (classificazione) o l'accuratezza (regressione); non sarai in grado di dire "quelle sono le caratteristiche più interessanti" poiché variano da una piega all'altra, come hai detto. Ho lavorato con dati genetici (600k variabili) in cui abbiamo usato CV 10 volte con selezione delle caratteristiche incorporate, in uno schema di permutazione (k = 1000, per essere a mio agio a un livello del 5%) per valutare l'affidabilità dei risultati. In questo modo, siamo in grado di dire: "il nostro modello si generalizza bene o no", niente di più.
chl

2
Se le funzionalità variano da una piega all'altra significa che non ci sono abbastanza informazioni per identificare con sicurezza le funzioni utili, quindi lo vedrei come un vantaggio della convalida incrociata (come è probabile che solo guardando i risultati da un singolo modello avere un criterio di selezione delle caratteristiche eccessivo e quindi fuorviante). Per problemi con molte funzionalità e poche osservazioni, la regressione della cresta spesso fornisce prestazioni migliori, quindi a meno che l'identificazione delle funzionalità non sia un obiettivo chiave, è spesso meglio non effettuare alcuna selezione delle funzionalità.
Dikran Marsupial,

n«p

@ user2040: ci scusiamo per la risposta tardiva. Ho creato la mia implementazione software dell'approccio CV nidificato. Poiché la mia ricerca è legata alla bioinformatica, sto pianificando di inviare presto una descrizione del software a una rivista di bioinformatica. Ma può essere utilizzato in qualsiasi dominio di ricerca. Se sei interessato a provarlo, per favore fatemelo sapere. goldfish1434 presso yahoo dot com
user2643
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.