Validação cruzada após o LASSO em dados complexos de pesquisa

11

Estou tentando fazer a seleção do modelo em alguns candidatos a preditores usando o LASSO com um resultado contínuo. O objetivo é selecionar o modelo ideal com o melhor desempenho de previsão, o que geralmente pode ser feito através da validação cruzada K-fold após a obtenção do caminho da solução dos parâmetros de ajuste do LASSO. A questão aqui é que os dados são de um complexo projeto de pesquisa em vários estágios (NHANES), com amostragem e estratificação por cluster. A parte da estimativa não é difícil, pois glmnetem R pode levar pesos amostrais. Mas a parte da validação cruzada é menos clara para mim, pois as observações agora não são mais claras e como o procedimento pode explicar os pesos amostrais que representam uma população finita?

Então, minhas perguntas são:

1) Como realizar a validação cruzada K-fold com dados complexos de pesquisa para selecionar o parâmetro de ajuste ideal? Mais especificamente, como particionar adequadamente os dados de amostra em conjuntos de treinamento e validação? E como definir a estimativa do erro de previsão?

2) Existe uma maneira alternativa de selecionar o parâmetro de ajuste ideal?

aenima
fonte
Talvez a reamostragem (por exemplo, bootstrap) seja um procedimento mais apropriado em vez de k fold cv?
G3o2
Lumley adverte que "a teoria do bootstrap foi desenvolvida apenas para a situação de amostragem de igual probabilidade dentro de cada estrato; não está claro o quão bem ele funcionaria com probabilidades arbitrárias". (28) Os dados do NHANES não parecem ter amostragem de probabilidade igual dentro dos estratos.
Dan Hicks
seria interessante conhecer esse pequeno detalhe do OP. Não ver o que seria tão complexa sobre conglomerados em múltiplos estágios e amostragem estratificada ...
g3o2
@ Dan Hicks: Eu não acho que realmente importe, quando reamostrar, você replica várias instâncias do mesmo plano de amostra.
G3o2
Usando algo como os métodos descritos aqui? amstat.tandfonline.com/doi/pdf/10.1080/01621459.1988.10478591 (Ou algo mais recente?) Se você quiser escrever essa ideia com um pouco mais de detalhe como resposta, eu lhe darei a recompensa.
Dan Hicks

Respostas:

2

Não tenho uma resposta detalhada, apenas alguns indicadores para o trabalho que pretendo ler:

Você pode dar uma olhada em McConville (2011) no LASSO de pesquisa complexa, para garantir que seu uso do LASSO seja apropriado para seus dados. Mas talvez não seja grande coisa se você estiver fazendo o LASSO apenas para a seleção de variáveis ​​e ajustando outra coisa às variáveis ​​restantes.

Para validação cruzada com dados complexos de pesquisa (embora não o LASSO), McConville também cita Opsomer & Miller (2005) e You (2009). Mas os métodos deles parecem usar CV de exclusão única, não dobra K.

Deixar de fora deve ser mais simples de implementar com pesquisas complexas - há menos preocupações sobre como particionar os dados adequadamente. (Por outro lado, pode levar mais tempo para executar do que a dobra em K. E se seu objetivo for a seleção de modelos, sabe-se que deixar de fora pode ser pior que a dobra em K para amostras grandes.)

civilstat
fonte
0

EDIT by OP: Não aplicável a dados complexos de pesquisas.

A função cv.glmet pode ajudá-lo a executar a validação cruzada necessária. O valor lambda.min é o valor de λ onde o erro CV é mínimo. O lambda.1se representa o valor de λ na pesquisa que foi mais simples que o melhor modelo (lambda.min), mas que possui erro dentro de 1 erro padrão do melhor modelo.

  1. Escolha uma grade de valores que você pode escolher para alfa e lambda

grade <- expand.grid (.alpha = (1:10) * 0.1, .lambda = (1:10) * 0.1)

  1. Configure os parâmetros de controle do seu modelo. O controle de trem abaixo faz repetição de CV por 10 iterações. Analise os métodos disponíveis e escolha aquele que se encaixa no seu cenário atual.

cv.glmmod <-cv.glmnet (xTrain, y = yTrain, alfa = grade .lambda).umaeuphuma,> =T,euumambduma=grEud

O valor lambda.min pode ser acessado a partir do próprio modelo, como mostrado abaixo.

cv.glmmod $ lambda.min

karthikbharadwaj
fonte
1
Eu sei como fazer validação cruzada para dados iid usando glmnet. Eu estava perguntando sobre dados de pesquisas complexas correlacionadas.
Aenima # 10/16