Stime di varianza nella validazione incrociata di k-fold


27

La convalida incrociata K-fold può essere utilizzata per stimare la capacità di generalizzazione di un determinato classificatore. Posso (o dovrei) anche calcolare una varianza aggregata da tutte le esecuzioni di validazione al fine di ottenere una stima migliore della sua varianza?

Se no, perché?

Ho trovato documenti che utilizzano la deviazione standard in pool tra cicli di convalida incrociata . Ho anche trovato documenti che affermano esplicitamente che non esiste uno stimatore universale per la varianza della validazione . Tuttavia, ho anche trovato articoli che mostrano alcuni stimatori di varianza per l'errore di generalizzazione (sto ancora leggendo e provando a comprenderlo). Cosa fanno veramente (o riportano) le persone in pratica?

EDIT: Quando CV viene utilizzato per misurare l'errore di classificazione grezzo (ovvero un campione è stato etichettato correttamente o non lo è; ad esempio vero o falso), potrebbe non avere senso parlare di una varianza aggregata. Tuttavia, sto parlando del caso in cui la statistica che stiamo stimando ha una varianza definita. Quindi, per una data piega, possiamo finire con un valore per la statistica e una stima della varianza. Non sembra giusto scartare queste informazioni e considerare solo la statistica media. E mentre sono consapevole che potrei costruire una stima della varianza usando i metodi bootstrap, (se non sbaglio molto), ciò ignorerebbe comunque le variazioni della piega e prenderebbe in considerazione solo le stime statistiche (oltre a richiedere molto più potere di calcolo).


Hai calcolato la varianza considerando i due modi possibili per vedere se differiscono notevolmente l'uno dall'altro?
zeferino,

Si l'ho fatto. In alcuni esperimenti c'è stato un cambiamento di circa un ordine di grandezza tra la varianza e la varianza aggregata per i campioni di addestramento. Non c'era molta differenza per i campioni di validazione. Le modifiche più grandi sembravano essere associate a modelli meno precisi.
Cesar,

