Convalida di esclusione vs. convalida incrociata


54

Per me, sembra che la convalida dell'aggancio sia inutile. Cioè, dividere il set di dati originale in due parti (formazione e test) e usare il punteggio del test come misura di generalizzazione, è alquanto inutile.

La convalida incrociata di K-fold sembra fornire migliori approssimazioni di generalizzazione (in quanto si allena e verifica su ogni punto). Quindi, perché dovremmo utilizzare la convalida standard di controllo? O addirittura parlarne?


10
perché pensi che sia inutile? Puoi leggere la sezione 7 degli Elementi di teoria dell'apprendimento statistico per un'analisi formale dei suoi pro e dei suoi contro. Statisticamente parlando, k-fold è meglio, ma l'uso di un set di test non è necessariamente negativo. Intuitivamente, è necessario considerare che un set di test (se utilizzato correttamente) è effettivamente un set di dati che non è stato utilizzato affatto durante l'allenamento. Quindi è sicuramente utile in un certo senso per valutare un modello. Inoltre, k-fold è super costoso, quindi tenere duro è una sorta di "approssimazione" di ciò che fa k-fold (ma per qualcuno con un basso potere computazionale).
Charlie Parker,

Sicuro. Da una prospettiva teorica, K-fold è più preciso ma LEGGERMENTE più costoso dal punto di vista computazionale. La domanda era: perché non fare SEMPRE la validazione incrociata di K-fold?

2
Vedo. Direi che la ragione è per lo più sempre computazionale. K-fold approssima meglio l'errore di generalizzazione, quindi, dal punto di vista statistico, K-fold è il metodo di scelta che credo. Hold-out è molto più semplice da implementare E non richiede formazione come molti modelli. In pratica, l'addestramento di un modello può essere piuttosto costoso.
Charlie Parker,

1
Giusto - ma penso che l'argomento "troppo computazionale costoso" sia abbastanza fragile. Quasi sempre, miriamo a sviluppare i modelli più accurati. Tuttavia c'è questo paradosso in cui molti degli esperimenti condotti in letteratura hanno un solo set di validazione.

1
Domanda - Elementi della teoria dell'apprendimento statistico, sezione 7.10.1 intitolata "Convalida incrociata di K" sembra indicare che mantenere i dati del test completamente separati dai dati di addestramento (come nella validazione dell'aggancio) è l'ideale, e la convalida di K-fold è solo un compromesso in quanto i dati sono molte volte scarsi. Sono ancora abbastanza nuovo nelle statistiche, potresti sottolineare come la validazione incrociata sia in realtà più precisa?
numX

Risposte:


21

La mia unica ipotesi è che puoi tenere duro con tre ore di esperienza di programmazione; l'altro richiede una settimana in linea di principio e sei mesi in pratica.

