Aşağıdaki kod ile R 'lars' paketini kullanıyorum:
> 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 .....
Ben 5 sürekli değişkenler ile bir veri kümesi var ve ben tek bir (bağımlı) değişken y bir model sığdırmaya çalışıyorum. Tahmincilerimden ikisi birbiriyle yüksek derecede ilişkilidir (x1, x2).
Yukarıdaki örnekte de görebileceğiniz gibi lars işlevi 'stepwise' seçeneğiyle önce y ile en çok ilişkili olan değişkeni seçer. Modele girilecek bir sonraki değişken, artıklarla en fazla ilişkili olan değişkendir. Gerçekten de 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
Şimdi, 'kement' seçeneğini yaparsam:
> 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
İlk iki adımda her iki korelasyon değişkenini de modele ekler. Bu, birkaç makalede okuduğumun tersidir. Çoğu, korelasyonların çok yüksek olduğu bir değişken grubu varsa, 'kement' grubundan rastgele bir değişken seçmeye meyillidir.
Birisi bu davranışa bir örnek verebilir mi? Veya açıklayın, neden x1, x2 değişkenlerim modele birbiri ardına (birlikte) eklendi?
R
OP'nin yaptığı çağrıya ve sağladığı ilgili çıktıya bakarsanız, aslında kementi kullandığını göreceksiniz. Bildiğim gibi, lars algoritmasında küçük bir değişiklik, kement düzenleme yolunu veriyor.