O LASSO sofre dos mesmos problemas que a regressão gradual?

18

Os métodos de seleção de variáveis ​​algorítmicas passo a passo tendem a selecionar modelos que enviesam mais ou menos todas as estimativas em modelos de regressão ( β s e seus SEs, valores de p , estatísticas F , etc.) e têm a probabilidade de excluir preditores verdadeiros como incluir preditores falsos de acordo com uma literatura de simulação razoavelmente madura.

O LASSO sofre da mesma maneira específica quando usado para selecionar variáveis?

Alexis
fonte
3
Eu acho que sim. Frank Harrell tem alguns posts sobre isso, eu acho, e pode haver material relevante em seu livro "Estratégias de modelagem de regressão".
Richard Hardy
2
@RichardHardy +1 Ficaria encantado se FrankHarrell aparecesse e comentasse ou respondesse. :)
Alexis
5
Eu tenho uma nova palestra que aborda isso. Conclusão: o laço tem uma baixa probabilidade de selecionar as variáveis ​​"corretas". Os slides estão em fharrell.com/talk/stratos19
Frank Harrell
4
Relacionado a "Resultado: o laço tem uma baixa probabilidade de selecionar as variáveis" corretas "": há uma seção sobre o mesmo tópico em Aprendizado Estatístico com Sparsity ( web.stanford.edu/~hastie/StatLearnSparsity_files/… ),11.4.1 Variable-Selection Consistency for the Lasso
Adrian
2
Também relacionado a "Conclusão: o laço tem uma baixa probabilidade de selecionar as variáveis ​​'corretas'": consulte statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf estudos de caso 1 e 2
Adrian

Respostas:

3

A interpretação da probabilidade de expressões freqüentes de probabilidade, valores de p etc., para um modelo LASSO e regressão passo a passo, não está correta.

Essas expressões superestimam a probabilidade. Por exemplo, um intervalo de confiança de 95% para algum parâmetro deve dizer que você tem uma probabilidade de 95% de que o método resultará em um intervalo com a variável de modelo verdadeira dentro desse intervalo.

No entanto, os modelos ajustados não resultam de uma única hipótese típica e, em vez disso, escolhemos (selecionamos dentre muitos possíveis modelos alternativos) quando fazemos regressão passo a passo ou regressão LASSO.


  1. Não faz muito sentido avaliar a correção dos parâmetros do modelo (especialmente quando é provável que o modelo não esteja correto).

    (XTX)1

    X

    Exemplo: o gráfico abaixo, que exibe os resultados de um modelo de brinquedo para algum sinal que é uma soma linear de 10 curvas gaussianas (isso pode, por exemplo, se assemelhar a uma análise em química em que um sinal para um espectro é considerado uma soma linear de vários componentes). O sinal das 10 curvas é equipado com um modelo de 100 componentes (curvas Gaussianas com média diferente) usando LASSO. O sinal é bem estimado (compare as curvas vermelha e preta que estão razoavelmente próximas). Porém, os coeficientes subjacentes reais não são bem estimados e podem estar completamente errados (compare as barras vermelha e preta com pontos que não são iguais). Veja também os últimos 10 coeficientes:

                  91     91     92     93     94     95     96     97     98     99     100
     true model   0      0      0      0      0      0      0      142.8  0      0      0
     fitted       0      0      0      0      0      0      129.7  6.9    0      0      0

    O modelo LASSO seleciona coeficientes muito aproximados, mas da perspectiva dos próprios coeficientes, isso significa um grande erro quando se estima que um coeficiente que não seja zero e zero e se estima que um coeficiente vizinho que seja zero. diferente de zero. Qualquer intervalo de confiança para os coeficientes faria muito pouco sentido.

    Conexão LASSO

    exemplo laço / glmnet

    Montagem passo a passo

    Como comparação, a mesma curva pode ser ajustada com um algoritmo stepwise que leva à imagem abaixo. (com problemas semelhantes aos dos coeficientes, mas não coincidem)

    exemplo nnls

  2. Mesmo quando você considera a precisão da curva (e não os parâmetros, que no ponto anterior fica claro que isso não faz sentido), você precisa lidar com o ajuste excessivo. Ao executar um procedimento de ajuste com o LASSO, você utiliza dados de treinamento (para ajustar os modelos com parâmetros diferentes) e dados de teste / validação (para ajustar / descobrir qual é o melhor parâmetro), mas você também deve usar um terceiro conjunto separado de dados de teste / validação para descobrir o desempenho dos dados.

    Um valor-p ou algo semelhante não funcionará porque você está trabalhando em um modelo ajustado que é uma escolha diferente e diferente (graus de liberdade muito maiores) do método de ajuste linear regular.


