C'è troppo adattamento in questo approccio modellng


11

Recentemente mi è stato detto che il processo che ho seguito (componente di una tesi di laurea) poteva essere visto come un adattamento eccessivo. Sto cercando di capire meglio questo e vedere se gli altri sono d'accordo.

L'obiettivo di questa parte del documento è quello di

  • Confrontare le prestazioni degli alberi di regressione potenziati con gradiente rispetto alle foreste casuali in un set di dati.

  • Guarda le prestazioni del modello finale scelto (GBM o RF).

Vengono utilizzati i pacchetti gbme randomForestin R, insieme a
caret.

Il processo seguito è stato il seguente:

  • Preelaborazione preliminare dei dati (ad esempio inserendo i valori mancanti dei predittori nominali con una categoria distinta chiamata "Mancante"). La variabile target non è stata esaminata in relazione a nessuna pre-elaborazione (che era molto minima).
  • Creare una griglia di valori per i meta-parametri di ciascun algoritmo (ad es. Numero di iterazioni per GBM).
  • Crea 25 divisioni casuali del set di dati (65% di allenamento e 35% di test).

Ripeti 25 volte quanto segue per GBM (ogni volta che utilizzi una delle divisioni del treno / test casuali. Ogni volta che l'addestramento e il set di test sono "correnti" ovviamente cambia - questo è ripetuto convalida incrociata di gruppo di partenza):

  • Utilizzare la convalida incrociata 5 volte per trovare le impostazioni dei parametri "ottimali" dell'algoritmo nella ricerca della griglia. Nulla di precedenti esecuzioni non è stato utilizzato affatto nella corsa corrente.
  • Una volta determinato, adattare un modello all'intero set di allenamento "attuale" e prevedere il set di test "attuale". Metti da parte la misura delle prestazioni di questa corsa.

Una volta ottenute 25 misure di prestazione (in realtà una misura specifica di dominio, ma considerandola accuratezza) in questo modo, segui lo stesso identico processo, usando gli stessi identici campioni indipendenti di treno e prova, per RF (stesso processo, solo con differenti ricerca della griglia ovviamente).

Ora, ho 25 misurazioni delle prestazioni dagli allora "attuali" set di test per GBM e RF. Le metto a confronto usando un Wilcoxon Signed Rank Test e anche un test di permutazione. Ho trovato GBM superiore. Ho anche affermato che la distribuzione della misura delle prestazioni da queste 25 corse per GBM è la prestazione prevista del classificatore GBM finale.

Quello che non ho fatto è stato estrarre un set di test casuali sin dall'inizio e metterlo da parte per essere confrontato con il modello GBM finale creato da tutti i dati di training. Io sostengo che quello che ho fatto è stato davvero molto meglio quando ho ripetuto i dati suddivisi / ottimizzato il modello / test sul processo di controllo 25 volte rispetto a una sola volta.

C'è un eccesso di adattamento qui? Poiché le 25 serie sono state utilizzate per selezionare GBM rispetto a RF, ciò significa che le misure di prestazione acquisite dal processo non possono essere utilizzate come stima delle prestazioni per il modello completo?

MODIFICA In risposta al commento di Wayne, ecco cosa è stato fatto durante ciascuna delle 25 corse:

  1. I dati campionati per il set di addestramento (i = 1, .., 25) sono stati suddivisi in 5 gruppi di dimensioni uguali. Un modello è stato adattato utilizzando 4 dei 5 gruppi, impostando i parametri GBM (es. Numero di iterazioni) uguali ai valori nella griglia jth (j = 1, .., 18).
  2. Le prestazioni sul 5 ° gruppo sono state calcolate usando questo modello.
  3. I passaggi 1 e 2 sono stati ripetuti 4 volte in più (CV vecchio normale k-fold con k = 5). Le prestazioni sono state mediate dalle 5 sotto-serie e questo ha compensato le prestazioni previste di GBM con quel determinato set di valori dei parametri.
  4. I passaggi 1-3 sono stati ripetuti per le altre 17 "file" nella griglia.

Una volta completati, sono stati determinati i migliori valori dei parametri dell'esercizio precedente e un GBM è stato adattato utilizzando questi valori dei parametri e l'intero set di allenamento. Le sue prestazioni sono state stimate sul set di test.

Una volta che l'intero processo è stato eseguito 25 volte, c'erano 25 misure di prestazione disponibili per GBM. Quindi sono stati raccolti per RF nello stesso identico modo.

Dopo aver confrontato e scelto GBM, ho esaminato quelle 25 misure di prestazione e ho preso la media e Stnd Error per determinare un intervallo di confidenza per un modello GBM su questi dati.


Mi piacerebbe vedere maggiori dettagli nel tuo primo punto elenco per la sezione "Ripeti 25 volte il seguente ...". Quali dati sono 5 volte e come vengono utilizzati i dati per ogni set di meta-parametri?
Wayne,

@Wayne, per favore, vedi la mia modifica.
B_Miner

Risposte:


5

Immagina invece di selezionare solo GBM vs RF, invece stavi scegliendo tra 100 diversi classificatori GBM (supponendo che l'allenamento GBM utilizzi un qualche tipo di casualità e assegni loro semi casuali da 1 a 100). Quindi sceglieresti uno di quei 100 GBM come il miglior GBM. Ma è quasi certamente il caso che uno dei 100 modelli che hai scelto sia stato fortunato a battere i suoi 99 fratelli, e quindi la tua stima delle prestazioni sarà ottimista.

Hai usato solo due studenti e non sono stati addestrati da un algoritmo identico, quindi il tuo singolo GBM probabilmente non aveva molta pressione di selezione su di esso (specialmente se superava drasticamente la RF), ma la tua stima dell'errore sarà ancora un po 'ottimista.


Se una volta che GBM è stato selezionato come modello finale (e fingo di aver tirato fuori un singolo set di test all'inizio), prendo tutti i dati di addestramento e inserisco un GBM con esso (di nuovo usando CV per scegliere i parametri dell'algoritmo) poi segnerò questo set di test. Penseresti davvero che la misura dell'errore su quel set di test fosse migliore di quella che avevo dai 25 ri-campioni? Questa è la parte con cui combatto. Non è possibile utilizzare gli stessi dati per la selezione del modello (GBM su RF o GBM rispetto a 100 altre scelte) E utilizzare la misura dell'errore che ne è derivata?
B_Miner

Ovviamente mi viene l'idea di non utilizzare i dati di allenamento per valutare le prestazioni, ma questo caso mi è sembrato diverso e valido ....
B_Miner

@B_Miner Penso che sia un'infrazione molto piccola, ma non faccio parte del tuo comitato di tesi: P
rrenaud,

Poiché l'infrazione esiste, la attribuiresti a "utilizzare gli stessi dati per la selezione del modello (GBM su RF o GBM rispetto a 100 altre scelte) E utilizzare la misura di errore che ne è derivata?"
B_Miner

3

Sembra che tu abbia provato a mescolare due tecniche, ognuna delle quali è legittima, ma il modo in cui lo hai fatto sembra che finirai con la perdita di dati tra i casi.

Al livello inferiore, sembra che tu stia usando correttamente il CV. Il che suggerirebbe che anche il livello più alto dovrebbe essere un CV, risultante in un CV nidificato, ma il tuo livello più alto non è CV.

Al livello più alto, sembra che tu abbia voluto fare una convalida del bootstrap, nel qual caso un doppio bootstrap funzionerebbe per i livelli superiore e inferiore, ma il tuo livello superiore non è un bootstrap corretto.

Potresti voler leggere questo articolo di stackexchange. e gli articoli a cui si collega, e forse ristrutturare il tuo livello più alto per essere un CV. Inoltre, nota che nientemeno che Frank Harrell pubblica in quella discussione e suggerisce che il CV venga ripetuto un sacco di volte. (Sono rimasto scioccato, pensando che una ripetizione dovrebbe farlo.)


Cosa intendi per livello superiore - le 25 iterazioni di congedo ripetuto si estinguono?
B_Miner

Ho letto i commenti del Dr. Harrell. Penso che ci sia una disconnessione tra alcuni di questi consigli e il data mining (dati di grandi dimensioni). 25 iterazioni che ho completato hanno richiesto 4 giorni e che sono state sostanzialmente sottoposte a campionamento dei casi negativi.
B_Miner
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.