1
@Cesar: bella osservazione: i tuoi modelli sono molto instabili (elevata varianza tra le iterazioni). Nella classificazione (a meno che il classificatore non sia peggiore dell'ipotesi), le previsioni instabili porteranno a previsioni errate. Un pensiero illustrativo per questo è che una deviazione da una previsione corretta sarà sempre nella direzione "sbagliata", non c'è troppo alto che annullerebbe con troppo basso.
cbeleites supporta Monica il

1
@cbeleites: non ci si aspetterebbe allora, dal momento che le grandi variazioni di varianza si verificano principalmente con modelli che mostrano tassi di errore più elevati? A proposito, bel aggiornamento sulla tua risposta. Devo ancora leggerlo più attentamente, ma sono già molto grato. Grazie.
Cesar,

1
@Cesar: Thx. Certamente è previsto, un modo meno illustrativo per affermare che è la formula della varianza per le proporzioni (vedi la mia risposta): più estremo è il tasso di errore reale, più bassa è la varianza, la varianza massima è al tasso di errore = 50%.
cbeleites supporta Monica il

Risposte:


13

Domanda molto interessante, dovrò leggere i documenti che dai ... Ma forse questo ci farà iniziare nella direzione di una risposta:

Di solito affronto questo problema in un modo molto pragmatico: ripeto la convalida incrociata di k-fold con nuove divisioni casuali e calcolo le prestazioni come al solito per ogni iterazione. I campioni di test globali sono quindi gli stessi per ogni iterazione e le differenze derivano da diverse suddivisioni dei dati.

Questo lo riferisco, ad esempio, dal 5 ° al 95 ° percentile della performance osservata. scambiando fino a campioni per nuovi campioni e discuterne come misura per l'instabilità del modello.nK-1

Nota a margine: non posso comunque usare formule che richiedono la dimensione del campione. Dato che i miei dati sono raggruppati o gerarchici nella struttura (molte misurazioni simili ma non ripetute dello stesso caso, di solito diverse [centinaia] posizioni diverse dello stesso campione) non conosco le dimensioni effettive del campione.

confronto con bootstrap:

  • le iterazioni utilizzano nuove divisioni casuali.

  • la differenza principale è il ricampionamento con (bootstrap) o senza sostituzione (cv).

  • il costo computazionale è più o meno lo stesso, poiché sceglierei no di iterazioni di cv no di iterazioni bootstrap / k, ovvero calcolerei lo stesso no totale di modelli.

  • bootstrap ha dei vantaggi rispetto al cv in termini di alcune proprietà statistiche (asintoticamente corretto, forse hai bisogno di meno iterazioni per ottenere una buona stima)

  • tuttavia, con cv hai il vantaggio di essere garantito

    • il numero di campioni di allenamento distinti è lo stesso per tutti i modelli (importante se si desidera calcolare le curve di apprendimento)
    • ogni campione viene testato esattamente una volta in ogni iterazione
  • alcuni metodi di classificazione elimineranno i campioni ripetuti, quindi il bootstrap non ha senso

Varianza per le prestazioni

risposta breve: sì, ha senso parlare di varianza nella situazione in cui esistono solo {0,1} risultati.

Dai un'occhiata alla distribuzione binomiale (k = successi, n = test, p = vera probabilità di successo = media k / n):

σ2(K)=np(1-p)

La varianza di proporzioni (come il tasso di successo, il tasso di errore, la sensibilità, TPR, ..., io uso da ora in poi e p per il valore osservato in un test) è un argomento che riempie interi libri ...pp^

  • Fleiss: metodi statistici per tariffe e proporzioni
  • Forthofer e Lee: Biostatistics ha una bella introduzione.

p^=Kn

σ2(p^)=p(1-p)n

Ciò significa che l'incertezza per misurare le prestazioni del classificatore dipende solo dalle prestazioni effettive p del modello testato e dal numero di campioni di test.

Nella convalida incrociata si assume

  1. che i modelli "surrogati" di k abbiano le stesse prestazioni reali del modello "reale" che di solito costruisci da tutti i campioni. (La scomposizione di questa ipotesi è il noto pregiudizio pessimistico).

  2. che i modelli k "surrogati" hanno le stesse prestazioni reali (sono equivalenti, hanno previsioni stabili), quindi è possibile raggruppare i risultati dei test k.
    Naturalmente quindi non solo i modelli k "surrogati" di una iterazione di cv possono essere raggruppati, ma i modelli ki delle iterazioni di k-fold cv.

Perché iterare?

La cosa principale che le iterazioni ti dicono è l'instabilità del modello (previsione), cioè la varianza delle previsioni di diversi modelli per lo stesso campione.

p^

E sì, questa è un'informazione importante.

nBootStrun'pKnioter. cvn-1nσ2(p^)=p(1-p)n

pKnp^n

Se si osserva l'instabilità del modello, la media aggregata è una stima migliore delle prestazioni reali. La varianza tra le iterazioni è un'informazione importante e potresti confrontarla con la varianza minima prevista per un set di test di dimensione n con prestazioni medie prestazioni effettive su tutte le iterazioni.


Si esegue l'iterazione con nuove suddivisioni casuali, con sostituzione, come nel bootstrap? O ripeti più volte la validazione incrociata di k-fold? Questo è interessante, perché non sembra bootstrap ma potrebbe funzionare così. Ma quante repliche esegui? Questo potrebbe diventare molto costoso facilmente.
Cesar,

@Cesar: è molto simile al bootstrap, vedi la risposta estesa.
cbeleites supporta Monica il

In che modo CV lascia lo "stesso numero di campioni di addestramento distinti" per ciascun modello, ma il bootstrap non lo fa? Non seguo, poiché i CV "replicare set di dati" sono una diversa combinazione di osservazioni: come possono eventualmente fornire lo stesso numero di osservazioni distinte? Forse stai supponendo che ogni record sia distinto nel set di allenamento originale?
Probislogic,

@probabilityislogic: i set di dati di replica CV sono più piccoli del set di dati originale. Pertanto, tali repliche diverse possono essere prodotte anche con ricampionamento senza sostituzione. Ricampionando con la sostituzione puoi disegnare lo stesso record più volte. Pertanto, il numero di record univoci può variare. Sì, presumo che i record originali siano distinti. Al fine di mantenere l'indipendenza statistica che è cruciale per molte applicazioni, il ricampionamento dovrebbe essere effettuato al massimo livello della gerarchia dei dati. (Ad esempio, lavoro con i dati dei pazienti con centinaia di righe per ogni paziente => ricampiona i pazienti)
cbeleites supporta Monica il

1
n

1

Ricorda che CV è solo una stima e non può mai rappresentare l'errore di "generalizzazione" reale. A seconda della dimensione del campione (che avrà un impatto sul numero di pieghe o sulla dimensione della piega), si può essere fortemente limitati nella capacità di calcolare qualsiasi stima dei parametri della distribuzione dell'errore di generalizzazione. Secondo me (e l'ho visto presunto in vari libri di testo, "Discovery di conoscenza con macchine vettoriali di supporto" - Lutz Hamel) puoi fare una variante bootstrap di CV per stimare la distribuzione dell'errore di generalizzazione, ma uno standard 10- 1 (ad esempio) una volta spento CV non ti darà abbastanza punti dati per fare inferenze sul vero errore gen. Il bootstrap richiede di prelevare più campioni con la sostituzione dall'allenamento / test / val effettuando in modo efficace test CV multipli (diciamo circa 1000) (o almeno) 10-1. Quindi prendi la tua distribuzione campionaria delle medie per ogni test CV come stima della distribuzione campionaria della media per la popolazione di errori CV e da questo puoi stimare i parametri distributivi cioè media, mediana, std min max Q1 Q3 ecc ... È un po 'di lavoro, e secondo me è davvero necessario solo se la tua applicazione è abbastanza importante / rischiosa da giustificare il lavoro extra. vale a dire forse in un ambiente di marketing in cui l'azienda è semplicemente felice di essere migliore del casuale, quindi forse non necessaria. MA se stai cercando di valutare le reazioni dei pazienti a farmaci ad alto rischio o di prevedere le aspettative di reddito per grandi investimenti, potresti essere prudente nel realizzarlo.


È una stima, ma si potrebbe dire praticamente di qualsiasi uso di una statistica. Tuttavia, quando ogni piega ha già una stima della varianza, non sembra corretto scartare queste informazioni. Ho aggiornato la domanda con chiarimenti.
Cesar,

Forse non lo capisco. Non capisco davvero perché sei angosciato per la varianza di una singola piega?
clancy

Eseguire un singolo CV di 10 volte non è esattamente economico per il particolare problema che sto cercando di affrontare. Hai ragione, potrei stimare la varianza prendendo più campioni con la sostituzione come nel bootstrap. Ma prendere un gran numero di CV, anche poche centinaia, potrebbe essere molto poco pratico nel mio caso. Sto cercando un modo (se ce n'è uno) di combinare le stime della varianza delle singole pieghe in modo da poter almeno ridurre il numero di campioni bootstrap necessari. E inoltre, la curiosità.
Cesar,

Ah ok. Forse allora la varianza di ciascuna delle medie di 10 volte dalla media della piega complessiva sarà una variabile casuale selezionata dalla distribuzione di campionamento per le varianze ... (che penso sia un chi sq dist o F dist)
clancy

@clancy: con 10-1 intendi un cv di esclusione per n = 10 campioni? Nota che per le iterazioni esclusive non ha senso.
cbeleites supporta Monica il
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.