랜덤 포레스트

R로 배우는 트리 기반 Machine Learning

Sandro Raabe

Data Scientist

랜덤 포레스트

  • 고차원 데이터에 적합
  • 사용이 쉽습니다
  • 기본 설정만으로도 성능 우수
  • 다양한 패키지 구현: ranger, randomForest
  • 이들 패키지의 tidymodels 인터페이스: rand_forest() (parsnip 패키지 포함)
R로 배우는 트리 기반 Machine Learning

아이디어

  • 기본 아이디어(배깅과 동일): 부트스트랩 샘플로 트리 학습
  • 핵심 차이: 트리마다 예측 변수를 무작위 선택 → 랜덤 포레스트
R로 배우는 트리 기반 Machine Learning

직관

랜덤 포레스트 개념도

R로 배우는 트리 기반 Machine Learning

코딩: 랜덤 포레스트 모델 지정

  • 함수명: rand_forest()

하이퍼파라미터:

  • mtry: 각 노드에서 볼 예측 변수 수, 기본값:
    $$\left\lfloor\sqrt\text{num predictors}\right\rfloor$$
  • trees: 포레스트의 트리 수
  • min_n: 허용되는 최소 노드 크기
rand_forest(

mtry = 4,
trees = 500,
min_n = 10) %>%
# Set the mode set_mode("classification") %>%
# Use engine ranger or randomForest set_engine("ranger")
R로 배우는 트리 기반 Machine Learning

코딩: 랜덤 포레스트 모델 지정

spec <- rand_forest(trees = 100) %>%

set_mode("classification") %>%
set_engine("ranger")
랜덤 포레스트 모델 사양

(분류)
주요 인자: trees = 100
계산 엔진: ranger
R로 배우는 트리 기반 Machine Learning

포레스트 학습

spec %>% fit(still_customer ~ ., data = customers_train)
parsnip 모델 객체

학습 시간: 631ms 
Ranger 결과

트리 수:                        100 
샘플 수:                        9116 
독립 변수 수:                   19 
Mtry:                           4 
타깃 노드 최소 크기:            10
R로 배우는 트리 기반 Machine Learning

변수 중요도

rand_forest(mode = "classification") %>%
    set_engine("ranger", importance = "impurity") %>%

fit(still_customer ~ ., data = customers_train) %>%
vip::vip()

vip 플롯

R로 배우는 트리 기반 Machine Learning

랜덤 포레스트를 심어 봅시다!

R로 배우는 트리 기반 Machine Learning

Preparing Video For Download...