Cosa concludere da questa trama lazo (glmnet)


19

Di seguito è riportato il diagramma di glmnet con alpha predefinito (1, quindi lazo) che utilizza il mtcarsset di dati in R con mpgcome DV e altri come variabili predittive.

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

inserisci qui la descrizione dell'immagine

Cosa possiamo concludere da questo diagramma riguardo alle diverse variabili, in particolare am, cyle wt(linee rosse, nere e blu chiaro)? Come definiremmo l'output in un rapporto da pubblicare?

Ho pensato di seguire:

  1. wtè il predittore più importante di mpg. Sta influenzando negativamente il mpg.

  2. cylè un debole predittore negativo di mpg.

  3. ampuò essere un predittore positivo di mpg.

  4. Altre variabili non sono predittori affidabili di mpg.

Grazie per i tuoi pensieri su questo.

(Nota: cylè la linea nera che non raggiunge 0 se non molto vicino ad essa.)

Modifica: Di seguito è riportato il diagramma (mod, xvar = 'lambda') che mostra l'asse x in ordine inverso rispetto al diagramma sopra:

inserisci qui la descrizione dell'immagine

(PS: se trovi questa domanda interessante / importante, ti preghiamo di votarla;)


Sembra che tu abbia dimenticato una virgola prima di -1in glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy,

Se non viene fornita la virgola, R assume che il numero sia il numero di colonna, quindi funziona.
anche

Bene, non l'ho fatto prima.
Richard Hardy,

2
@RichardHardy stai attento; questo comportamento è diverso per i frame di dati e le matrici. Un frame di dati è una lista, e ciascuna colonna è un elemento di questa lista, quindi my_data_frame[1]restituisce un frame di dati con una colonna, che my_data_frame[[1]]e my_data_frame[, 1]sia un vettore di ritorno che è non "contenuta" da un frame di dati. Matrici, tuttavia, sono in realtà solo vettori piatto con un attributo speciale che permette R per accedere loro come una griglia, così my_matrix[1], my_matrix[1, 1]e my_matrix[[1]]saranno tutti restituisce il primo elemento di my_matrix. my_matrix[, 1] restituisce la prima colonna.
Shadowtalker,

2
Ho appena detto che la funzione plot_glmnet nel pacchetto plotmo offre grafici a coefficienti leggermente migliori perché si occupa della sovrastampa delle etichette e di alcuni altri dettagli. Esempi possono essere trovati nel capitolo 6 nella vignetta plotres .
Stephen Milborrow,

Risposte:


39

λlog(λ)Σio|βio|

A tal fine, ho creato alcuni dati correlati e non correlati per dimostrare:

x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]

sigma <- matrix(c(  1, -.5,   0,
                  -.5,   1, -.5,
                    0, -.5,   1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]

I dati x_uncorrhanno colonne non correlate

> round(cor(x_uncorr), 2)
     [,1]  [,2]  [,3]
[1,] 1.00  0.01  0.00
[2,] 0.01  1.00 -0.01
[3,] 0.00 -0.01  1.00

while x_corrha una correlazione preimpostata tra le colonne

> round(cor(x_corr), 2)
      [,1]  [,2]  [,3]
[1,]  1.00 -0.49  0.00
[2,] -0.49  1.00 -0.51
[3,]  0.00 -0.51  1.00

Ora diamo un'occhiata ai grafici del lazo per entrambi questi casi. Innanzitutto i dati non correlati

gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)

inserisci qui la descrizione dell'immagine

Un paio di caratteristiche spiccano

  • I predittori entrano nel modello nell'ordine della loro grandezza del vero coefficiente di regressione lineare.
  • Σio|βio|Σio|βio|
  • Quando un nuovo predittore entra nel modello, influisce sulla pendenza del percorso del coefficiente di tutti i predittori già presenti nel modello in modo deterministico. Ad esempio, quando il secondo predittore entra nel modello, la pendenza del primo percorso del coefficiente viene tagliata a metà. Quando il terzo predittore entra nel modello, la pendenza del percorso del coefficiente è un terzo del suo valore originale.

Questi sono tutti fatti generali che si applicano alla regressione del lazo con dati non correlati e possono essere tutti dimostrati a mano (buon esercizio!) O trovati in letteratura.

Ora consente di eseguire dati correlati

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

inserisci qui la descrizione dell'immagine

Puoi leggere alcune cose su questa trama confrontandola con il caso non correlato

  • Il primo e il secondo percorso del predittore hanno la stessa struttura del caso non correlato fino a quando il terzo predittore non entra nel modello, anche se sono correlati. Questa è una caratteristica speciale del caso di due predittori, che posso spiegare in un'altra risposta se c'è interesse, mi porterebbe un po 'più lontano dell'attuale discussione.
  • Σ|βio|

Quindi ora diamo un'occhiata alla tua trama dal set di dati delle auto e leggiamo alcune cose interessanti (ho riprodotto la tua trama qui in modo che questa discussione sia più facile da leggere):