sofre dos mesmos problemas que a regressão gradual faz?

R2

Eu pensei que o principal motivo para usar o LASSO no lugar da regressão passo a passo é que o LASSO permite uma seleção de parâmetros menos gananciosa, menos influenciada pela multicolinearidade. (mais diferenças entre o LASSO e o stepwise: superioridade do LASSO em relação à seleção direta / eliminação retroativa em termos de erro de previsão de validação cruzada do modelo )


Código para a imagem de exemplo

# settings
library(glmnet)
n <- 10^2        # number of regressors/vectors
m <- 2         # multiplier for number of datapoints
nel <- 10        # number of elements in the model
set.seed(1)   
sig <- 4
t <- seq(0,n,length.out=m*n)

# vectors
X <- sapply(1:n, FUN <- function(x) dnorm(t,x,sig))

# some random function with nel elements, with Poisson noise added
par <- sample(1:n,nel)
coef <- rep(0,n)
coef[par] <- rnorm(nel,10,5)^2
Y <- rpois(n*m,X %*% coef)

# LASSO cross validation
fit <- cv.glmnet(X,Y, lower.limits=0, intercept=FALSE, 
                 alpha=1, nfolds=5, lambda=exp(seq(-4,4,0.1)))
plot(fit$lambda, fit$cvm,log="xy")
plot(fit)
Yfit <- (X %*% coef(fit)[-1])

# non negative least squares 
# (uses a stepwise algorithm or should be equivalent to stepwise)
fit2<-nnls(X,Y)


# plotting
par(mgp=c(0.3,0.0,0), mar=c(2,4.1,0.2,2.1))
layout(matrix(1:2,2),heights=c(1,0.55))


plot(t,Y,pch=21,col=rgb(0,0,0,0.3),bg=rgb(0,0,0,0.3),cex=0.7,
     xaxt = "n", yaxt = "n", 
     ylab="", xlab = "",bty="n")      
#lines(t,Yfit,col=2,lwd=2)                        # fitted mean
lines(t,X %*% coef,lwd=2)                        # true mean
lines(t,X %*% coef(fit2), col=3,lwd=2)           # 2nd fit

  # add coefficients in the plot
for (i in 1:n) {
  if (coef[i] > 0) {
    lines(c(i,i),c(0,coef[i])*dnorm(0,0,sig))
    points(i,coef[i]*dnorm(0,0,sig), pch=21, col=1,bg="white",cex=1)
  }
  if (coef(fit)[i+1] > 0) {
#    lines(c(i,i),c(0,coef(fit)[i+1])*dnorm(0,0,sig),col=2)
#    points(i,coef(fit)[i+1]*dnorm(0,0,sig), pch=21, col=2,bg="white",cex=1)
  }
  if (coef(fit2)[i+1] > 0) {
    lines(c(i,i),c(0,coef(fit2)[i+1])*dnorm(0,0,sig),col=3)
    points(i,coef(fit2)[i+1]*dnorm(0,0,sig), pch=21, col=3,bg="white",cex=1)
  }

}

#Arrows(85,23,85-6,23+10,-0.2,col=1,cex=0.5,arr.length=0.1)
#Arrows(86.5,33,86.5-6,33+10,-0.2,col=2,cex=0.5,arr.length=0.1)
#text(85-6,23+10,"true coefficient", pos=2, cex=0.7,col=1)
#text(86.5-6,33+10, "fitted coefficient", pos=2, cex=0.7,col=2)

