Skip to content

Random Forest #

Find similar titles

13회 업데이트 됨.

Edit
  • 최초 작성자
  • 최근 업데이트

Structured data

Category
Statistics

Random Forest (랜덤 포레스트) #

Random Forest 란? #

과대 적합(overfitting) 을 방지하기 위해, 최적의 기준 변수를 랜덤하게 선택하는 breiman(2001)이 제안한 머신러닝 기법이다. Random Forest는 랜덤으로 일부 feature만을 선택하여 Decision tree (의사결정나무)를 만들고, 해당 과정을 반복하여 여러개의 Decision tree를 형성합니다. 여러 개의 Decision tree에서 나온 예측값을 토대로 가장 많이 나온 값을 최종 예측값으로 선정합니다. 최종 예측값을 산정하는 방법에서 분류모델은 가장 많이 등장한 값을 선택하고 회귀일 경우 평균값을 많이 사용합니다.

Random Forest처럼 여러 개의 결과를 합쳐 최종 결과를 도출하는 방식을 앙상블 (Ensemble) 모델이라고 합니다. 앙상블 모델에 대한 자세한 설명은 아래 링크에서 확인할 수 있습니다. (출처)

Image

그림1. Random Forest 그림 (출처)

Random Forest의 장점 #

  • Classification 및 Regression 문제에 모두 사용 가능
  • 대용량 데이터 처리에 효과적
  • 과대적합 문제 최소화하여 모델의 정확도 향상

Random Forest의 단점 #

  • 랜덤 포레스트 특성상 데이터 크기에 비례해서 수백개에서 수천개의 트리를 형성하기에 예측에 오랜 프로세스 시간이 걸림
  • 랜덤 포레스트 모델 특성상 생성하는 모든 트리 모델을 다 확인하기 어렵기에 해석 가능성이 떨어짐.

랜덤포레스트 구축 #

1) 랜덤포레스트 모델을 만들기 위해 생성할 트리의 개수를 지정 (bootstrap sampling(부트스트랩 샘플링) - Original sample 집단에서 더 작지만, 무수히 많은 집단으로 랜덤하게 뽑는 방법)

Image

그림2. 부트스트랩 샘플링 (출처)

  • 각 트리는 고유하게 무작위적으로 선택해서 만들어 짐
  • n_samples 개의 데이터 포인트 중에서 n_samples 횟수만큼 반복 추출 (한 표본이 여러 번 중복으로 추출될 수 있음)
  • 추출한 데이터 세트는 원래 데이터 세트 크기와 같지만, 어떤 데이터 포인트는 누락 될 수 있고(대략 1/3), 어떤 데이터 포인트는 중복되어 들어 있을 수 있음
  • 뽑은 데이터 세트로 결정 트리를 만듦
  • 트리의 분기마다 feature을 사용 (몇 개의 feature를 고를지는 max_features로 조정); max feature 값 클수록 트리들은 비슷해지고, 낮출수록 트리들은 많이 달라지고 각 트리는 데이터에 맞추기 위해 깊이가 깊어짐

2) Bootstrap sample에 대해 Random Forest Tree 모형 제작

  • 전체 변수 중에서 m개 변수를 랜덤하게 선택
  • 최적의 classifier 선정
  • classifier 따라 두 개의 daughter node 생성

3) Tree 들의 앙상블 학습 결과 출력

랜덤포레스트 대안책 #

XGBoost #

XGBoost는 Random Forest와 유사하게 여러 개의 의사결정나무를 이용한 앙상블 모델입니다. 하지만, XGBoost는 Random Forest와의 성능 차이를 위해 Boosting 방법을 이용하여 구현되었습니다. 참고로 Random Forest는 Bagging 방법을 이용하여 구현되었습니다. 또한, XGBoost는 Gradient Boosting 대비 빠른 수행시간을 가졌고 분류와 회귀 두 영역에서 아주 효율적인 예측 성능을 발휘하고 있어 산업 부분에서도 널리 사용되고 있습니다.

Reference #

0.0.1_20240214_1_v81