R의 패키지 'lars'를 다음 코드와 함께 사용하고 있습니다.
> 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 .....
5 개의 연속 변수가있는 데이터 세트가 있고 모델을 단일 (종속) 변수 y에 맞추려고합니다. 내 예측 변수 중 두 개는 서로 밀접하게 관련되어 있습니다 (x1, x2).
위의 예에서 볼 수 있듯이 'stepwise'옵션이있는 lars 함수는 먼저 y와 가장 관련이있는 변수를 선택합니다. 모델에 입력 할 다음 변수는 잔차와 가장 관련이있는 변수입니다. 실제로 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
이제 'lasso'옵션을 수행하면 :
> 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
처음 두 단계에서 상관 상관 변수를 모두 모델에 추가합니다. 이것은 내가 여러 신문에서 읽은 것과 반대입니다. 대부분의 경우 상관 관계가 매우 높은 변수 그룹이 있으면 'lasso'는 그룹에서 하나의 변수 만 임의로 선택하는 경향이 있다고 말합니다.
누군가이 행동의 예를 제공 할 수 있습니까? 또는 왜 내 변수 x1, x2가 모델에 하나씩 추가되는지 설명하십시오 (함께)?
R
OP가 수행 하는 호출과 그가 제공하는 관련 출력을 보면 실제로 올가미를 사용하고 있음을 알 수 있습니다. 아시다시피, lars 알고리즘의 작은 조정은 올가미 정규화 경로를 산출합니다.