이 올가미 줄거리에서 결론을 내릴 것 (glmnet)


19

다음은 mtcarsR로 설정된 데이터를 mpgDV로 사용하고 다른 변수는 예측 변수로 사용하여 기본 알파 (1, 따라서 올가미)를 사용하는 glmnet의 플롯입니다 .

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

여기에 이미지 설명을 입력하십시오

우리는 무엇 특히, 다른 변수에 대해이 플롯에서 결론을 내릴 수 am, cylwt(빨강, 검정 및 밝은 파란색 선)? 보고서에 출력 할 내용을 어떻게 표현할 것인가?

나는 다음을 생각했다.

  1. wt의 가장 중요한 예측 변수입니다 mpg. 에 부정적인 영향을 미칩니다 mpg.

  2. cyl의 약한 음성 예측 변수입니다 mpg.

  3. am의 긍정적 인 예측 변수가 될 수 있습니다 mpg.

  4. 다른 변수는 강력한 예측 변수가 아닙니다 mpg.

당신의 생각에 감사합니다.

(참고 : cyl검은 선은 0에 가까워 질 때까지 0에 도달하지 않습니다.)

편집 : 다음은 plot (mod, xvar = 'lambda')입니다. 위 그림의 역순으로 x 축을 표시합니다.

여기에 이미지 설명을 입력하십시오

(PS :이 질문이 흥미롭고 중요하다고 생각되면 찬성하십시오.)


당신이 전에 쉼표를 잊어 버린 것 같습니다 -1에서 glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy

쉼표를 제공하지 않으면 R은 숫자를 열 번호로 가정하므로 작동합니다.
rnso 12

좋았어, 난 전에는 그렇게하지 않았어
Richard Hardy

2
@RichardHardy 조심하십시오; 이 동작은 데이터 프레임과 행렬에 따라 다릅니다. 그래서, 데이터 프레임은리스트이며, 각 열은 해당리스트의 요소 인 my_data_frame[1]반면, 하나 개의 컬럼 데이터 프레임을 리턴 my_data_frame[[1]]하고 my_data_frame[, 1]모두 복귀하는 벡터 없는 데이터 프레임에서 "포함". 행렬은, 그러나, 실제로 그렇게 그리드와 같은 접근을에 R 수있는 특별한 속성을 가진 단지 평면 벡터입니다 my_matrix[1], my_matrix[1, 1]그리고 my_matrix[[1]]모든 첫째 돌아갑니다 요소 의를 my_matrix. my_matrix[, 1]는 첫 번째 열을 반환합니다.
shadowtalker

2
plotmo 패키지 의 plot_glmnet 함수는 레이블 오버 플로팅 및 기타 세부 사항을 처리하기 때문에 약간 더 나은 계수 플롯을 제공 한다고 언급했습니다 . 6 장 플로트 비 네트 에서 예제를 찾을 수 있습니다 .
Stephen Milborrow

답변:


39

λ로그(λ)나는|β나는|

이를 위해 다음과 같은 상관 및 비 상관 데이터를 만들었습니다.

x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]

sigma <- matrix(c(  1, -.5,   0,
                  -.5,   1, -.5,
                    0, -.5,   1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]

데이터 x_uncorr에 관련이없는 열이 있습니다

> round(cor(x_uncorr), 2)
     [,1]  [,2]  [,3]
[1,] 1.00  0.01  0.00
[2,] 0.01  1.00 -0.01
[3,] 0.00 -0.01  1.00

동안 x_corr열 사이에 미리 설정된 상관 관계가

> round(cor(x_corr), 2)
      [,1]  [,2]  [,3]
[1,]  1.00 -0.49  0.00
[2,] -0.49  1.00 -0.51
[3,]  0.00 -0.51  1.00

이제 두 경우 모두에 대한 올가미 플롯을 살펴 보겠습니다. 먼저 상관되지 않은 데이터

gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)

여기에 이미지 설명을 입력하십시오

몇 가지 특징

  • 예측 변수는 실제 선형 회귀 계수의 크기 순서대로 모형에 들어갑니다.
  • 나는|β나는|나는|β나는|
  • 새 예측 변수가 모형에 입력되면 모델에 이미있는 모든 예측 변수의 계수 경로 기울기에 영향을줍니다. 예를 들어, 두 번째 예측 변수가 모형에 진입하면 첫 번째 계수 경로의 기울기가 반으로 줄어 듭니다. 세 번째 예측 변수가 모형에 들어갈 때 계수 경로의 기울기는 원래 값의 1/3입니다.

이것들은 상관없는 데이터로 올가미 회귀에 적용되는 일반적인 사실이며 모두 손으로 증명하거나 (좋은 운동!) 문헌에서 찾을 수 있습니다.

이제 상관 된 데이터를 수행 할 수 있습니다

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

여기에 이미지 설명을 입력하십시오

이 플롯과 관련이없는 경우를 비교하여 읽을 수 있습니다.

  • 제 1 및 제 2 예측 자 경로는 상관되어 있지만, 제 3 예측자가 모형에 진입 할 때까지 상관되지 않은 경우와 동일한 구조를 갖는다. 이것은 두 예측 변수 사례의 특별한 기능입니다. 관심이 있다면 다른 대답으로 설명 할 수 있습니다. 현재 토론에서 조금 멀리 떨어져 있습니다.
  • |β나는|

이제 자동차 데이터 세트에서 플롯을보고 흥미로운 것들을 읽어 보겠습니다 (이 토론을 읽기 쉽도록 플롯을 재현했습니다).

