Come costruire il modello finale e ottimizzare la soglia di probabilità dopo la convalida incrociata nidificata?


17

In primo luogo, mi scuso per aver pubblicato una domanda che è già stata discussa a lungo qui , qui , qui , qui , quie per il riscaldamento di un vecchio argomento. So che @DikranMarsupial ha scritto a lungo su questo argomento in post e articoli di giornale, ma sono ancora confuso, e a giudicare dal numero di post simili qui, è ancora qualcosa che gli altri fanno fatica a cogliere. Dovrei anche affermare che ho ricevuto contraddizioni su questo argomento che ha aggiunto alla mia confusione. Dovresti anche sapere che in origine sono un fisico e non uno statistico, quindi la mia esperienza nel dominio qui è piuttosto limitata. Sto scrivendo un giornale in cui desidero utilizzare un CV nidificato per stimare le prestazioni che posso aspettarmi dal mio modello finale. Nel mio dominio, questo è il primo. (Abbiamo quasi mai usare qualsiasiforma di CV solido nel mio campo, ma allegramente pompare documenti con risultati di studi usando reti neurali e alberi decisionali potenziati!) Pertanto, è molto importante che io abbia una comprensione molto approfondita e chiara in modo da non rovinare e propagare una procedura errata per la mia comunità che potrebbe anni da disimparare! Grazie! Avanti con la domanda ...

Come si crea il modello finale dopo la convalida incrociata nidificata?

Sto allenando un semplice modello glmnet con regolarizzazione L1 e L2. È veloce, semplice e interpretabile. Eseguo trasformazioni di centraggio delle funzionalità, ridimensionamento e Box-Cox in modo che le distribuzioni delle caratteristiche siano centrate sulla media, standardizzate e in qualche modo simili a gaussiane. Eseguo questo passaggio nell'ambito della convalida incrociata, per evitare la perdita di informazioni. Solo perché il mio hardware è incredibilmente lento e non ho accesso a più muscoli della CPU, eseguo anche una rapida selezione delle funzioni basate su filtri all'interno del CV dopo la preelaborazione delle funzioni. Sto usando la ricerca casuale della griglia per selezionare gli iperparametri alpha e lambda. Capisco che non dovreiCiclo CV per ottenere questo preventivo. Comprendo che il loop CV interno viene utilizzato per la selezione del modello (in questo caso, gli iperparametri ottimali) e che il loop esterno viene utilizzato per la valutazione del modello , vale a dire, il CV interno ed esterno hanno due scopi diversi che spesso sono erroneamente confusi. (Come sto andando finora?)

Ora, i collegamenti che ho pubblicato suggeriscono che "il modo di pensare alla validazione incrociata è quello di stimare le prestazioni ottenute usando un metodo per costruire un modello, piuttosto che per stimare le prestazioni di un modello". Detto questo, come devo interpretare i risultati della procedura CV nidificata?

Il consiglio che ho letto sembra indicare quanto segue --- per favore correggimi se questo è sbagliato: il CV interno fa parte del meccanismo che mi permette di selezionare gli iperparametri alfa e lambda ottimali del mio modello glmnet. Il CV esterno indica la stima che posso aspettarmi di ottenere dal modello finale se applico la procedura esattamente come utilizzata nel CV interno, compresa la regolazione dell'iperparametro e l' utilizzo dell'intero set di dati per costruire il modello finale. Cioè, l'ottimizzazione dell'iperparametro fa parte del "metodo per costruire il modello". È corretto o no? Perché questo è ciò che mi confonde. Altrove ho visto che la procedura per la creazione del modello finale da distribuire prevede l'addestramento sull'intero set di dati utilizzando i valori fissidegli iperparametri che sono stati scelti usando CV. Qui, il "metodo per costruire il modello" non include l'ottimizzazione. Allora, che cos'è? Ad un certo punto vengono scelti e riparati gli iperparametri ottimali per la costruzione del modello finale! Dove? Come? Se il mio ciclo interno è CV 5 volte, e il mio ciclo esterno è CV 5 volte, e seleziono, diciamo, 100 punti per il test come parte della ricerca casuale della griglia nel CV interno, quante volte in realtà alleno il glmnet modello? (100 * 5 * 5) + 1 per la build finale o ci sono altri passaggi di cui non sono a conoscenza?

Fondamentalmente, ho bisogno di una descrizione molto chiara di come interpretare la stima delle prestazioni dal CV nidificato e come costruire il modello finale.

Vorrei anche conoscere la procedura appropriata per selezionare la soglia di probabilità per convertire i punteggi di probabilità dal mio modello glmnet finale in etichette di classe (binarie) --- è necessario un altro ciclo di CV?

