Compendio di tecniche di validazione incrociata


43

Mi chiedo se qualcuno sia a conoscenza di un compendio di tecniche di convalida incrociata con una discussione sulle differenze tra loro e una guida su quando usarle. Wikipedia ha un elenco delle tecniche più comuni, ma sono curioso di sapere se ci sono altre tecniche e se ci sono tassonomie per esse.

Ad esempio, mi imbatto in una libreria che mi permette di scegliere una delle seguenti strategie:

  • Resistere
  • bootstrap
  • K Convalida incrociata
  • Lasciane uno fuori
  • Convalida incrociata stratificata
  • Convalida incrociata stratificata equilibrata
  • Stratificato Resistere
  • Bootstrap stratificato

e sto cercando di capire cosa significano stratificato ed equilibrato nel bootstrap, nel resistere o nel CV.

Possiamo anche trasformare questo post in un wiki della comunità, se la gente lo desidera, e raccogliere qui una discussione su tecniche o tassonomie.


Questa grande domanda sarebbe ancora più utile se potessimo collegarci alle spiegazioni di ciascuno dei metodi.
mkt - Ripristina Monica il

Risposte:


16

Puoi aggiungere a quell'elenco:

  • Convalida incrociata ripetuta
  • Convalida incrociata di fine gruppo
  • Out-of-bag (per foreste casuali e altri modelli in sacchi)
  • Il bootstrap 632+

Non ho davvero molti consigli su come usare queste tecniche o quando usarle. È possibile utilizzare il pacchetto di inserimento in R per confrontare CV, Boot, Boot632, validazione incrociata di esclusione, uscita di gruppo e fuori borsa.

In generale, di solito uso il boostrap perché è meno intensivo dal punto di vista computazionale rispetto al CV ripetuto k-fold o al CV one-out-out. Boot632 è il mio algoritmo di scelta perché non richiede molto più calcolo rispetto al bootstrap e ha dimostrato di essere migliore della convalida incrociata o del bootstrap di base in determinate situazioni.

Uso quasi sempre stime di errori out-of-bag per foreste casuali, piuttosto che la convalida incrociata. Gli errori out-of-bag sono generalmente imparziali e le foreste casuali impiegano abbastanza tempo per essere calcolate così com'è.


3
Qualche consiglio su quando usare ognuno di questi?
whuber

16

La convalida incrociata K-fold (CV) suddivide casualmente i tuoi dati in partizioni K e, a sua volta, tieni fuori una di quelle parti K come caso di test e raggruppa insieme le altre parti K-1 come dati di allenamento. Leave One Out (LOO) è il caso speciale in cui prendi i tuoi N elementi di dati e fai CV N-fold. In un certo senso, Hold Out è un altro caso speciale, in cui scegli solo una delle tue K pieghe come test e non ruoti attraverso tutte le K pieghe.

Per quanto ne so, il CV di 10 volte è praticamente il rigore, dal momento che utilizza i tuoi dati in modo efficiente e aiuta anche a evitare sfortunate scelte di partizione. Hold Out non utilizza in modo efficiente i tuoi dati e LOO non è così robusto (o qualcosa del genere), ma 10-ish-fold è giusto.

Se sai che i tuoi dati contengono più di una categoria e una o più categorie sono molto più piccole delle altre, alcune delle tue partizioni K casuali potrebbero non contenere affatto nessuna delle piccole categorie, il che sarebbe male. Per assicurarti che ogni partizione sia ragionevolmente rappresentativa, usa la stratificazione: suddividi i tuoi dati nelle categorie e quindi crea partizioni casuali scegliendo in modo casuale e proporzionale da ciascuna categoria.

Tutte queste variazioni sul CV K-fold scelgono dai tuoi dati senza sostituzione. Bootstrap sceglie i dati con la sostituzione, quindi lo stesso dato può essere incluso più volte e alcuni dati potrebbero non essere inclusi affatto. (Ogni "partizione" avrà anche N elementi, a differenza di K-fold, in cui ogni partizione avrà elementi N / K.)

(Devo ammettere che non so esattamente come sarebbe usato il bootstrap nel CV. Il principio del testing e del CV è assicurarsi di non testare i dati su cui ti sei allenato, quindi ottieni un'idea più realistica di come la tua tecnica + coefficienti potrebbero funzionare nel mondo reale.)

EDIT: Sostituito "Hold Out non è efficiente" con "Hold Out non utilizza in modo efficiente i dati" per chiarire, secondo i commenti.


1
Quando dici che "Hold Out non è efficiente", non sono sicuro di seguirlo. Cosa intendi per efficienza qui? A differenza della normale piega a N, Hold Out non ruota attraverso le pieghe, quindi dovrebbe essere più veloce. Intendi invece che è peggio nel combattere il sovradimensionamento rispetto al normale CV N-fold?
Amelio Vazquez-Reina,

2
Per "efficiente" intendo che non utilizza i dati in modo efficiente. Il bello del K-fold CV è che il 100% dei tuoi dati viene utilizzato per la formazione e il 100% dei tuoi dati viene utilizzato per i test, il che consente un uso efficiente dei dati. La chiave è, ovviamente, che tutti i tuoi dati non vengono utilizzati contemporaneamente per i test e la formazione, il che produrrebbe risultati di test ottimistici (overfitting). Effettuando una divisione statica, Hold Out afferma che, per esempio, 1/3 dei dati non verranno mai utilizzati per la formazione e 2/3 dei dati non verranno mai utilizzati per i test, sprecando molte informazioni nei dati.
Wayne,

@Wayne Lo stimatore del controllo non è asintoticamente imparziale? Inoltre, il semplice CV di k-fold è più soggetto all'errore di tipo II rispetto al CV di k-fold ripetuto.
chl

@chl: credo che tu abbia ragione su entrambi i fronti. Non ho usato ripetuti CV di piega a K, ma dovrebbe avere una varianza più bassa, il che aiuterebbe.
Wayne,


1

... e una guida su quando usarli ciascuno ...

Sfortunatamente quel problema è più difficile di quanto non venga riconosciuto. Esistono almeno 2 usi principali della convalida incrociata: selezione di un modello e valutazione delle prestazioni del modello.

In parole povere, se si utilizza una variante CV che divide i dati utilizzando un rapporto treno-test elevato, questo può essere migliore per la valutazione. L'uso di un set di allenamento più grande imiterà in modo più preciso le prestazioni dell'adattamento del modello sull'insieme di dati completo.

Ma un elevato rapporto treno-prova può essere peggiore per la selezione. Immagina che ci sia davvero un modello "migliore" che dovresti "scegliere", ma il tuo set di dati è piuttosto grande. Quindi, i modelli troppo grandi che si adattano leggermente leggermente avranno quasi le stesse prestazioni CV del modello "migliore" (perché stimerai con successo che i loro parametri spuri siano trascurabili). La casualità dei dati e la procedura di CV / suddivisione spesso ti faranno scegliere un modello di adattamento anziché il modello veramente "migliore".

Vedi Shao (1993), "Selezione del modello lineare per convalida incrociata" per la teoria asintotica più antica nel caso della regressione lineare. Yang (2007), "Coerenza della convalida incrociata per il confronto delle procedure di regressione" e Yang (2006), "Confronto dei metodi di apprendimento per la classificazione" forniscono una teoria asintotica per problemi di regressione e classificazione più generali. Ma è difficile trovare una consulenza rigorosa su campioni finiti .

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.