경고 한마디 : 나는 곡선이 표준화 된 계수를 보여 준다는 가정에 근거하여 다음과 같은 분석을 썼다 . 표준화되지 않은 계수는 차원이없고 비교할 수 없으므로 예측 중요성 측면에서 결론을 도출 할 수 없습니다. 다음 분석이 유효하려면 그림이 표준화 된 계수 인 척하고 표준화 된 계수 경로에 대한 자체 분석을 수행하십시오.

여기에 이미지 설명을 입력하십시오

  • 당신이 말하는 wt것처럼 , 예측 자는 매우 중요해 보입니다. 모델에 먼저 들어가고 최종 값으로 천천히 꾸준히 강하합니다. 약간의 울퉁불퉁 한 주행을 만드는 몇 가지 상관 관계가 있으며, am특히 들어갈 때 과감한 효과가있는 것으로 보입니다.
  • am또한 중요합니다. 나중에 와서 폭력적인 방식으로 wt경사에 영향을 미치기 때문에 와 관련이 wt있습니다. 또한과 상관 관계 carbqsec그 입력 할 때 우리가 경사의 예측 연화가 표시되지 않기 때문에. 이 4 개의 변수가 입력 된 후에는 상관 관계가없는 패턴이 보이 므로 결국 모든 예측 변수와 상관이없는 것 같습니다.
  • x 축에서 약 2.25에 무언가가 들어가지만 경로 자체는 알 수 없으므로 cylwt매개 변수에 미치는 영향으로 만 감지 할 수 있습니다 .
  • cyl꽤 매력적입니다. 두 번째로 들어가므로 작은 모델에 중요합니다. 다른 변수, 특히 am입력 후에는 더 이상 중요하지 않으며 추세가 반전되어 결국 완전히 제거됩니다. cyl프로세스의 끝에서 입력되는 변수에 의해 그 효과 가 완전히 포착되는 것처럼 보입니다 . 를 사용하는 것이 더 적합한 지 cyl또는 보완적인 변수 그룹 을 사용하는 것이 실제로는 바이어스 편차 트레이드 오프에 달려 있습니다. 최종 모델에 그룹을두면 분산이 크게 증가하지만 더 낮은 바이어스가이를 보완 할 수 있습니다!

그것은이 음모에서 정보를 읽는 법을 배우는 작은 소개입니다. 나는 그들이 재미 있다고 생각한다!

훌륭한 분석에 감사드립니다. 간단히 말하면 wt, am 및 cyl이 mpg의 가장 중요한 세 가지 예측 변수라고 할 수 있습니다. 또한 예측을위한 모델을 작성하려는 경우 wt, am 및 cyl? 또는 다른 조합. 또한 분석을 위해 최상의 람다가 필요하지 않은 것 같습니다. 능선 회귀 에서처럼 중요하지 않습니까?

나는의 경우를 말하고 싶지만 wtam그들이 중요하다, 명확한이다. cyl훨씬 더 미묘하지만 작은 모델에서는 중요하지만 큰 모델에서는 전혀 관련이 없습니다.

나는 단지 그림에 근거하여 무엇을 포함 시킬지 결정할 수 없으며, 실제로는 당신이하는 일의 맥락에 답해야합니다. 당신은 당신이 다음 세 예측 모델을 원하는 경우 말할 수 있습니다 wt, am그리고 cyl그들은 사물의 웅대 한 계획에 관련된으로, 좋은 선택을하고, 작은 모델에서 적절한 효과 크기를 갖는 결국해야한다. 이것은 작은 세 개의 예측 변수 모델을 원할 외부 이유가 있다고 가정합니다.

사실,이 유형의 분석은 전체 람다 스펙트럼을 살펴보고 다양한 모델 복잡성에 대한 관계를 억제 할 수 있습니다. 즉, 최종 모델의 경우 최적의 람다 튜닝이 매우 중요하다고 생각합니다. 다른 제약 조건이 없으면 교차 유효성 검사를 사용 하여이 스펙트럼에서 가장 예측 가능한 람다가 어디에 있는지 찾은 다음 해당 람다를 사용하여 최종 모델 및 최종 분석합니다.

λ

다른 한편으로, 때로는 모델이 얼마나 복잡 할 수 있는지 (구현 비용, 레거시 시스템, 설명 적 미니멀리즘, 비즈니스 해석 성, 미학적 가부장제)에 대한 외부의 제약이 있으며 이러한 종류의 검사는 데이터의 형태를 이해하는 데 실제로 도움이 될 수 있습니다. 최적의 모형보다 작은 모형을 선택하여 장단점을 조정하십시오.


훌륭한 분석에 감사드립니다. 간단히 말하면 wt, am 및 cyl이 mpg의 가장 중요한 세 가지 예측 변수라고 할 수 있습니다. 또한 예측을위한 모델을 작성하려는 경우 wt, am 및 cyl? 또는 다른 조합. 또한 분석을 위해 최상의 람다가 필요하지 않은 것 같습니다. 능선 회귀 에서처럼 중요하지 않습니까?
rnso

@rnso 내 답변에 답변을 추가했습니다.
Matthew Drury

아마도 '애국심'은 'parsimony'가되어야합니까?
Hatshepsut

@Matthew Drury, 나는 그것에 대해 확신하지 못하는 몇 가지를 가지고 있습니다. 나는 당신의 설명에 감사 할 것입니다. . ## 언제이 예측 변수가 중요하지 않은지 알 수 있습니다. 마지막으로,이 피팅에 가장 적합한 모델을 어떻게 선택할 수 있습니까? 또한 범례 / 라벨이 자동으로 포함됩니다. (나는 R 에서이 예제를 구현했다)
jeza

5
+6, 나왔을 때 이걸 놓친 것 같습니다. 정말 좋은 일입니다.
gung-Monica Monica 복원
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.