Risposte:


8

Convalida incrociata nidificata spiegata senza annidamento

Ecco come vedo la validazione incrociata (nidificata) e la costruzione del modello. Nota che sono un chimico e come te dal lato dell'applicazione al processo di costruzione del modello (vedi sotto). Il mio punto principale qui è dal mio punto di vista che non ho bisogno di una varietà nidificata dedicata di convalida incrociata. Ho bisogno di un metodo di validazione (ad es. Validazione incrociata) e una funzione di training modello:

model = f (training data)

"mio" funzione di formazione modello f non ha bisogno di iperparametri perché fa internamente tutto sintonizzazione iperparametro (ad esempio il alpha, lambdae threshold).

In altre parole, la mia funzione di allenamento può contenere un numero qualsiasi di convalide incrociate interne (o out-of-bag o qualsiasi stima delle prestazioni ritenga utile). Si noti tuttavia che la distinzione tra i parametri e iperparametri è tipicamente che i iperparametri devono essere sintonizzato data set / applicazione attuale che i parametri possono essere montati indipendentemente da quali dati che è. Quindi dal punto di vista dello sviluppatore di un nuovo algoritmo di classificazione, ha senso fornire solo la funzione di adattamento "nuda" ( g (training data, hyperparameters)) che si adatta ai parametri se dati e iperparametri.

Il punto di avere la funzione di addestramento "esterno" fè che dopo aver eseguito la corsa di convalida incrociata, ti dà un modo semplice per allenarti "sull'intero set di dati": basta usare f (whole data set)invece la chiamata f (cv split training data)per i modelli surrogati di convalida incrociata.

Pertanto, nel tuo esempio, avrai 5 + 1 chiamate a f, e ciascuna delle chiamate a favrà ad esempio 100 * 5 chiamate a g.


soglia di probabilità

Mentre potresti farlo con l'ennesima validazione incrociata, questo non è necessario: è solo un altro iperparametro che il tuo modello pronto per l'uso ha e può essere stimato all'interno f.

Ciò di cui hai bisogno per risolverlo è un'euristica che ti consente di calcolare tale soglia. Esiste un'ampia varietà di euristiche (dal ROC e che specifica quanto sia importante evitare falsi positivi rispetto ai falsi negativi rispetto a sensibilità o specificità accettabili minime o PPV o NPV per consentire due soglie e quindi un livello "incerto" (NA) e così via ) che si adattano a situazioni diverse: una buona euristica è in genere molto specifica per l'applicazione.

Ma per la domanda qui, puoi farlo all'interno fe ad esempio usando le previsioni ottenute durante la validazione incrociata interna per calcolare il ROC e quindi trovare il tuo punto di lavoro / soglia di conseguenza.


Commenti specifici a parti della domanda

Comprendo che non dovrei riportare le prestazioni dal CV utilizzato per scegliere gli iperparametri ottimali come una stima delle prestazioni attese del mio modello finale (che sarebbe eccessivamente ottimista) ma dovrei invece includere un ciclo CV esterno per ottenere questa stima .

Sì. (Sebbene la stima interna contenga informazioni in relazione alla stima esterna: se è molto più ottimistica della stima esterna, in genere si sta adattando in modo eccessivo.)

Comprendo che il loop CV interno viene utilizzato per la selezione del modello

Qualsiasi tipo di ottimizzazione dei modelli basata sui dati, in realtà -> include l'ottimizzazione della soglia di soglia.

(in questo caso, gli iperparametri ottimali) e che l'anello esterno viene utilizzato per la valutazione del modello, vale a dire, il CV interno ed esterno hanno due scopi diversi che spesso si confondono erroneamente.

Sì.

Cioè, l'ottimizzazione dell'iperparametro fa parte del "metodo per costruire il modello".

Preferisco vederlo anche in questo modo: sono un chimico e come guardi dal lato dell'applicazione: per me un modello addestrato / montato non è completo senza gli iperparametri, o più precisamente, un modello è qualcosa che posso usare direttamente per ottenere previsioni. Tuttavia, come notate, altre persone hanno una visione diversa (senza messa a punto dell'iperparametro). Nella mia esperienza, questo è spesso il caso delle persone che sviluppano nuovi modelli: la messa a punto dell'iperparametro è quindi un "problema risolto" e non considerato. (nota a margine: il loro punto di vista su cosa può fare la validazione incrociata in termini di validazione è leggermente diverso da quello che può fare la validazione incrociata dal lato dell'applicazione).

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.