Validation croisée après LASSO dans des données d'enquête complexes

11

J'essaie de faire une sélection de modèle sur certains prédicteurs candidats en utilisant LASSO avec un résultat continu. Le but est de sélectionner le modèle optimal avec les meilleures performances de prédiction, ce qui peut généralement être fait par validation croisée K-fold après avoir obtenu un chemin de solution des paramètres de réglage de LASSO. Le problème ici est que les données proviennent d'un plan d'enquête complexe en plusieurs étapes (NHANES), avec échantillonnage en grappes et stratification. La partie estimation n'est pas difficile car glmnetdans R peut prendre des poids d'échantillonnage. Mais la partie de la validation croisée est moins claire pour moi car les observations ne sont plus désormais iid, et comment la procédure peut-elle rendre compte des poids d'échantillonnage représentant une population finie?

Mes questions sont donc:

1) Comment effectuer une validation croisée K-fold avec des données d'enquête complexes pour sélectionner le paramètre de réglage optimal? Plus précisément, comment partitionner correctement les exemples de données en ensembles de formation et de validation? Et comment définir l'estimation de l'erreur de prédiction?

2) Existe-t-il une autre manière de sélectionner le paramètre de réglage optimal?

aenima
la source
Peut-être que le rééchantillonnage (par exemple bootstrap) serait une procédure plus appropriée au lieu de k fold cv?
g3o2
Lumley prévient que "la théorie du bootstrap n'a été développée que pour la situation de l'échantillonnage à probabilité égale au sein de chaque strate, il n'est pas clair dans quelle mesure cela fonctionnerait avec des probabilités arbitraires." (28) Les données NHANES ne semblent pas avoir un échantillonnage à probabilité égale au sein des strates.
Dan Hicks
serait intéressant de connaître ce petit détail du PO. Je ne vois pas ce qui serait si complexe à propos d'un échantillonnage en grappes et stratifié à plusieurs
degrés
@Dan Hicks: Je ne pense pas que ce soit vraiment important, lors du rééchantillonnage, vous répliquez plusieurs instances d'exactement le même plan d'échantillonnage.
g3o2
Vous utilisez quelque chose comme les méthodes décrites ici? amstat.tandfonline.com/doi/pdf/10.1080/01621459.1988.10478591 (Ou quelque chose de plus récent?) Si vous voulez écrire cette idée avec un peu plus de détails comme réponse, je vais vous donner la prime.
Dan Hicks

Réponses:

2

Je n'ai pas de réponse détaillée, juste quelques conseils pour travailler que je voulais lire:

Vous pouvez jeter un œil à McConville (2011) sur LASSO à enquête complexe, pour être sûr que votre utilisation de LASSO est appropriée pour vos données. Mais ce n'est peut-être pas un gros problème si vous ne faites LASSO que pour la sélection de variables, puis que vous ajustez autre chose aux variables restantes.

Pour la validation croisée avec des données d'enquête complexes (mais pas LASSO), McConville cite également Opsomer et Miller (2005) et You (2009). Mais leurs méthodes semblent utiliser un CV sans interruption, pas un K-fold.

L'abandon devrait être plus simple à mettre en œuvre avec des enquêtes complexes --- il y a moins de souci sur la façon de partitionner les données de manière appropriée. (D'un autre côté, cela peut prendre plus de temps que K-fold. Et si votre objectif est la sélection du modèle, il est connu que le non-retrait peut être pire que K-fold pour les grands échantillons.)

civilstat
la source
0

EDIT by OP: Non applicable aux données d'enquête complexes.

La fonction cv.glmet peut vous aider à effectuer la validation croisée requise. La valeur lambda.min est la valeur de λ où l'erreur CV est minimale. Le lambda.1se représente la valeur de λ dans la recherche qui était plus simple que le meilleur modèle (lambda.min), mais qui a une erreur dans 1 erreur standard du meilleur modèle.

  1. Choisissez une grille de valeurs parmi lesquelles vous pouvez choisir pour alpha et lambda

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

  1. Configurez les paramètres de contrôle de votre modèle. Le contrôle de train ci-dessous effectue des répétitions pendant 10 itérations. Passez en revue les méthodes disponibles et choisissez celle qui correspondrait à votre scénario actuel.

.alpha,>=T,lambda=grid

La valeur lambda.min est accessible à partir du modèle lui-même, comme indiqué ci-dessous.

cv.glmmod $ lambda.min

karthikbharadwaj
la source
1
Je sais comment faire une validation croisée pour les données iid en utilisant glmnet. Je posais des questions sur les données d'enquête complexes corrélées.
aenima