Un avvertimento : ho scritto la seguente analisi basata sul presupposto che le curve mostrino i coefficienti standardizzati , in questo esempio non lo fanno. I coefficienti non standardizzati non sono senza dimensioni e non sono comparabili, quindi non è possibile trarne conclusioni in termini di importanza predittiva. Affinché la seguente analisi sia valida, si prega di far finta che la trama sia dei coefficienti standardizzati e di eseguire la propria analisi su percorsi di coefficienti standardizzati.

inserisci qui la descrizione dell'immagine

  • Come dici tu, il wtpredittore sembra molto importante. Entra per primo nel modello e ha una discesa lenta e costante al suo valore finale. Ha alcune correlazioni che lo rendono un giro leggermente accidentato, amin particolare sembra avere un effetto drastico quando entra.
  • amè anche importante. Arriva più tardi ed è correlato con wt, poiché influenza la pendenza wtin modo violento. È anche correlato con carbe qsec, poiché non vediamo il prevedibile ammorbidimento della pendenza quando entrano. Dopo queste quattro variabili sono entrati, però, ci facciamo vedere il bel modello non correlati, in modo che sembra essere correlata con tutti i predittori alla fine.
  • Qualcosa entra all'incirca a 2,25 sull'asse x, ma il suo percorso stesso è impercettibile, puoi rilevarlo solo dal suo effetto sui parametri cyle wt.
  • cylè abbastanza faticoso. Entra in seconda posizione, quindi è importante per i piccoli modelli. Dopo altre variabili, e in particolare con amEnter, non è più così importante e la sua tendenza si inverte, alla fine essendo quasi completamente rimossa. Sembra che l'effetto di cylpossa essere completamente catturato dalle variabili che entrano alla fine del processo. Se sia più appropriato usare cyl, o il gruppo complementare di variabili, dipende in realtà dal compromesso di bias-varianza. Avere il gruppo nel tuo modello finale aumenterebbe in modo significativo la sua varianza, ma potrebbe essere il caso che il pregiudizio inferiore lo compensi!

Questa è una piccola introduzione a come ho imparato a leggere le informazioni su questi grafici. Penso che siano un sacco di divertimento!

Grazie per un'ottima analisi. Per riferire in termini semplici, diresti che wt, am e cil sono i 3 principali predittori di mpg. Inoltre, se si desidera creare un modello per la previsione, quali includere in base a questa figura: wt, am e cil? O qualche altra combinazione. Inoltre, non sembra che tu abbia bisogno della migliore lambda per l'analisi. Non è importante come nella regressione della cresta?

Direi il caso wte amsono ben definiti, sono importanti. cylè molto più sottile, è importante in un modello piccolo, ma per nulla rilevante in un modello grande.

Non sarei in grado di determinare cosa includere solo in base alla figura, a cui deve davvero rispondere il contesto di ciò che si sta facendo. Si potrebbe dire che se si desidera un modello a tre predittori, quindi wt, ame si cyltratta di buone scelte, poiché sono rilevanti nel grande schema delle cose e dovrebbero finire per avere dimensioni di effetto ragionevoli in un modello piccolo. Questo si basa sul presupposto che tu abbia qualche motivo esterno per desiderare un piccolo modello a tre predittori.

È vero, questo tipo di analisi esamina l'intero spettro delle lambda e ti consente di abbattere le relazioni su una serie di complessità del modello. Detto questo, per un modello finale, penso che sintonizzare un lambda ottimale sia molto importante. In assenza di altri vincoli, utilizzerei sicuramente la convalida incrociata per trovare dove si trova questo lambda più predittivo, quindi utilizzare quel lambda per un modello finale e un'analisi finale.

λ

Nella direzione opposta, a volte ci sono vincoli esterni per quanto complesso possa essere un modello (costi di implementazione, sistemi legacy, minimalismo esplicativo, interpretabilità aziendale, patrimonio estetico) e questo tipo di ispezione può davvero aiutarti a capire la forma dei tuoi dati, e i compromessi che stai facendo scegliendo un modello più piccolo che ottimale.


Grazie per un'ottima analisi. Per riferire in termini semplici, diresti che wt, am e cil sono i 3 principali predittori di mpg. Inoltre, se si desidera creare un modello per la previsione, quali includere in base a questa figura: wt, am e cil? O qualche altra combinazione. Inoltre, non sembra che tu abbia bisogno della migliore lambda per l'analisi. Non è importante come nella regressione della cresta?
anche

@rnso Ho aggiunto una risposta alla mia risposta.
Matthew Drury,

Forse il "patrimonio" dovrebbe essere "parsimonia"?
Hatshepsut,

@Matthew Drury, ho poche cose di cui non sono sicuro, sarei grato per il tuo chiarimento, # hai scritto "ad esempio quando entrano i secondi predittori" come posso sapere dalla trama il secondo predittore o il terzo predittore / entra . ## quando posso dire che questo predittore è importante o meno. ### infine, come posso scegliere il modello migliore per questo raccordo. Inoltre, la legenda / etichetta è inclusa automaticamente. (Ho implementato questo esempio in R)
Jeza

5
+6, evidentemente mi è mancato questo quando è uscito. Davvero un bel lavoro.
gung - Ripristina Monica
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.