Saya menggunakan paket 'lars' dalam R dengan kode berikut:
> 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 .....
Saya punya dataset dengan 5 variabel kontinu dan saya mencoba menyesuaikan model dengan variabel tunggal (dependen) y. Dua prediktor saya sangat berkorelasi satu sama lain (x1, x2).
Seperti yang Anda lihat pada contoh di atas, fungsi lars dengan opsi 'stepwise' pertama-tama memilih variabel yang paling berkorelasi dengan y. Variabel berikutnya untuk memasukkan model adalah variabel yang paling berkorelasi dengan residual. Memang, itu adalah 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
Sekarang, jika saya melakukan opsi 'laso':
> 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
Ini menambahkan kedua variabel berkorelasi ke model dalam dua langkah pertama. Ini kebalikan dari apa yang saya baca di beberapa makalah. Sebagian besar kemudian mengatakan bahwa jika ada sekelompok variabel di antaranya korelasinya sangat tinggi, maka 'laso' cenderung memilih hanya satu variabel dari kelompok secara acak.
Bisakah seseorang memberikan contoh perilaku ini? Atau jelaskan, mengapa variabel saya x1, x2 ditambahkan ke model satu demi satu (bersama)?
R
panggilan yang dibuat OP dan output terkait yang ia berikan, Anda akan melihat bahwa ia memang menggunakan laso. Seperti yang saya yakin Anda tahu, tweak kecil dari algoritma lars menghasilkan jalur regularisasi laso.