text(0,50, "signal versus position\n true mean (black), fitted with nnls (green)", cex=1,col=1,pos=4, font=2)



plot(-100,-100,pch=21,col=1,bg="white",cex=0.7,type="l",lwd=2,
     xaxt = "n", yaxt = "n", 
     ylab="", xlab = "",
     ylim=c(0,max(coef(fit)))*dnorm(0,0,sig),xlim=c(0,n),bty="n") 
#lines(t,X %*% coef,lwd=2,col=2)      

for (i in 1:n) {
  if (coef[i] > 0) {
    lines(t,X[,i]*coef[i],lty=1)
  }
  if (coef(fit)[i+1] > 0) {
#    lines(t,X[,i]*coef(fit)[i+1],col=2,lty=1)
  }
  if (coef(fit2)[i+1] > 0) {
    lines(t,X[,i]*coef(fit2)[i+1],col=3,lty=1)
  }

}

text(0,33, "illustration of seperate components/curves", cex=1,col=1,pos=4, font=2)
Sextus Empiricus
fonte
+1 Obrigado Martjin Wterings. Você pode ampliar um pouco o gráfico? O que é mostrado nos eixos, que cor representa etc.?
Alexis
Na verdade, o gráfico não é um caso do LASSO. No entanto, é um exemplo de como um modelo pode ser uma soma de vários componentes, digamos, curvas Gaussianas (onde as curvas com uma média ligeiramente diferente estão muito correlacionadas) e uma mudança na média desses componentes significa uma grande mudança para o coeficiente mas não tanto pela curva.
Sextus Empiricus
1
As barras são os valores dos coeficientes para o modelo verdadeiro e ajustado. Esta é a imagem para a qual lembro que esse princípio ocorreu. Vou fazer um exemplo, que pode mostrá-lo com mais clareza (suspeito que o LASSO, sendo menos ganancioso, possa ter um desempenho um pouco melhor na representação dos verdadeiros coeficientes).
Sextus Empiricus
0

Eu tenho uma nova palestra que aborda isso. Conclusão: o laço tem uma baixa probabilidade de selecionar as variáveis ​​"corretas". Os slides estão em http://fharrell.com/talk/stratos19

- Frank Harrell

Relacionado a "Conclusão: o laço tem uma baixa probabilidade de selecionar as variáveis" corretas "": há uma seção sobre o mesmo tópico no Statistical Learning with Sparsity ( https://web.stanford.edu/~hastie/StatLearnSparsity_files/SLS_corrected_1. 4.16.pdf ), 11.4.1 Variable-Selection Consistency for the Lasso

- Adrian

Também relacionado a "Conclusão: o laço tem uma baixa probabilidade de selecionar as variáveis ​​'corretas'": consulte https://statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf estudos de caso 1 e 2

- Adrian

mkt - Restabelecer Monica
fonte
1
Copiei esses comentários como uma resposta do wiki da comunidade porque são, mais ou menos, respostas a esta pergunta. Temos uma lacuna dramática entre respostas e perguntas. Pelo menos parte do problema é que algumas perguntas são respondidas nos comentários: se os comentários que responderam à pergunta fossem respostas, teríamos menos perguntas sem resposta.
mkt - Restabelece Monica
1
Esses são comentários e, mesmo em conjunto, não fornecem uma resposta pelos padrões do CV (por exemplo, links não são respostas). Além disso: eu discordo veementemente de transformar uma pergunta perfeitamente válida em um wiki da comunidade devido à sua própria insatisfação com a velocidade com que as perguntas são respondidas.
Alexis
1
Além disso: fui instruído sobre wiki da comunidade e respostas do wiki da comunidade e retiro minha discordância por lá (embora ainda não ache que seja uma resposta :).
Alexis
1
@ Alexis Fair suficiente - eu pensei que era uma área cinzenta, mas poderia ter julgado mal isso.
mkt - Restabelece Monica
1
Estamos todos aprendendo. :)
Alexis