In linea di principio è semplice, ma scrivere codice è noioso e richiede tempo. Come ha affermato Linus Torvalds, "I cattivi programmatori si preoccupano del codice. I bravi programmatori si preoccupano delle strutture di dati e delle loro relazioni". Molte persone che fanno statistiche sono cattivi programmatori, non per colpa loro. Eseguire la validazione incrociata di k-fold in modo efficiente (e con questo intendo, in un modo che non è terribilmente frustrante per il debug e l'uso più di una volta) in R richiede una vaga comprensione delle strutture di dati, ma le strutture di dati sono generalmente ignorate in "introduzione "tutorial di programmazione statistica". È come se la persona anziana usasse Internet per la prima volta. Non è davvero difficile, ci vuole solo mezz'ora in più per capire la prima volta, ma è nuovo di zecca e questo lo rende confuso, quindi è facile da ignorare.

Hai domande come questa: Come implementare una convalida hold-out in R . Nessun reato destinato, in ogni caso, al richiedente. Ma molte persone non sono semplicemente alfabetizzate. Il fatto che le persone stiano facendo una validazione incrociata è abbastanza per farmi felice.

Sembra sciocco e banale, ma questo proviene dall'esperienza personale, essendo stato quel ragazzo e avendo lavorato con molte persone che erano quel ragazzo.


18
Forse come qualcuno che si è laureato in CS ho una visione leggermente distorta su questo, ma se puoi implementare correttamente la convalida dell'aggancio (il che significa già dividere il set di dati in 2 parti e usarne uno per l'addestramento e l'altro per i test), il l'unica cosa che devi cambiare è il rapporto tra la divisione e mettere tutto in un ciclo. Sembra difficile credere che questo sarebbe un grosso problema.
Voo,

3
@Voo: inoltre, essere in grado di programmare non è abbastanza qui: devi capire il problema abbastanza bene da essere in grado di giudicare per quali confondenti devi tenere conto durante la tua procedura di scissione. Vedi ad esempio stats.stackexchange.com/questions/20010/… . Penso di vedere questo tipo di problemi più spesso dei problemi di codifica "puri" (anche se non si sa mai: qualcuno che è a malapena in grado di codificare una semplice suddivisione delle righe nella matrice dei dati di solito commetterà anche l'errore di livello superiore di non dividere ad esempio a livello di paziente)
cbeleites supporta Monica il

Si noti inoltre che è possibile eseguire una suddivisione del controllo (es. Paziente / giorno di misurazione / ...) senza alcuna programmazione separando i file prodotti dallo strumento di misurazione ...
cbeleites supporta Monica il

5
Ai votanti: nota che ho posto una domanda separata che mette in discussione la mia logica. stats.stackexchange.com/q/108345/36229
shadowtalker

1
Non credo che la risposta che spiega la differenza tra due metodi di convalida incrociata dovrebbe mai essere il tempo umano di apprendere, assurdamente distorto e non utile
rgalbo,

40

L'aggancio è spesso usato come sinonimo di validazione con set di test indipendenti, sebbene vi siano differenze cruciali tra la suddivisione casuale dei dati e la progettazione di un esperimento di validazione per test indipendenti.

È possibile utilizzare set di test indipendenti per misurare le prestazioni di generalizzazione che non possono essere misurate mediante ricampionamento o validazione del controllo, ad esempio le prestazioni per casi futuri sconosciuti (= casi misurati in seguito, al termine dell'allenamento). Questo è importante per sapere per quanto tempo un modello esistente può essere utilizzato per nuovi dati (si pensi ad esempio alla deriva dello strumento). Più in generale, ciò può essere descritto come misurazione delle prestazioni di estrapolazione al fine di definire i limiti di applicabilità.

Un altro scenario in cui l'aggancio può effettivamente essere utile è: è molto facile garantire che i dati di addestramento e test siano adeguatamente separati - molto più facile rispetto alla validazione del ricampionamento: ad es.

  1. decidere di dividere (ad es. fare assegnazione casuale di casi)
  2. misurare
  3. i dati di misurazione e di riferimento dei casi di addestramento => modellazione \ né le misurazioni né il riferimento dei casi di test vengono consegnati alla persona che modella.
  4. modello finale + misure dei casi considerati => previsione
  5. confrontare le previsioni con i riferimenti per i casi risolti.

A seconda del livello di separazione necessario, ogni passaggio può essere eseguito da qualcun altro. Come primo livello, non consegnare al modellatore alcun dato (nemmeno le misurazioni) dei casi di test consente di essere certi che nessun dato di test fuoriesca nel processo di modellazione. A un secondo livello, le misure del modello finale e del test case potrebbero essere consegnate a qualcun altro, e così via.

Sì, paghi per questo grazie alla minore efficienza delle stime di controllo rispetto alla convalida del ricampionamento. Ma ho visto molti articoli in cui sospetto che la convalida del ricampionamento non separa correttamente i casi (nel mio campo abbiamo molti dati raggruppati / gerarchici / raggruppati).

Ho imparato la mia lezione sulle perdite di dati per il ricampionamento ritirando un manoscritto una settimana dopo l'invio quando ho scoperto di avere una perdita non rilevata in precedenza (eseguendo test di permutazione a fianco) nella mia procedura di suddivisione (errore di battitura nel calcolo dell'indice).

A volte l'aggancio può essere più efficace della ricerca di qualcuno disposto a prendere il tempo necessario per controllare il codice di ricampionamento (ad esempio per i dati raggruppati) al fine di ottenere lo stesso livello di certezza sui risultati. Tuttavia, IMHO di solito non è efficiente farlo prima di essere nella fase in cui è comunque necessario misurare, ad esempio, le prestazioni future (primo punto) - in altre parole, quando è comunque necessario impostare un esperimento di convalida per il modello esistente.

OTOH, in situazioni di dimensioni di campione ridotte, l'aggancio non è un'opzione: è necessario tenere abbastanza casi di test in modo che i risultati del test siano abbastanza precisi da consentire la conclusione necessaria (ricordare: 3 casi di test su 3 corretti per la classificazione significa un intervallo di confidenza binomiale del 95% che varia ben al di sotto di 50:50 indovinando!) Frank Harrell indicherebbe la regola empirica che almeno ca. Sono necessari 100 casi (di prova) per misurare correttamente una proporzione [come la frazione di casi correttamente previsti] con una precisione utile.


Aggiornamento: ci sono situazioni in cui una divisione corretta è particolarmente difficile da ottenere e la convalida incrociata diventa irrealizzabile. Considera un problema con un numero di confonditori. La divisione è facile se questi confonditori sono nidificati rigorosamente (ad esempio, uno studio con un numero di pazienti ha diversi campioni di ciascun paziente e analizza un numero di cellule di ciascun campione): si divide al livello più alto della gerarchia di campionamento (dal punto di vista del paziente) . Ma potresti avere confonditori indipendenti che non sono nidificati, ad esempio variazioni giornaliere o varianze causate da diversi sperimentatori che eseguono il test. È quindi necessario assicurarsi che la divisione sia indipendente per tutticonfonditori al livello più alto (i confonditori nidificati saranno automaticamente indipendenti). Prendersi cura di questo è molto difficile se alcuni confonditori vengono identificati solo durante lo studio e la progettazione e l'esecuzione di un esperimento di validazione possono essere più efficienti del trattare con divisioni che non lasciano quasi nessun dato né per la formazione né per il test dei modelli surrogati.


6
Vorrei poter dare più di +1 per questa risposta molto approfondita. Mi è particolarmente piaciuto che tu abbia menzionato il tuo problema con una perdita di dati in quanto dimostra in modo efficace che può essere tutt'altro che banale escludere tali problemi, anche per gli esperti. Questo è un buon controllo di realtà!
Marc Claesen,

Non stai chiedendo la domanda? Sì, la divisione è difficile, a causa di fattori confondenti, ma è difficile a prescindere dal fatto che tu stia eseguendo una singola convalida o una convalida incrociata k-fold, non è vero? (Grazie per una risposta perspicace a prescindere!)
Nils von Barth,

1
@NilsvonBarth: non vedo come i miei argomenti siano circolari: l'OP chiede "perché [affatto] usa la validazione di controllo", e fornisco una serie di ragioni pratiche. L'uso statisticamente più efficiente di un numero limitato di casi non è sempre la proprietà più importante del progetto di studio. (Sebbene nella mia esperienza lo sia spesso, a causa di numeri di casi estremamente limitati: sto molto più spesso consigliando CV CV ripetuti / iterati anziché hold-out). Per alcuni confonditori la divisione fisica è possibile e facile - e un modo molto efficace per prevenire le anteprime. Chissà se lo troveremo doppiamente ...
cbeleites supporta Monica il

ad un certo punto potrebbe essere necessaria un'analisi dei dati statistici in cieco contro troppi documenti falsi positivi?
cbeleites supporta Monica l'

2
@NilsvonBarth: attenta all'aggancio che garantisce l'indipendenza: è facile implementare l'aggancio in tal modo (mediante aggancio fisico dei casi, ovvero i campioni di prova vengono riposti e misurati solo dopo che l'addestramento del modello è terminato), ma spesso il termine hold-out viene utilizzato per ciò che è in realtà molto più simile a una singola suddivisione casuale dei dati - e quindi tutte le possibilità di commettere errori nella divisione possono essere fatte anche con l'aggancio!
cbeleites supporta Monica il

8

Potrebbe essere utile chiarire un po 'la terminologia. Se lasciamo che sia un numero intero minore di (o uguale a) dove è la dimensione del campione e partizioniamo il campione in sottocampioni univoci, ciò che stai chiamando la validazione di Hold-out è in realtà solo 2 volte ( = 2 ) convalida incrociata. La convalida incrociata è semplicemente uno strumento per stimare i tassi di errore fuori campione (o la generalizzabilità) di un particolare modello. La necessità di stimare il tasso di errore fuori campione è comune e ha generato un'intera letteratura. Vedi, per cominciare, il capitolo 7 di ESL .n n k kknnkk

Quindi, per rispondere alle domande:

  1. Perché parlarne? Pedagogicamente. Vale la pena pensare alla validazione di Hold-out come a un caso speciale - e solo occasionalmente utile - di un metodo altrimenti abbastanza utile con molte, molte varianti.

  2. Perché usarlo Se uno è abbastanza fortunato da avere un colossale set di dati (in termini di osservazioni, ), ha senso dividere i dati a metà - allenarsi a metà e testare dall'altra -. Questo ha senso per ragioni computazionali poiché tutto ciò che è necessario è adattarsi una volta e prevedere una volta (anziché volte). E ha senso dal punto di vista della "stima di grandi campioni" poiché hai un sacco di osservazioni per adattarsi al tuo modello.knk

Una regola empirica che ho imparato è: quando è grande, può essere piccolo, ma quando è piccolo, dovrebbe essere vicino a .k n k nnknkn


13
Non penso che il controllo sia uguale alla convalida in 2 volte, perché nella convalida in 2 volte si adatteranno due modelli e quindi si calcoleranno la media degli errori tra i due set di controllo.
Alex

8

Se la selezione del modello e la procedura di adattamento non possono essere codificati perché è soggettiva, o in parte così, implicando l'esame di grafici e simili, la convalida del controllo potrebbe essere la cosa migliore che puoi fare. (Suppongo che potresti usare qualcosa come Mechanical Turk in ogni piega del CV, anche se non ho mai sentito parlare del suo svolgimento.)


6

Volevo solo aggiungere alcune semplici linee guida che Andrew Ng ha menzionato nella nostra classe CS 229 a Stanford in merito alla convalida incrociata. Queste sono le pratiche che segue nel suo stesso lavoro.

Lascia che sia il numero di campioni nel tuo set di dati. Se usa la validazione incrociata "Lascia una volta fuori".m 20mm20

Se usa la validazione incrociata di k-fold con un relativamente grande tenendo presente il costo computazionale.k m20<m100km

Se usa la normale convalida incrociata di k-fold . Oppure, se la potenza computazionale non è sufficiente e , utilizzare la convalida incrociata di controllo.( k = 5 ) m > 10 , 000100<m1,000,000(k=5)m>10,000

Se utilizzano la convalida incrociata hold-out, ma se è disponibile la potenza di calcolo è possibile utilizzare la convalida incrociata k-fold se si desidera spremere quella prestazione extra dal modello.( k = 5 )m1,000,000(k=5)


5

Risposta breve:

Consiglierei di usare sempre CV con almeno per:k=5

  • modelli complessi
  • risultati finali che devono rispettare i vincoli di validità

Potresti rilassarlo per:

  • formazione su set di dati molto grandi
  • formazione di modelli semplici
  • prototipazione quando il tempo è un problema

Alcuni di voi hanno menzionato che programmare questo in R potrebbe essere un problema. Vi consiglio di dare un'occhiata al pacchetto "mlr" . Avvolge diversi pacchetti in un'interfaccia unificata, fornendo anche metodi di ricampionamento e valutazione delle prestazioni davvero avanzati.

Dai un'occhiata: http://mlr-org.github.io/mlr-tutorial/release/html/resample/ e: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm

Qualche spiegazione in più - ciò che CV fa davvero è rompere il compromesso della varianza di pregiudizio:

Ora, il problema che entrambi gli approcci tentano di risolvere è stimare l'errore di generalizzazione, che è subordinato ai dati utilizzati per addestrare un modello.

Holdout ha un problema con bias e varianza:

Riducendo la quantità di dati su cui testiamo, introduciamo una varianza nel nostro errore di generalizzazione stimato, poiché i dati del test potrebbero non rappresentare più molto bene la distribuzione sottostante. Questo di per sé non introduce una distorsione, poiché in previsione le prestazioni stimate saranno corrette.

Rimpicciolire il set di formazione introduce tuttavia una propensione pessimistica, in quanto la distribuzione sottostante non è ben rappresentata nei dati e il modello non può adattarsi anche ai dati. Rendere il set di allenamento molto piccolo introduce anche la varianza.

Poiché le dimensioni della formazione e del set di test si determinano a vicenda, questo ci lascia con un compromesso: parzialità pessimistica e varianza elevata.

k - 1k -fold La convalida incrociata affronta questo problema mantenendo grande l'allenamento (una frazione di dei dati viene utilizzata per l'addestramento in ogni iterazione) e gestendo la varianza dell'errore del test ricampionando . Dopo tutte le iterazioni, abbiamo testato le prestazioni su ogni osservazione del set di dati con uno studente. Ovviamente, ciò richiede più tempo di calcolo rispetto al semplice controllo.k1k

