모델의 올바른 학습

R로 하는 Supervised Learning: 회귀

Nina Zumel and John Mount

Win-Vector, LLC

모델은 학습 데이터보다 미래 데이터에서 성능이 크게 저하될 수 있습니다.

  • 학습 $R^2$: 0.9; 테스트 $R^2$: 0.15 -- 과적합
R로 하는 Supervised Learning: 회귀

테스트/학습 분할

데이터가 충분할 때 권장되는 방법

R로 하는 Supervised Learning: 회귀

예제: 여성 실업률 모델링

  • 66개 행으로 학습, 30개 행으로 테스트
R로 하는 Supervised Learning: 회귀

모델 성능: 학습 vs. 테스트

  • 학습: RMSE 0.71, $R^2$ 0.8
  • 테스트: RMSE 0.93, $R^2$ 0.75
R로 하는 Supervised Learning: 회귀

교차 검증

테스트 세트를 분리하기 어려울 만큼 데이터가 적을 때 적합

R로 하는 Supervised Learning: 회귀

교차 검증

R로 하는 Supervised Learning: 회귀

교차 검증

R로 하는 Supervised Learning: 회귀

교차 검증

R로 하는 Supervised Learning: 회귀

교차 검증 계획 생성

library(vtreat)
splitPlan <- kWayCrossValidation(nRows, nSplits, NULL, NULL)
  • nRows: 학습 데이터의 행 수
  • nSplits: 교차 검증의 폴드(분할) 수
    • 예: nfolds = 3 (3-겹 교차 검증)
  • 나머지 2개의 인수는 여기서 불필요
R로 하는 Supervised Learning: 회귀

교차 검증 계획 생성

library(vtreat)
splitPlan <- kWayCrossValidation(10, 3, NULL, NULL)

첫 번째 폴드 (A, B로 학습, C로 테스트)

splitPlan[[1]]
$train
1  2  4  5  7  9 10
$app
3 6 8

A, B로 학습, C로 테스트, 이후 반복...

split <- splitPlan[[1]]
model <- lm(fmla, data = df[split$train,])
df$pred.cv[split$app] <- predict(model, newdata = df[split$app,])
R로 하는 Supervised Learning: 회귀

최종 모델

R로 하는 Supervised Learning: 회귀

예제: 실업률 모델

측정 유형 RMSE $R^2$
학습 0.7082675 0.8029275
테스트 0.9349416 0.7451896
교차 검증 0.8175714 0.7635331
R로 하는 Supervised Learning: 회귀

연습해 봅시다!

R로 하는 Supervised Learning: 회귀

Preparing Video For Download...