R에서 "glmnet"이 인터셉트에 적합합니까?


10

를 사용하여 R에 선형 모델을 피팅하고 glmnet있습니다. 원래 (비정규 화 된) 모델은를 사용하여 피팅되었으며 lm상수 항이 없었습니다 (예 : 형식 lm(y~0+x1+x2,data)).

glmnet예측 행렬과 반응 벡터를 취합니다. 나는 glmnet문서를 읽었 으며 상수 용어에 대한 언급을 찾을 수 없습니다.

그렇다면 glmnet원점을 통해 선형 맞춤 을 요구하는 방법이 있습니까?

답변:


12

예, 절편은 glmnet 모델에 포함되어 있지만 정규화되지는 않습니다 (참조 : Coordinate Descent를 통한 일반 선형 모형의 정규화 경로 , p. 13). 구현에 대한 자세한 내용은 코드를주의 깊게 살펴보면 얻을 수 있지만 (가우스 패밀리의 경우 elnet()가 호출 하는 함수 glmnet()임) 포트란에 있습니다.

당신은 시도 할 수 전달하여 절편을 제거 할 수 있습니다 패키지 unpenalized = ~0로를 penalized().

> x <- matrix(rnorm(100*20),100,20)
> y <- rnorm(100)
> fit1 <- penalized(y, penalized=x, unpenalized=~0, 
                    standardize=TRUE) 
> fit2 <- lm(y ~ 0+x)
> plot((coef(fit1) + coef(fit2))/2, coef(fit2)-coef(fit1))

올가미 정규화를 얻으려면 다음과 같이 시도하십시오.

> fit1b <- penalized(y, penalized=x, unpenalized=~0, 
                     standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)

다음 그림에서 볼 수 있듯이 두 방법으로 계산 된 회귀 매개 변수 (왼쪽)에는 거의 차이가 없으며 올가미 경로 솔루션을 매우 쉽게 그릴 수 있습니다 (오른쪽).

대체 텍스트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.