λ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_uncorr
hanno 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_corr
ha 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)
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)
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.
- Come dici tu, il
wt
predittore 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, am
in particolare sembra avere un effetto drastico quando entra.
am
è anche importante. Arriva più tardi ed è correlato con wt
, poiché influenza la pendenza wt
in modo violento. È anche correlato con carb
e 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
cyl
e wt
.
cyl
è abbastanza faticoso. Entra in seconda posizione, quindi è importante per i piccoli modelli. Dopo altre variabili, e in particolare con am
Enter, non è più così importante e la sua tendenza si inverte, alla fine essendo quasi completamente rimossa. Sembra che l'effetto di cyl
possa 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 wt
e am
sono 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
, am
e si cyl
tratta 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.
-1
inglmnet(as.matrix(mtcars[-1]), mtcars[,1])
.