O que concluir deste gráfico de laço (glmnet)

19

A seguir, é apresentado o gráfico do glmnet com alfa padrão (1, portanto, laço) usando o mtcarsconjunto de dados em R com mpgo DV e outros como variáveis ​​preditoras.

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

insira a descrição da imagem aqui

O que podemos concluir desse gráfico em relação a diferentes variáveis, especialmente am, cyle wt(linhas vermelhas, pretas e azuis claras)? Como podemos descrever a saída de um relatório a ser publicado?

Eu pensei em seguir:

  1. wté o preditor mais importante de mpg. Está afetando negativamente o mpg.

  2. cylé um fraco preditor negativo de mpg.

  3. ampode ser um preditor positivo de mpg.

  4. Outras variáveis ​​não são preditores robustos de mpg.

Obrigado por seus pensamentos sobre este assunto.

(Nota: cylé a linha preta que não atinge 0 até muito perto dela.)

Edit: A seguir é plot (mod, xvar = 'lambda') que mostra o eixo x na ordem inversa do plot acima:

insira a descrição da imagem aqui

(PS: Se você acha esta questão interessante / importante, faça um voto positivo;)

rnso
fonte
Parece que você esqueceu uma vírgula antes -1em glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy
Se a vírgula não for fornecida, R assume que o número é o número da coluna, portanto, ele funciona.
Rnso 31/05
Bom, eu não fiz isso agora antes.
Richard Hardy
2
@RichardHardy tenha cuidado; esse comportamento é diferente para quadros e matrizes de dados. Um quadro de dados é uma lista, e cada coluna é um elemento da referida lista, então my_data_frame[1]devolve uma trama de dados com uma coluna, enquanto que my_data_frame[[1]]e my_data_frame[, 1]tanto um vector de retorno que é não "contido" por uma trama de dados. Matrizes, no entanto, são na verdade vetores apenas plana com um atributo especial que permite que R Para acessá-los como uma grade, por isso my_matrix[1], my_matrix[1, 1]e my_matrix[[1]]tudo vai retornar o primeiro elemento de my_matrix. my_matrix[, 1] retorna a primeira coluna.
Shadowtalker
2
Eu apenas mencionei que a função plot_glmnet no pacote plotmo fornece plotagens de coeficiente um pouco melhores porque cuida da plotagem de etiquetas e de alguns outros detalhes. Exemplos podem ser encontrados no capítulo 6 na vinheta de plotters .
Stephen Milborrow

Respostas:

39

Acho que ao tentar interpretar esses gráficos de coeficientes por , ou, ajuda muito a saber como elas ficam em alguns casos simples. Em particular, como eles ficam quando a matriz de design do modelo não está correlacionada, versus quando há correlação no design.log ( λ ) i | β i |λregistro(λ)Eu|βEu|

Para esse fim, criei alguns dados correlacionados e não correlacionados para demonstrar:

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]

Os dados x_uncorrpossuem colunas não correlacionadas

> 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

enquanto x_corrtem uma correlação predefinida entre as colunas

> 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

Agora vamos examinar os gráficos de laço para ambos os casos. Primeiro os dados não correlacionados

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

insira a descrição da imagem aqui

Alguns recursos se destacam

  • Os preditores entram no modelo na ordem de magnitude do verdadeiro coeficiente de regressão linear.
  • Eu|βEu|Eu|βEu|
  • Quando um novo preditor entra no modelo, ele afeta a inclinação do caminho do coeficiente de todos os preditores que já estão no modelo de maneira determinística. Por exemplo, quando o segundo preditor entra no modelo, a inclinação do primeiro caminho do coeficiente é cortada pela metade. Quando o terceiro preditor entra no modelo, a inclinação do caminho do coeficiente é um terço do seu valor original.

Todos esses são fatos gerais que se aplicam à regressão do laço com dados não correlacionados e todos podem ser comprovados à mão (bom exercício!) Ou encontrados na literatura.

Agora vamos fazer dados correlatos

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

insira a descrição da imagem aqui

Você pode ler algumas coisas deste gráfico comparando-o com o caso não relacionado

  • O primeiro e o segundo caminhos do preditor têm a mesma estrutura do caso não correlacionado até o terceiro preditor entrar no modelo, mesmo estando correlacionados. Essa é uma característica especial do caso de dois preditores, que eu posso explicar em outra resposta, se houver interesse, isso me levaria um pouco longe da discussão atual.
  • |βEu|

Então agora vamos olhar para o seu gráfico a partir do conjunto de dados de carros e ler algumas coisas interessantes (reproduzi seu gráfico aqui para que esta discussão seja mais fácil de ler):

