사용자 지정 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 회귀 – 만 탐색하여 각 방법의 차이를 보여 드리겠습니다.
이 연습은 강의의 일부입니다
R의 caret로 배우는 Machine Learning
연습 안내
overfit데이터에 대해y를 반응 변수로, 나머지 모든 변수를 설명 변수로 하여glmnet모델을 학습하세요. 이전 연습 문제에서 만든 사용자 지정trainControl(myControl)을 반드시 사용하세요. 또한 사용자 지정tuneGrid를 사용해alpha = 0:1과, 각 alpha 값마다 0.0001부터 1 사이에서 20개의lambda값을 탐색하세요.- 콘솔에
model을 출력하세요. model[["results"]]의 ROC 통계량 중max()값을 출력하세요.model[["results"]][["ROC"]]로 접근할 수 있습니다.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Train glmnet with custom trainControl and tuning: model
model <- train(
___,
___,
tuneGrid = ___(
___,
___
),
method = ___,
trControl = ___
)
# Print model to console
# Print maximum ROC statistic