Ich möchte Lasso oder Ridge-Regression für ein Modell mit mehr als 50.000 Variablen verwenden. Ich möchte dies mithilfe des Softwarepakets in R tun. Wie kann ich den Schrumpfungsparameter ( ) schätzen ?
Bearbeitungen:
Hier ist der Punkt, zu dem ich gekommen bin:
set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000, replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)
mydf <- data.frame(Y, X)
require(MASS)
lm.ridge(Y ~ ., mydf)
plot(lm.ridge(Y ~ ., mydf,
lambda = seq(0,0.1,0.001)))
Meine Frage lautet: Woher weiß ich, welches am besten für mein Modell ist?
Antworten:
Die Funktionλ ℓ1 ℓ1 ℓ2 α
cv.glmnet
aus dem R-Paket glmnet führt eine automatische Kreuzvalidierung für ein Gitter mit Werten durch, das für -pensierte Regressionsprobleme verwendet wird. Insbesondere für das Lasso. Das glmnet-Paket unterstützt auch die allgemeinere Strafe für elastische Netze , die eine Kombination aus und . Ab Version 1.7.3. Wenn der -Parameter des Pakets gleich 0 ist, ergibt sich eine Ridge-Regression (zumindest wurde diese Funktionalität erst kürzlich dokumentiert).≤ 1 ≤ 1 ≤ 2 αDie Kreuzvalidierung ist eine Schätzung des erwarteten Generalisierungsfehlers für jedes und kann sinnvoll als Minimierer dieser Schätzung gewählt werden. Die Funktion gibt zwei Werte von . Der Minimierer und der immer größere Minimierer stellen eine heuristische Wahl von , die ein weniger komplexes Modell erzeugt, für das die Leistung in Bezug auf den geschätzten erwarteten Generalisierungsfehler innerhalb eines Standardfehlers des Minimums liegt. Im glmnet-Paket sind verschiedene Auswahlmöglichkeiten für Verlustfunktionen zur Messung des Generalisierungsfehlers möglich. Das Argument gibt die Verlustfunktion an.λ λ λλ λ λ λ
cv.glmnet
lambda.min
lambda.1se
type.measure
Alternativ enthält das R-Paket mgcv umfangreiche Schätzmöglichkeiten mit quadratischer Bestrafung einschließlich automatischer Auswahl der Strafparameter. Die implementierten Methoden umfassen, wie in einem Kommentar erwähnt, eine verallgemeinerte Kreuzvalidierung und REML. Weitere Details finden Sie im Buch des Paketautors: Wood, SN (2006) Generalized Additive Models: Eine Einführung mit R, CRC.
quelle
cv.glmnet
kehrt zwei Werte für , und ( „one-Standard-error“ -Regel).lambda.min
lambda.1se
Diese Antwort ist MATLAB-spezifisch. Die Grundkonzepte sollten jedoch denen von R sehr ähnlich sein.
Im Fall von MATLAB haben Sie die Möglichkeit, Lasso mit aktivierter Kreuzvalidierung auszuführen.
In diesem Fall meldet die Lasso-Funktion zwei kritische Parameterwerte
Sie erhalten auch ein kleines Diagramm, mit dem Sie die Beziehung zwischen Lambda und CVMSE untersuchen können
Im Allgemeinen wählen Sie einen Lambda-Wert, der zwischen der blauen und der grünen Linie liegt.
Der folgende Blogeintrag enthält einige Demo-Codes, die auf einigen Beispielen in basieren
Tibshirani, R. (1996). Regressionsschrumpfung und Selektion über das Lasso. J. Royal. Statist. Soc B., Bd. 58, Nr. 1, Seiten 267-288).
http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/
quelle
Ich habe gute Erfolge hat effektive AIC, dass AIC mit den effektiven Freiheitsgraden - siehe Grau JASA 87: 942 1992 für eine effektive df Dies wird implementiert für Strafe in dem R - Paket für lineare und logistische Modelle und Mit dieser Funktion kann der Schrumpfungskoeffizient ermittelt werden, der den effektiven AIC optimiert. Eine Fallstudie, die zeigt, wie eine differentielle Schrumpfung (z. B. eine stärkere Schrumpfung für Wechselwirkungen) durchgeführt wird, ist Harrell et al. Stat in Med. 17: 909, 1998.L2
rms
rms
pentrace
quelle