Scelta dell'alfa ottimale nella regressione logistica della rete elastica


22

Sto eseguendo una regressione logistica a rete elastica su un set di dati sanitari utilizzando il glmnetpacchetto in R selezionando i valori lambda su una griglia di α da 0 a 1. Il mio codice abbreviato è di seguito:

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

che genera l'errore con convalida incrociata media per ogni valore di alfa da 0.0 a 1.0 con un incremento di 0.1 :

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

Sulla base di ciò che ho letto in letteratura, la scelta ottimale di α è dove l'errore cv è minimizzato. Ma ci sono molte variazioni negli errori nell'intervallo di alfa. Sto vedendo diversi minimi locali, con un errore minimo globale di 0.1942612per alpha=0.8.

È sicuro andare con alpha=0.8? Oppure, data la variazione, dovrei rieseguire cv.glmnetcon più pieghe di convalida incrociata (ad es. 20 anziché 10 ) o forse un numero maggiore di incrementi α tra alpha=0.0e 1.0per ottenere un quadro chiaro del percorso di errore cv?


5
Dovresti dare un'occhiata al caretpacchetto che può fare ripetutamente cv e tune sia per alpha che per lambda (supporta l'elaborazione multicore!). Dalla memoria, penso che la glmnetdocumentazione consigli contro la messa a punto per l'alfa come fai qui. Si consiglia di mantenere fissi i pieghevoli se l'utente sta sintonizzando l'alfa oltre alla messa a punto per lambda fornita da cv.glmnet.

1
Ah, ho
RobertF

2
non dimenticare di riparare il foldid quando stai provando diversiα
user4581

1
Per la riproducibilità, non correre mai cv.glmnet()senza passare foldidscreato da un seme casuale noto.
smci,

1
@amoeba dai un'occhiata alla mia risposta - input sui compromessi tra l1 e l2 sono i benvenuti!
Xavier Bourret Sicotte,

Risposte:


7

Chiarire cosa si intende per α e parametri della rete elastica

Terminologia e parametri diversi sono usati da pacchetti diversi, ma il significato è generalmente lo stesso:

Il pacchetto R Glmnet utilizza la seguente definizione

minβ0,β1Ni=1Nwil(yi,β0+βTxi)+λ[(1α)||β||22/2+α||β||1]

Sklearn usa

minw12Ni=1N||yXw||22+α×l1ratio||w||1+0.5×α×(1l1ratio)×||w||22

Ci sono parametrizzazioni alternative utilizzando a e b come pure ..

Per evitare confusione ho intenzione di chiamare

  • λ il parametro dell'intensità della penalità
  • L 1 :L1ratio rapporto trapenalitàL1 eL2 , compreso tra 0 (cresta) e 1 (lazo)

Visualizzazione dell'impatto dei parametri

Consideriamo un insieme di dati simulati dove y è costituito da una curva sinusoidale rumoroso e X è una caratteristica bidimensionale rappresentati da X1=x e X2=x2 . A causa della correlazione tra X1 e X2 la funzione di costo è una valle stretta.

La grafica seguente illustra il percorso della soluzione della regressione elasticnet con due diversi parametri del rapporto L1 , in funzione di λ il parametro di resistenza.

  • Per entrambe le simulazioni: quando λ=0 la soluzione è la soluzione OLS in basso a destra, con la relativa funzione di costo a forma di valle.
  • All'aumentare di λ , inizia la regolarizzazione e la soluzione tende a (0,0)
  • La differenza principale tra le due simulazioni è il parametro del rapporto L1 .
  • LHS : per un rapporto L1 ridotto, la funzione di costo regolarizzato assomiglia molto alla regressione di Ridge con contorni arrotondati.
  • RHS : per un grande rapporto L1 , la funzione di costo assomiglia molto alla regressione del Lazo con i tipici contorni a forma di diamante.
  • Per il rapporto L1 intermedio (non mostrato) la funzione di costo è un mix dei due

inserisci qui la descrizione dell'immagine


Comprensione dell'effetto dei parametri

ElasticNet è stata introdotta per contrastare alcune delle limitazioni del Lazo che sono:

  • Se ci sono più variabili p rispetto ai punti dati n , p>n , il lazo seleziona al massimo n variabili.
  • Lazo non riesce a eseguire la selezione raggruppata, soprattutto in presenza di variabili correlate. Tenderà a selezionare una variabile da un gruppo e ignorare le altre

Combinando un L1 e quadratica L2 penalità si ottengono i vantaggi di entrambi:

  • L1 genera un modello rado
  • L2 rimuove la limitazione del numero di variabili selezionate, incoraggia il raggruppamento e stabilizza ilpercorso di regolarizzazione diL1 .

Puoi vederlo visivamente sul diagramma sopra, le singolarità ai vertici incoraggiano la scarsità , mentre i bordi convessi rigidi incoraggiano il raggruppamento .

Ecco una visualizzazione tratta da Hastie (l'inventore di ElasticNet)

inserisci qui la descrizione dell'immagine

Ulteriori letture


2

Vorrei aggiungere alcune osservazioni molto pratiche nonostante l'età della domanda. Dato che non sono un utente R, non posso lasciare parlare il codice, ma dovrebbe essere comunque comprensibile.

  1. αkf1,...,fkf(x)=1kifi(x)f(x)=i=1kfi(x)k

  2. Un vantaggio del ricampionamento è che puoi ispezionare la sequenza dei punteggi dei test, che qui sono i punteggi del cv. Dovresti sempre non solo guardare la media ma anche la deviazione standard (non è distribuita normalmente, ma ti comporti come se). Di solito si visualizza questo dire come 65,5% (± 2,57%) per la precisione. In questo modo è possibile stabilire se le "piccole deviazioni" sono più probabili per caso o strutturalmente. Meglio sarebbe anche ispezionare le sequenze complete . Se c'è sempre una piega per qualche motivo, potresti voler ripensare il modo in cui stai facendo la tua divisione (suggerisce anche un disegno sperimentale difettoso: hai mescolato?). In scikit-impara i GridSearchCVdettagli dei negozi sulle scadenze del fold in cv_results_( vedi qui ).

  3. αL1αL2

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.