Kreuzvalidierung nach LASSO in komplexen Umfragedaten

11

Ich versuche, mit LASSO eine Modellauswahl für einige Kandidaten-Prädiktoren mit einem kontinuierlichen Ergebnis durchzuführen. Das Ziel besteht darin, das optimale Modell mit der besten Vorhersageleistung auszuwählen, was normalerweise durch K-fache Kreuzvalidierung erfolgen kann, nachdem ein Lösungspfad der Abstimmungsparameter von LASSO erhalten wurde. Das Problem hierbei ist, dass die Daten aus einem komplexen mehrstufigen Umfragedesign (NHANES) mit Cluster-Stichproben und -Schichten stammen. Der Schätzteil ist nicht schwer, da glmnetin R Stichprobengewichte genommen werden können. Der Teil der Kreuzvalidierung ist mir jedoch weniger klar, da die Beobachtungen jetzt nicht mehr zutreffen, und wie kann das Verfahren Stichprobengewichte berücksichtigen, die eine endliche Population darstellen?

Meine Fragen sind also:

1) Wie führt man eine K-fache Kreuzvalidierung mit komplexen Vermessungsdaten durch, um den optimalen Abstimmungsparameter auszuwählen? Genauer gesagt, wie können die Beispieldaten angemessen in Trainings- und Validierungssätze aufgeteilt werden? Und wie definiert man die Schätzung des Vorhersagefehlers?

2) Gibt es eine alternative Möglichkeit, den optimalen Abstimmungsparameter auszuwählen?

Aenima
quelle
Vielleicht wäre Resampling (zB Bootstrap) ein geeigneteres Verfahren anstelle von k fold cv?
g3o2
Lumley warnt: "Die Theorie für den Bootstrap wurde nur für die Situation der Probenahme mit gleicher Wahrscheinlichkeit innerhalb jeder Schicht entwickelt. Es ist nicht klar, wie gut sie mit beliebigen Wahrscheinlichkeiten funktionieren würde." (28) NHANES-Daten scheinen innerhalb der Schichten keine Stichproben mit gleicher Wahrscheinlichkeit zu haben.
Dan Hicks
Es wäre interessant, dieses kleine Detail aus dem OP zu kennen. Sehen Sie nicht, was an mehrstufigen Clustern und geschichteten Stichproben so komplex wäre ...
g3o2
@ Dan Hicks: Ich denke nicht, dass es wirklich wichtig ist, dass Sie beim Resampling mehrere Instanzen genau desselben Beispielplans replizieren.
g3o2
Verwenden Sie so etwas wie die hier beschriebenen Methoden? amstat.tandfonline.com/doi/pdf/10.1080/01621459.1988.10478591 (Oder etwas Neueres ?) Wenn Sie diese Idee mit etwas mehr Details als Antwort aufschreiben möchten, gebe ich Ihnen das Kopfgeld.
Dan Hicks

Antworten:

2

Ich habe keine detaillierte Antwort, nur ein paar Hinweise zur Arbeit, die ich lesen wollte:

Sie können sich McConville (2011) zu LASSO mit komplexen Umfragen ansehen , um sicherzustellen, dass Ihre Verwendung von LASSO für Ihre Daten geeignet ist. Aber vielleicht ist es keine große Sache, wenn Sie LASSO nur für die Variablenauswahl ausführen und dann den verbleibenden Variablen etwas anderes anpassen.

Für die Kreuzvalidierung mit komplexen Umfragedaten (jedoch nicht LASSO) zitiert McConville auch Opsomer & Miller (2005) und You (2009). Aber ihre Methoden scheinen einen ausgelassenen Lebenslauf zu verwenden, nicht K-fach.

Das Auslassen von Auslassungen sollte bei komplexen Umfragen einfacher zu implementieren sein - es gibt weniger Bedenken hinsichtlich der angemessenen Partitionierung der Daten. (Andererseits kann die Ausführung länger dauern als die K-fache. Wenn Ihr Ziel die Modellauswahl ist, ist bekannt, dass das Auslassen bei großen Proben schlechter sein kann als die K-fache.)

Civilstat
quelle
0

EDIT by OP: Gilt nicht für komplexe Umfragedaten.

Die Funktion cv.glmet kann Ihnen dabei helfen, die erforderliche Kreuzvalidierung durchzuführen. Der lambda.min-Wert ist der Wert von λ, wobei der CV-Fehler minimal ist. Das lambda.1se repräsentiert den Wert von λ in der Suche, der einfacher als das beste Modell (lambda.min) war, aber einen Fehler innerhalb eines Standardfehlers des besten Modells aufweist.

  1. Wählen Sie ein Wertegitter, aus dem Sie sowohl für Alpha als auch für Lambda auswählen können

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

  1. Richten Sie die Steuerparameter Ihres Modells ein. Die folgende Zugsteuerung wiederholt 10 Iterationen. Gehen Sie die verfügbaren Methoden durch und wählen Sie die aus, die zu Ihrem aktuellen Szenario passt.

cv.glmmod <-cv.glmnet (xTrain, y = yTrain, alpha = grid.einlphein,> =T.,leinmbdein=Grichd.lambda)

Auf den Wert lambda.min kann vom Modell selbst aus zugegriffen werden, wie unten gezeigt.

cv.glmmod $ lambda.min

karthikbharadwaj
quelle
1
Ich weiß, wie man mit glmnet eine Kreuzvalidierung für iid-Daten durchführt. Ich habe nach korrelierten komplexen Umfragedaten gefragt.
Aenima