LASSO는 언제 상관 예측 변수를 선택합니까?


13

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가 모델에 하나씩 추가되는지 설명하십시오 (함께)?


이것은 올가미 단계에 대한 설명을 제공하는 최소 각도 회귀입니다.
Michael R. Chernick 2016 년

@MichaelChernick : ROP가 수행 하는 호출과 그가 제공하는 관련 출력을 보면 실제로 올가미를 사용하고 있음을 알 수 있습니다. 아시다시피, lars 알고리즘의 작은 조정은 올가미 정규화 경로를 산출합니다.
추기경

내 "추측"은 x2에 x1의 4 단위가 포함되어 있기 때문에 x1 및 x2가 실제로 가장 분산 (9 단위)을 갖습니다. x2의 계수를 2로 낮추면 x1과 x2 전에 x4가 선택되어있는 것을 볼 수 있습니다.

그 "무작위"의 증거에 대한 참고 자료를 제공 할 수 있습니까? 감사합니다.
ziyuang

이 논문에서 답을 찾을 수있을 것 같습니다 : arxiv.org/pdf/1204.1605.pdf
TPArrow

답변:


15

공선 성 문제가 과대 평가되었습니다!

토마스, 당신은 예측 자들이 서로 연관되어 있다면, 최상의 변수 선택 기법조차도 무리에서 무작위로 하나를 선택한다는 일반적인 견해를 분명히했습니다. 다행히도, 그것은 진실을 밝혀내는 회귀의 능력을 과소 평가하는 방법입니다! 올바른 유형의 설명 변수 (외인성)가있는 경우 여러 회귀 분석을 통해 각 변수가 다른 변수를 일정하게 유지하는 효과를 찾을 수 있습니다. 변수가 완벽하게 상관되어 있다면 말 그대로 불가능합니다. 변수가 서로 관련되어 있으면 더 어려울 수 있지만 오늘날 일반적인 데이터 세트의 크기에 따라 그다지 어렵지 않습니다.

공선 성은 정보가 부족한 문제입니다. Dave Giles의 블로그 에서 Art Goldberger의 공동성에 대한 패러디를 살펴보십시오 . 공선성에 대해 말하는 방식은 부분 회귀 계수 대신 평균에 적용되는 경우 어리석게 들릴 것입니다.

아직도 확신하지 않습니까? 이제 코드를 작성해야합니다.

set.seed(34234)

N <- 1000
x1 <- rnorm(N)
x2 <- 2*x1 + .7 * rnorm(N)
cor(x1, x2) # correlation is .94
plot(x2 ~ x1)

상관 관계가 높은 변수 x1과 x2를 만들었지 만 아래 그림에서 x1이 -1에 가까울 때 여전히 x2의 변동성이 있음을 알 수 있습니다. 여기에 이미지 설명을 입력하십시오

이제 "진실"을 추가 할 차례입니다 :

y <- .5 * x1 - .7 * x2 + rnorm(N) # Data Generating Process

강력한 공선 성 문제 속에서 정상적인 회귀가 성공할 수 있습니까?

summary(lm(y ~ x1 + x2))

예, 가능합니다 :

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.0005334  0.0312637  -0.017    0.986    
x1           0.6376689  0.0927472   6.875 1.09e-11 ***
x2          -0.7530805  0.0444443 -16.944  < 2e-16 ***

이제 저는 귀하의 질문에 중점을 둔 LASSO에 대해 이야기하지 않았습니다. 하지만 물어 보도록하겠습니다. 후진 소거가있는 구식 회귀 분석이 공선성에 속지 않는다면 왜 최첨단 LASSO가 그렇게 생각할까요?


마지막으로, OLS는 회전 등변 형이지만 규범으로 인해 LASSO에서 동일한 속성을 기대하지는 않습니다 . LASSO가 공상인지 아닌지는 관련이 없을 것입니다. L1
steveo'america

아이디어는 OP의 설명 된 현상을 설명하기 위해 더 단순한 개념을 사용할 수 있으며 이러한 개념은 데이터 중심의 정규화 용어를 추가해도 근본적으로 변경되지 않습니다.
벤 Ogorek

7

Ben의 대답은 그가 제공 한 진로에서 한 단계 더 나아갈 수 있도록 영감을주었습니다. "진리"가 다른 상황에있을 경우 어떻게 될까요?

원래 예에서 y는 상관 관계가 높은 두 변수 x1 및 x2에 종속됩니다. 다른 변수 x3이 있다고 가정하면

x3 = c (1 : N) / 250 # N은 이전에 정의되었고, N = 1000이며, x3은 x1과 비슷한 척도에 있으며, x3의 척도는 아래의 선형 회귀 결과에 영향을 미칩니다.

"진실"y는 이제 다음과 같이 정의됩니다

y = .5 * x1-.7 * x3 + rnorm (N) # 데이터 생성 프로세스