Uma palavra de advertência : escrevi a seguinte análise baseada na suposição de que as curvas mostram os coeficientes padronizados , neste exemplo eles não. Os coeficientes não padronizados não são adimensionais e comparáveis; portanto, nenhuma conclusão pode ser tirada deles em termos de importância preditiva. Para que a análise a seguir seja válida, finja que o gráfico é dos coeficientes padronizados e execute sua própria análise em caminhos de coeficientes padronizados.

insira a descrição da imagem aqui

  • Como você diz, o wtpreditor parece muito importante. Ele entra no modelo primeiro e tem uma descida lenta e constante até seu valor final. Ele tem algumas correlações que o tornam um passeio levemente acidentado, amem particular parece ter um efeito drástico quando entra.
  • amtambém é importante. Ele aparece mais tarde e está correlacionado com wt, pois afeta a inclinação de wtmaneira violenta. Também está correlacionado com carbe qsec, porque não vemos o amolecimento previsível da inclinação quando eles entram. Após estas quatro variáveis entraram no entanto, nós não ver o padrão uncorrelated agradável, por isso parece ser não correlacionado com todos os preditores no final.
  • Algo entra em torno de 2,25 no eixo x, mas o caminho em si é imperceptível, você só pode detectá-lo pelo efeito nos parâmetros cyle wt.
  • cylé bastante fascinante. Ele entra em segundo, então é importante para modelos pequenos. Depois que outras variáveis, e especialmente aminseridas, não são mais tão importantes e sua tendência se inverte, sendo eventualmente removida. Parece que o efeito de cylpode ser completamente capturado pelas variáveis ​​que entram no final do processo. Se é mais apropriado usar cylou o grupo complementar de variáveis, realmente depende da troca de viés e variância. Ter o grupo em seu modelo final aumentaria significativamente sua variação, mas pode ser que o viés mais baixo o compense!

Essa é uma pequena introdução de como aprendi a ler informações desses gráficos. Eu acho que eles são muito divertidos!

Obrigado por uma ótima análise. Para relatar em termos simples, você diria que wt, am e cyl são os três preditores mais importantes de mpg. Além disso, se você deseja criar um modelo para previsão, quais incluirá com base nesta figura: wt, am e cyl? Ou alguma outra combinação. Além disso, você não parece precisar do melhor lambda para análise. Não é importante como na regressão de crista?

Eu diria que o caso wte amsão bem definidos, eles são importantes. cylé muito mais sutil, é importante em um modelo pequeno, mas não é relevante em um modelo grande.

Eu não seria capaz de determinar o que incluir com base apenas na figura, que realmente deve ser respondida no contexto do que você está fazendo. Você poderia dizer que, se você deseja um modelo de três preditores, então wt, ame cylsão boas escolhas, pois são relevantes no grande esquema das coisas, e deve acabar tendo tamanhos de efeito razoáveis ​​em um modelo pequeno. Isso se baseia na suposição de que você tenha algum motivo externo para desejar um pequeno modelo de três preditores.

É verdade que esse tipo de análise examina todo o espectro de lambdas e permite selecionar relacionamentos em uma variedade de complexidades do modelo. Dito isto, para um modelo final, acho que ajustar um lambda ideal é muito importante. Na ausência de outras restrições, eu definitivamente usaria a validação cruzada para descobrir onde, ao longo desse espectro, é o lambda mais preditivo e, em seguida, utilizá-lo para um modelo final e uma análise final.

λ

Por outro lado, às vezes existem restrições externas à complexidade de um modelo (custos de implementação, sistemas legados, minimalismo explicativo, interpretabilidade dos negócios, patrimônio estético) e esse tipo de inspeção pode realmente ajudá-lo a entender a forma de seus dados e as compensações que você está fazendo escolhendo um modelo menor que o ideal.

Matthew Drury
fonte
Obrigado por uma ótima análise. Para relatar em termos simples, você diria que wt, am e cyl são os três preditores mais importantes de mpg. Além disso, se você deseja criar um modelo para previsão, quais você incluirá com base nesta figura: wt, am e cyl? Ou alguma outra combinação. Além disso, você não parece precisar do melhor lambda para análise. Não é importante como na regressão de crista?
rnso 31/05
@rnso Anexei uma resposta à minha resposta.
Matthew Drury
Talvez "patrimônio" deva ser "parcimônia"?
Hatshepsut
@ Matthew Drury, tenho poucas coisas que não tenho certeza, ficaria grato pelo seu esclarecimento, # você escreveu "por exemplo, quando o segundo preditores entra" como posso saber a partir da trama os segundos preditores ou terceiros preditores / entram . ## quando posso dizer que esses preditores são importantes ou não. Finalmente, como posso escolher o melhor modelo para esse ajuste. Além disso, a legenda / etiqueta é incluída automaticamente. (Eu tenho implementado este exemplo em R)
jeza
5
+6, eu evidentemente perdi isso quando saiu. Trabalho muito bom.
gung - Restabelece Monica