Ich frage mich, wie ich ein LASSO-Modell mit glmnet in R richtig trainieren und testen soll.
- Insbesondere frage ich mich, wie ich dies tun soll, wenn das Fehlen eines externen Testdatensatzes die Kreuzvalidierung (oder einen ähnlichen Ansatz) zum Testen meines LASSO-Modells erfordert .
Lassen Sie mich mein Szenario aufschlüsseln:
Ich habe nur einen Datensatz, um mein glmnet-Modell zu informieren und zu trainieren. Daher muss ich meine Daten mithilfe der Kreuzvalidierung aufteilen, um auch eine Möglichkeit zum Testen meines Modells zu generieren.
Ich benutze bereits cv.glmnet
, was laut Paketdetails :
Führt eine k-fache Kreuzvalidierung für glmnet durch, erstellt ein Diagramm und gibt einen Wert für Lambda zurück.
Wird die Kreuzvalidierung nur durchgeführt
cv.glmnet
, um das beste Lambda auszuwählen, oder dient sie auch als allgemeineres Kreuzvalidierungsverfahren?- Mit anderen Worten, muss ich noch einen weiteren Kreuzvalidierungsschritt durchführen, um mein Modell zu "testen"?
Ich gehe davon aus, dass "Ja, das tue ich".
Wie gehe ich in diesem Fall mit der Kreuzvalidierung meines cv.glmnet
Modells um?
Muss ich das manuell machen oder ist die
caret
Funktion vielleicht für glmnet-Modelle nützlich?Benutze ich zwei konzentrische "Schleifen" der Kreuzvalidierung? ... Benutze ich eine "innere Schleife" von CV via
cv.glmnet
, um den besten Lambda-Wert innerhalb jeder der k Falten einer "externen Schleife" der k-fachen Kreuzvalidierungsverarbeitung zu bestimmen ?Wenn ich eine Kreuzvalidierung meines bereits kreuzvalidierenden
cv.glmnet
Modells durchführe, wie isoliere ich das "beste" Modell (aus dem "besten" Lambda-Wert) von jedemcv.glmnet
Modell innerhalb jeder Falte meiner ansonsten "externen Schleife" der Kreuzvalidierung?- Hinweis: Ich definiere "bestes" Modell als das Modell, das einem Lambda zugeordnet ist, das eine MSE innerhalb von 1 SE des Minimums erzeugt ... dies ist das
$lambda.1se
imcv.glmnet
Modell.
- Hinweis: Ich definiere "bestes" Modell als das Modell, das einem Lambda zugeordnet ist, das eine MSE innerhalb von 1 SE des Minimums erzeugt ... dies ist das
Kontext:
Ich versuche, das Baumalter ("Alter") basierend auf dem Baumdurchmesser ("D"), D ^ 2 und der Art ("Faktor (SPEC)") vorherzusagen. [resultierende Gleichung: Age ~ D + factor(SPEC) + D^2
]. Ich habe ~ 50.000 Datenzeilen, aber die Daten sind in Längsrichtung (verfolgt Individuen durch die Zeit) und bestehen aus ~ 65 Arten.