랜덤 포레스트

R로 하는 Supervised Learning: 회귀

Nina Zumel and John Mount

Win-Vector, LCC

랜덤 포레스트

다양한 의사결정 트리를 여러 개 평균한 모델

  • 과적합 감소
  • 모델 표현력 향상
  • 더 세밀한 예측
R로 하는 Supervised Learning: 회귀

랜덤 포레스트 모델 구축

  1. 훈련 데이터에서 부트스트랩 샘플 추출
  2. 각 샘플로 트리 성장
    • 각 노드에서 (전체 변수의 무작위 부분집합 중) 최적 분할 변수 선택
    • 트리가 완성될 때까지 반복
  3. 데이터 점수 산출 시 모든 트리로 평가하여 결과를 평균
R로 하는 Supervised Learning: 회귀

예시: 자전거 대여 데이터

cnt ~ hr + holiday + workingday + 
  weathersit + temp + atemp + hum + windspeed

R로 하는 Supervised Learning: 회귀

ranger()로 랜덤 포레스트 구축

model <- ranger(fmla, bikesJan, 
                num.trees = 500, 
                respect.unordered.factors = "order")
  • formula, data
  • num.trees (기본값 500) - 최소 200 이상 사용
  • mtry - 각 노드에서 시도할 변수 수
    • 기본값: 전체 변수 수의 제곱근
  • respect.unordered.factors - "order" 설정 권장
    • 범주형 변수의 "안전한" 해싱
R로 하는 Supervised Learning: 회귀

ranger()로 랜덤 포레스트 구축

model
Ranger result
...
OOB prediction error (MSE):       3103.623 
R squared (OOB):                  0.7837386

랜덤 포레스트 알고리즘은 샘플 외 성능 추정치를 반환합니다.

R로 하는 Supervised Learning: 회귀

ranger() 모델로 예측하기

bikesFeb$pred <- predict(model, bikesFeb)$predictions

predict() 입력값:

  • 모델
  • 데이터

예측값은 predictions 요소에서 확인할 수 있습니다.

R로 하는 Supervised Learning: 회귀

모델 평가

RMSE 계산:

bikesFeb %>% 
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2)))
      rmse
1 67.15169
모델 RMSE
준포아송 69.3
랜덤 포레스트 67.15
R로 하는 Supervised Learning: 회귀

모델 평가

R로 하는 Supervised Learning: 회귀

모델 평가

R로 하는 Supervised Learning: 회귀

연습해 봅시다!

R로 하는 Supervised Learning: 회귀

Preparing Video For Download...