La convalida incrociata è particolarmente importante per gli studenti più complessi (ad alta varianza). Quelli di solito sono anche più costosi dal punto di vista computazionale, il che può rendere l'intero processo piuttosto dispendioso in termini di tempo.


3

Tutti questi sono commenti utili. Basta prenderne uno in più. Quando si dispone di dati sufficienti, l'utilizzo di Hold-Out è un modo per valutare un modello specifico (un modello SVM specifico, un modello CART specifico, ecc.), Mentre se si utilizzano altre procedure di convalida incrociata si stanno valutando metodologie (in base alle condizioni del problema ) piuttosto che modelli (metodologia SVM, metodologia CART, ecc.).

Spero sia utile!


3

Modellare con dati seri è un'eccezione per me. K fold non può funzionare in alcuni casi quando è necessario prevedere il futuro in base ai dati precedenti. I set di test devono essere i dati futuri e non puoi mai toccarli in fase di allenamento. previa previsione di vendita o borsa. Tenere duro è utile in questi casi.


Tempo dati seri?
nbro,

3

In poche parole; tempo. Convalida incrociata si esegue la routine di allenamento k volte (cioè una volta per ogni set di controllo). Se si dispone di dati di grandi dimensioni, potrebbero essere necessarie molte ore o addirittura giorni per addestrare il modello per un solo set di dati, quindi moltiplicarlo per k quando si utilizza la convalida incrociata.

Pertanto, sebbene la convalida incrociata sia il metodo migliore, in determinate circostanze non è fattibile e il tempo impiegato sarebbe stato meglio speso a modellare i dati in modi diversi o provare diverse funzioni di perdita al fine di ottenere un modello migliore.

La mia preferenza personale è quella di prendere i dati di validazione da tutto il set di dati, quindi piuttosto che prendere un singolo blocco del 10% dalla testa o dalla coda dei dati, prendo il 2% da 5 punti nel set di dati. Ciò rende i dati di convalida un po 'più rappresentativi dei dati nel loro insieme.


Anche se è una vecchia domanda e una nuova risposta, la sto votando perché mette in discussione l'affermazione infondata secondo cui "K-fold è più preciso ma LEGGERMENTE più costoso dal punto di vista computazionale", che le altre risposte ignoravano o passavano troppo rapidamente.
The Laconic,

0

Va notato che non è sempre possibile applicare la convalida incrociata. Considerare i set di dati dipendenti dal tempo in modo tale che si desidera utilizzare i dati storici per addestrare un modello predittivo per il comportamento futuro. In questo caso, è necessario applicare la convalida di controllo.


2
In questo caso, è necessario eseguire la convalida in avanti.
Neil G,
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.