glmnet 소개

R의 caret로 배우는 Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

glmnet 소개

  • 변수 선택이 내장된 glm 모델의 확장
  • 다중공선성과 소표본 문제에 도움
  • 두 가지 기본 형태
    • 라쏘 회귀: 0이 아닌 계수 개수에 패널티 부과
    • 릿지 회귀: 계수의 절대 크기에 패널티 부과
  • 간결한(즉, 단순한) 모델을 탐색
  • 랜덤 포레스트와 궁합이 좋음
R의 caret로 배우는 Machine Learning

glmnet 모델 튜닝

  • 라쏘와 릿지 회귀의 결합
  • 두 모델의 혼합 비율을 적합 가능
  • alpha [0, 1]: 순수 릿지 → 순수 라쏘
  • lambda (0, infinity): 패널티 크기
R의 caret로 배우는 Machine Learning

예시: "오버핏 금지"

# Load data
overfit <- read.csv("overfit.csv")

# Make a custom trainControl
myControl <- trainControl(
  method = "cv", 
  number = 10,
  summaryFunction = twoClassSummary,
  classProbs = TRUE, # <- Super important!
  verboseIter = TRUE
)
R의 caret로 배우는 Machine Learning

기본값으로 시도

# Fit a model
set.seed(42)
model <- train(
  y ~ ., 
  overfit, 
  method = "glmnet", 
  trControl = myControl
)

# Plot results
plot(model)
  • alpha 3개 값
  • lambda 3개 값
R의 caret로 배우는 Machine Learning

결과 플롯

세 정규화 매개변수에 대해 혼합 비율별 교차 검증 ROC 곡선 선 그래프. 중간 정규화 값에서 0.55 지점에 피크가 있음.

R의 caret로 배우는 Machine Learning

연습해 봅시다!

R의 caret로 배우는 Machine Learning

Preparing Video For Download...