Ich möchte GLM und Elastic Net verwenden, um die relevanten Features auszuwählen und ein lineares Regressionsmodell zu erstellen (dh sowohl Vorhersage als auch Verständnis, daher ist es besser, relativ wenige Parameter zu haben). Die Ausgabe erfolgt kontinuierlich. Es sind Gene pro Fälle. Ich habe über das Paket gelesen , bin mir jedoch nicht zu 100% sicher, welche Schritte zu befolgen sind:glmnet
Führen Sie einen Lebenslauf durch, um Lambda zu wählen:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1) Würden Sie angesichts der eingegebenen Daten einen anderen Alpha-Wert wählen?
(F2) Muss ich vor dem Erstellen des Modells noch etwas anderes tun?Passen Sie das Modell:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) etwas besser als "Kovarianz"?
(F4) Wenn Lambda vom Lebenslauf ausgewählt wurde, warum muss dieser Schritt durchgeführt werdennlambda=
?
(Q5) ist es besser zu benutzenlambda.min
oderlambda.1se
?Erhalten Sie die Koeffizienten, um zu sehen, welche Parameter herausgefallen sind ("."):
predict(model, type="coefficients")
In der Hilfeseite gibt es viele
predict
Methoden (zBpredict.fishnet
,predict.glmnet
,predict.lognet
usw.). Aber jede "Ebene" vorherzusagen, wie ich an einem Beispiel sah.
(Q6) soll ich verwendenpredict
oderpredict.glmnet
oder andere?
Ungeachtet dessen, was ich über Regularisierungsmethoden gelesen habe, bin ich in R und in diesen statistischen Paketen ziemlich neu, daher ist es schwierig, sicher zu sein, ob ich mein Problem an den Code anpasse. Anregungen werden gerne entgegengenommen.
UPDATE
Basierend auf "Wie bereits erwähnt, enthält ein Objekt der Klasse Train ein Element mit dem Namen" finalModel
, bei dem es sich um das angepasste Modell mit den durch Resampling ausgewählten Tuning-Parameterwerten handelt. Dieses Objekt kann auf herkömmliche Weise verwendet werden, um Vorhersagen für neue Stichproben zu generieren Modell Vorhersagefunktion. "
Verwenden Sie caret
, um sowohl Alpha als auch Lambda abzustimmen:
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
Ersetzt der fitM
vorherige Schritt 2? Wenn ja, wie werden die glmnet-Optionen ( type.gaussian="naive",lambda=cv$lambda.min/1se
) jetzt angegeben?
Und der folgende predict
Schritt kann ich ersetzen model
zu fitM
?
Wenn ich mache
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
macht es überhaupt Sinn oder mische ich beide Paketvokabeln falsch?
caret
ist ein R-Wrapper-Paket, das Funktionsschnittstellen von mehr als 100 ML-Paketen umschließt, um konsistenter zu sein, CVs, Gittersuche hinzufügt, verrückte Parameter-Standardeinstellungen usw. ändert.cva.glmnet(..)
anstelle von just auchcv.glmnet(...)
alpha und lambda gleichzeitig tunen können. Dann können Sie laufen, umminlossplot(cva.fit)
zu sehen, welches Alpha das beste Ergebnis liefert. Dies ist beides Teil von glmnetUtils