1. Learn
  2. /
  3. Courses
  4. /
  5. R의 caret로 배우는 Machine Learning

Connected

Exercise

사용자 지정 trainControl과 튜닝을 적용한 glmnet

영상에서 보셨듯이 glmnet 모델은 실제로 한 번에 여러 모델을 적합합니다(이 패키지의 큰 장점 중 하나죠). 이 점을 활용해 모델의 패널티 강도를 결정하는 lambda 값을 많이 전달할 수 있습니다. train()은 똑똑해서 각 alpha 값당 하나의 모델만 학습하고, 모든 lambda 값을 한 번에 넘겨 동시에 적합합니다.

제가 즐겨 사용하는 glmnet 모델의 튜닝 그리드는 다음과 같습니다:

expand.grid(
  alpha = 0:1,
  lambda = seq(0.0001, 1, length = 100)
)

이 그리드는 매우 작은 값부터 큰 값까지 많은 lambda 값(정확히 100개)을 탐색합니다. (최대 lambda를 10으로 늘릴 수도 있지만, 이 연습 문제에서는 1이 적절한 상한입니다.)

더 적은 모델을 탐색하고 싶다면 더 짧은 lambda 수열을 사용할 수 있어요. 예를 들어 lambda = seq(0.0001, 1, length = 10)이면 alpha의 각 값마다 10개 모델을 적합합니다.

또한 이 tuneGrid로 두 가지 형태의 패널티 모델, 즉 ridge 회귀와 lasso 회귀를 살펴봅니다. alpha = 0은 순수한 ridge 회귀, alpha = 1은 순수한 lasso 회귀입니다. 0과 1 사이의 alpha를 사용하면 두 모델을 혼합한 elastic net을 적합할 수 있습니다. 예를 들어 alpha = 0.05는 ridge 회귀 95%, lasso 회귀 5%에 해당합니다.

이 문제에서는 두 가지 극단 – 순수 ridge와 순수 lasso 회귀 – 만 탐색하여 각 방법의 차이를 보여 드리겠습니다.

Instructions

100 XP
  • overfit 데이터에 대해 y를 반응 변수로, 나머지 모든 변수를 설명 변수로 하여 glmnet 모델을 학습하세요. 이전 연습 문제에서 만든 사용자 지정 trainControl(myControl)을 반드시 사용하세요. 또한 사용자 지정 tuneGrid를 사용해 alpha = 0:1과, 각 alpha 값마다 0.0001부터 1 사이에서 20개의 lambda 값을 탐색하세요.
  • 콘솔에 model을 출력하세요.
  • model[["results"]]의 ROC 통계량 중 max() 값을 출력하세요. model[["results"]][["ROC"]]로 접근할 수 있습니다.