R, Rstudio
Lasso, Ridge in R (error 고치기)
daisy9
2022. 11. 5. 18:37
R에서 lasso 는 glmnet 으로 할 수 있다.
glmnet(x, y, alpha) 가 기본인데,
- alpha = 0 : Ridge
- alpha = 1 : Lasso 이다.
예를 들어, Lasso 를 하고 싶다면 다음과 같이 하면 된다.
fit <- glmnet(x, y, alpha=1)
만일 여기서 Cross validation (CV) 를 하고 싶다면, cv.glmnet 을 써주면 되는데,
여기서 주의해야 할 점은, X와 Y가 matrix 형태로 들어가야 한다는 것이다.
그렇게 하지 않으면 다음과 같은 error가 난다.
참고로, matrix 인지 확인하고 싶다면 is.matrix() 를, matrix 형태로 만들어주고 싶다면 as.matrix() 를 해주면 된다.
is.matrix()
as.matrix()
cv.glmnet은 다음과 같이 쓸 수 있다.
fit_cv <- cv.glmnet(x, y, nfolds=7, alpha=1)
실제 코드와 함께 결과 해석 방법까지 보도록 하자.
먼저 시작하기 전에 'glmnet' 패키지를 설치하고 불러와야 한다.
우리가 cross validation 을 시행하고 궁금한 '최적의 람다'와 그에 대응하는 최소 mse는
'min' 행의 Lambda = 0.04 와 Measure = 0.6416 이다.