Lazo vs. Lazo adattivo


12

LASSO e LASSO adattivo sono due cose diverse, giusto? (Per me le penalità sembrano diverse, ma sto solo controllando se mi manca qualcosa.)

Quando parli generalmente di rete elastica, è il caso speciale LASSO o LASSO adattivo?

Quale fa il pacchetto glmnet, a condizione che tu scelga alpha = 1?

LASSO adattivo funziona su condizioni più miti, giusto? Entrambi hanno la proprietà Oracle in dati adeguati, giusto?

Risposte:


15

Brevi risposte alle tue domande:

  • Il lazo e il lazo adattivo sono diversi. (Controlla Zou (2006) per vedere come il lazo adattivo differisce dal lazo standard.)
  • Il lazo è un caso speciale di rete elastica. (Vedi Zou & Hastie (2005) .) Il
    lazo adattivo non è un caso speciale di rete elastica.
    La rete elastica non è un caso speciale di lazo o lazo adattivo.
  • La funzione glmnetnel pacchetto "glmnet" in R esegue lazo (non lazo adattivo) per alpha=1.
  • Il lazo funziona in condizioni più miti rispetto al lazo adattivo? Non posso rispondere a questo (dovrei controllare Zou (2006) per approfondimenti).
  • Solo il lazo adattivo (ma non il lazo o la rete elastica) ha la proprietà oracolo. (Vedi Zou (2006) .)

Riferimenti:


12

Le soluzioni LASSO sono soluzioni che riducono al minimo

Q(β|X,y)=12n||yXβ||2+λj|βj|

il lazo adattivo aggiunge semplicemente pesi a questo per cercare di contrastare il fatto che le stime di LASSO siano distorte.

Qa(β|X,y,w)=12n||yXβ||2+λjwj|βj|

Spesso vedrai , dove sono alcune stime iniziali di (forse dal solo uso di LASSO o dall'uso dei minimi quadrati, ecc.). A volte il lazo adattivo viene adattato usando un "approccio pathwise" in cui il peso può cambiare con˜ β j β λwj=1/β~jβ~jβλ

penalità glmnet . fattore glmnet

wj(λ)=w(β~j(λ))
. Nel pacchetto i pesi possono essere specificati con l' argomento . Non sono sicuro se è possibile specificare "l'approccio pathwise" in .glmnetpenalty.factorglmnet

Hai dimenticato di assumere valori assoluti in termini di penalità.
Richard Hardy,

Piccola aggiunta: il denominatore dei pesi dovrebbe essere il , è spesso impostato uguale a 1, ma potrebbe anche essere stimato usando la validazione incrociata. Inoltre, è valido solo usare la ottenuta da uno stimatore coerente root-n (ma hai ragione, puoi usare LASSO e LS). γ β|β|γγβ
Marcel10

Quindi sostanzialmente, glmnet esegue LASSO o rete elastica per impostazione predefinita, ma puoi passare a LASSO adattivo (o EN) specificando i pesi appropriati? In questo caso, grazie mille!
Convalida del

@MrValidation, nota che gli autori di nuovi metodi come il lazo adattivo possono avere un codice per il metodo sui loro siti Web (a volte danno solo un riferimento a un pacchetto R che loro stessi hanno scritto).
Richard Hardy,

1
Penso che l'argomento pesi in glmnet si riferisca ai pesi per le osservazioni e non ai pesi per le penalità
jmb

3

LASSO adattivo viene utilizzato per una selezione delle variabili coerente. I problemi che incontriamo quando si utilizza LASSO per la selezione delle variabili sono:

  • Il parametro di restringimento deve essere maggiore per la selezione rispetto alla previsione
  • I parametri diversi da zero saranno troppo piccoli in modo che il bias sia troppo grande
  • Piccoli parametri diversi da zero non possono essere rilevati in modo coerente
  • Alte correlazioni tra predittori portano a scarse prestazioni di selezione

Pertanto, il LASSO è coerente solo per la selezione delle variabili in alcune condizioni relative al parametro di restringimento, ai parametri (condizione beta-min) e alle correlazioni (condizione non rappresentabile). Vedi le pagine 101-106 della tesi di laurea magistrale per una spiegazione dettagliata.

LASSO include spesso troppe variabili quando si seleziona il parametro di ottimizzazione per la previsione, ma il modello vero è molto probabilmente un sottoinsieme di queste variabili. Ciò suggerisce l'utilizzo di uno stadio secondario di stima come il LASSO adattivo che controlla la distorsione della stima LASSO utilizzando il parametro di ottimizzazione predittivo-ottimale. Ciò porta a una selezione coerente (o proprietà dell'oracolo) senza le condizioni sopra menzionate.

Puoi usare glmnet per LASSO adattivo. Innanzitutto è necessario una stima iniziale, ovvero minimi quadrati, cresta o persino stime LASSO, per calcolare i pesi. Quindi è possibile implementare LASSO adattivo ridimensionando la matrice X. Ecco un esempio usando le stime iniziali dei minimi quadrati sui dati di allenamento:

# get data
y <- train[, 11]
x <- train[, -11]
x <- as.matrix(x)
n <- nrow(x)

# standardize data
ymean <- mean(y)
y <- y-mean(y)  
xmean <- colMeans(x)
xnorm <- sqrt(n-1)*apply(x,2,sd)
x <- scale(x, center = xmean, scale = xnorm)

# fit ols 
lm.fit <- lm(y ~ x)
beta.init <- coef(lm.fit)[-1] # exclude 0 intercept

# calculate weights
w  <- abs(beta.init)  
x2 <- scale(x, center=FALSE, scale=1/w)  

# fit adaptive lasso
require(glmnet)
lasso.fit <- cv.glmnet(x2, y, family = "gaussian", alpha = 1, standardize = FALSE, nfolds = 10)
beta <- predict(lasso.fit, x2, type="coefficients", s="lambda.min")[-1]

# calculate estimates
beta <- beta * w / xnorm # back to original scale
beta <- matrix(beta, nrow=1)
xmean <- matrix(xmean, nrow=10)
b0 <- apply(beta, 1, function(a) ymean - a %*% xmean) # intercept
coef <- cbind(b0, beta)
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.