Ich benutze das Paket 'lars' in R mit dem folgenden Code:
> library(lars)
> set.seed(3)
> n <- 1000
> x1 <- rnorm(n)
> x2 <- x1+rnorm(n)*0.5
> x3 <- rnorm(n)
> x4 <- rnorm(n)
> x5 <- rexp(n)
> y <- 5*x1 + 4*x2 + 2*x3 + 7*x4 + rnorm(n)
> x <- cbind(x1,x2,x3,x4,x5)
> cor(cbind(y,x))
y x1 x2 x3 x4 x5
y 1.00000000 0.74678534 0.743536093 0.210757777 0.59218321 0.03943133
x1 0.74678534 1.00000000 0.892113559 0.015302566 -0.03040464 0.04952222
x2 0.74353609 0.89211356 1.000000000 -0.003146131 -0.02172854 0.05703270
x3 0.21075778 0.01530257 -0.003146131 1.000000000 0.05437726 0.01449142
x4 0.59218321 -0.03040464 -0.021728535 0.054377256 1.00000000 -0.02166716
x5 0.03943133 0.04952222 0.057032700 0.014491422 -0.02166716 1.00000000
> m <- lars(x,y,"step",trace=T)
Forward Stepwise sequence
Computing X'X .....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 4 added
LARS Step 3 : Variable 3 added
LARS Step 4 : Variable 2 added
LARS Step 5 : Variable 5 added
Computing residuals, RSS etc .....
Ich habe einen Datensatz mit 5 stetigen Variablen und versuche, ein Modell an eine einzelne (abhängige) Variable y anzupassen. Zwei meiner Prädiktoren sind stark miteinander korreliert (x1, x2).
Wie Sie im obigen Beispiel sehen können, wählt die Funktion lars mit der Option 'stepwise' zuerst die Variable aus, die am meisten mit y korreliert. Die nächste Variable, die in das Modell eingegeben wird, ist diejenige, die am meisten mit den Residuen korreliert. In der Tat ist es x4:
> round((cor(cbind(resid(lm(y~x1)),x))[1,3:6]),4)
x2 x3 x4 x5
0.1163 0.2997 0.9246 0.0037
Wenn ich jetzt die Option 'Lasso' mache:
> m <- lars(x,y,"lasso",trace=T)
LASSO sequence
Computing X'X ....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 2 added
LARS Step 3 : Variable 4 added
LARS Step 4 : Variable 3 added
LARS Step 5 : Variable 5 added
In den ersten beiden Schritten werden beide korrelierten Variablen zum Modell hinzugefügt. Dies ist das Gegenteil von dem, was ich in mehreren Zeitungen gelesen habe. Die meisten sagen dann, dass, wenn es eine Gruppe von Variablen gibt, unter denen die Korrelationen sehr hoch sind, das "Lasso" dazu neigt, nur eine Variable aus der Gruppe zufällig auszuwählen.
Kann jemand ein Beispiel für dieses Verhalten geben? Oder erklären Sie, warum meine Variablen x1, x2 nacheinander (zusammen) zum Modell hinzugefügt werden?
R
Aufruf des OP und die von ihm bereitgestellte Ausgabe ansehen, werden Sie feststellen , dass er tatsächlich das Lasso verwendet. Wie Sie sicher wissen, liefert eine kleine Änderung des lars-Algorithmus den Lasso-Regularisierungspfad.