회귀는 어떻게됩니까?

요약 (lm (y ~ x1 + x2))

공선 성 효과가 강합니다. x2의 표준 오차가 너무 큽니다. 그러나 선형 회귀는 x2를 중요하지 않은 변수로 식별합니다.

     Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) -1.39164    0.04172 -33.354  < 2e-16 ***
x1           0.65329    0.12550   5.205 2.35e-07 ***
x2          -0.07878    0.05848  -1.347    0.178 

vif (lm (y ~ x1 + x2))

x1       x2 
9.167429 9.167429 

또 다른 회귀 사건은 어떻습니까?

요약 (lm (y ~ x1 + x2 + x3))

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.02100    0.06573   0.319    0.749    
x1           0.55398    0.09880   5.607 2.67e-08 ***
x2          -0.02966    0.04604  -0.644    0.520    
x3          -0.70562    0.02845 -24.805  < 2e-16 ***

변수 x2는 중요하지 않으므로 선형 회귀로 제거하는 것이 좋습니다.

vif (lm (y ~ x1 + x2 + x3))

x1       x2       x3 
9.067865 9.067884 1.000105 

위의 결과에서 공선 성은 선형 회귀에서 문제가되지 않으며 VIF 확인은 그다지 도움이되지 않습니다.

다른 상황을 보자. x3 = c (1 : N) # N은 전에 정의되고 N = 1000이며 x3은 x1과 동일한 스케일이 아닙니다.

"진실"y는 상기와 동일하게 정의된다

y = .5 * x1-.7 * x3 + rnorm (N) # 데이터 생성 프로세스

회귀는 어떻게됩니까?

요약 (lm (y ~ x1 + x2))

공선 성 효과가 강합니다. x1, x2의 표준 오차가 너무 큽니다. 선형 회귀는 중요한 변수 x1을 식별하지 못합니다.

   Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) -350.347      6.395 -54.783   <2e-16 ***
x1            25.207     19.237   1.310    0.190    
x2           -12.212      8.963  -1.362    0.173  

vif (lm (y ~ x1 + x2))

    x1       x2 
9.167429 9.167429 

또 다른 회귀 사건은 어떻습니까?

요약 (lm (y ~ x1 + x2 + x3))

Coefficients:
          Estimate Std. Error   t value Pr(>|t|)    
(Intercept)  0.0360104  0.0610405     0.590    0.555    
x1           0.5742955  0.0917555     6.259 5.75e-10 ***
x2          -0.0277623  0.0427585    -0.649    0.516    
x3          -0.7000676  0.0001057 -6625.170  < 2e-16 ***

변수 x2는 중요하지 않으므로 선형 회귀로 제거하는 것이 좋습니다.

vif (lm (y ~ x1 + x2 + x3))

x1       x2       x3 
9.182507 9.184419 1.001853 

참고 : x1 및 x3에서 y의 회귀. x1의 표준 오차는 0.03에 불과합니다.

요약 (lm (y ~ x1 + x3))

Coefficients:
              Estimate Std. Error   t value Pr(>|t|)    
(Intercept) -0.1595528  0.0647908    -2.463    0.014 *  
x1           0.4871557  0.0321623    15.147   <2e-16 ***
x3          -0.6997853  0.0001121 -6240.617   <2e-16 ***

위의 결과를 바탕으로 내 결론은

  • 예측 변수가 비슷한 척도에있을 때 공선 성은 선형 회귀에서 문제가되지 않습니다.
  • 예측 변수가 비슷한 척도에 있지 않은 경우
    • 상관 관계가 높은 두 변수가 모두 실제 모형에있는 경우 공선 성은 문제가되지 않습니다.
    • 상관 관계가 높은 두 변수 중 하나만 실제 모형에있는 경우
      • 다른 "참"변수가 선형 회귀에 포함 된 경우 선형 회귀는 유의 변수와 관련이있는 중요하지 않은 변수를 식별합니다.
      • 다른 "참"변수가 선형 회귀에 포함되지 않으면 공선 성의 문제가 심각하여 표준 오류 인플레이션이 발생합니다.

이 결과는 예측 변수 / 기능과 y 사이의 선형 관계를 가정하지만 흥미 롭습니다. 그것들은 포괄적이 아닙니다. 예측 변수에 강한 비선형 관계가있는 경우 (예 : 교호 작용 항 x1 * x2, 단계 함수 기능 / 더미 변수 (일부 상수의 경우 x1> c 인 경우 등)) 어떻게됩니까? 알고리즘 거래를위한 피처 생성과 같이 신호 대 잡음비가 낮은 데이터로 작업하는 경우 신호가 약하기 때문에 과적 합을 줄이기 위해 항상 비유적인 모델을 사용하므로 다중 공선 성을 처리해야하는 강력한 이유가 여전히 있습니다.
FXQuantTrader
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.