Normalizzazione prima della convalida incrociata


16

La normalizzazione dei dati (per avere media zero e deviazione standard unitaria) prima di eseguire una convalida incrociata ripetuta k ha qualche risultato negativo come un overfitting?

Nota: questo è per una situazione in cui #case> #features totali

Sto trasformando alcuni dei miei dati utilizzando una trasformazione del registro, quindi normalizzando tutti i dati come sopra. Sto quindi eseguendo la selezione delle funzionalità. Successivamente applico le funzionalità selezionate e i dati normalizzati a una convalida incrociata ripetuta 10 volte per provare a stimare le prestazioni del classificatore generalizzato e sono preoccupato che l'uso di tutti i dati per normalizzare potrebbe non essere appropriato. Devo normalizzare i dati del test per ogni piega usando i dati di normalizzazione ottenuti dai dati di allenamento per quella piega?

Eventuali opinioni ricevute con gratitudine! Ci scusiamo se questa domanda sembra ovvia.

Modifica: Durante il test di questo (in linea con i suggerimenti di seguito) ho scoperto che la normalizzazione prima del CV non faceva molta differenza dal punto di vista delle prestazioni rispetto alla normalizzazione all'interno del CV.

Risposte:


13

Per rispondere alla tua domanda principale, sarebbe ottimale e più appropriato scalare all'interno del CV. Ma probabilmente non importerà molto e potrebbe non essere affatto pratico nella pratica se il tuo classificatore ridimensiona i dati, cosa che la maggior parte fa (almeno in R).

Tuttavia, selezionare la funzione prima della convalida incrociata è un GRANDE NO e porterà a un overfitting, poiché li selezionerai in base al loro rendimento sull'intero set di dati. La trasformazione del log può essere eseguita all'esterno, poiché la trasformazione non dipende dai dati effettivi (più dal tipo di dati) e non è qualcosa che non farebbe se avessi solo il 90% dei dati anziché il 100% e non è ottimizzato in base ai dati.

Per rispondere anche al tuo commento, ovviamente se ciò comporterà un overfitting dipenderà dal tuo modo di selezionare le funzionalità. Se le scegli per caso (perché dovresti farlo?) O per considerazioni teoriche a priori (altra letteratura) non importa. Ma se dipende dal set di dati lo farà. Elements of Statistical Learnings ha una buona spiegazione. Puoi scaricare gratuitamente e legalmente un .pdf qui http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Il punto che ti riguarda è nella sezione 7.10.2 a pagina 245 della quinta stampa. Si intitola "The Wrong and Right Ways to do Cross-validation".


Grazie - sicuramente se gli unici risultati riportati sono per le prestazioni stimate ottenute utilizzando il modello (caratteristiche) selezionato in ogni piega, ciò non può comportare un overfitting? Dopotutto stai segnalando solo le prestazioni generalizzate di un determinato sottoinsieme di funzionalità.
BGreene,

Ho ampliato la mia risposta per indirizzare il tuo commento. Penso che la spiegazione nel link sia migliore di quello che posso cucinare in questo momento.
Erik,

Grazie. Ciò suggerisce che la selezione di funzionalità basata su filtro standard non dovrebbe mai essere utilizzata e che invece dovrebbe essere utilizzata la selezione di funzionalità basata su wrapper o equivalente. Questo è ancora vero per la situazione in cui #Case> #Features? (Ho 259 casi, per un totale di 56 funzioni). Suppongo che il potenziale di errore sia inferiore qui?
BGreene,

4

La convalida incrociata è meglio considerata come un metodo per stimare le prestazioni di una procedura statistica, piuttosto che un modello statistico. Pertanto, al fine di ottenere una stima delle prestazioni imparziale, è necessario ripetere ogni elemento di tale procedura separatamente in ogni piega della convalida incrociata, che includerebbe la normalizzazione. Quindi direi normalizzare in ogni piega.

L'unica volta che ciò non sarebbe necessario è se la procedura statistica fosse completamente insensibile al ridimensionamento e al valore medio dei dati.


Penso che questa sia una buona risposta, anche se non è rigorosa, si fa strada. Penso che il significato sia che se si normalizza in ogni piega, è garantito che la normalizzazione non dia pregiudizio alle prestazioni. Il modo in cui è stato scritto sembrava che non ci fosse altro modo per evitare la distorsione, anche se Dikran ha sottolineato nell'ultima riga che ci sono altri modi. Se si esegue la normalizzazione all'interno del CV, non aumenta mai la distorsione, invece di farlo all'esterno, il che potrebbe. La distorsione potrebbe non influenzare molto comunque, come sottolineato nell'altra risposta.
Tom Anderson,

1

Penso che se la normalizzazione coinvolge solo due parametri e hai un campione di buone dimensioni, questo non sarà un problema. Sarei più preoccupato per la trasformazione e il processo di selezione delle variabili. La convalida incrociata di 10 volte sembra essere di gran moda oggi. Nessuno usa bootstrap 632 o 632+ per la stima del tasso di errore del classificatore come suggerito prima da Efron (1983) in JASA e seguito in seguito in un articolo di Efron e Tibshirani con il 632+?


0

Personalmente mi piace il metodo .632. Che è sostanzialmente boostrapping con la sostituzione. Se lo fai e rimuovi i duplicati otterrai 632 voci da un set di input di 1000. Un po 'pulito.


e0
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.