Machine Learning/Supervised Learning

[Supervised Learning][Ensemble][Bagging] Random Forest

데이터 세상 2022. 10. 6. 15:21

Bagging(Bootstrap Aggregation)

여러 개의 학습 알고리즘, 모델을 통해 각각 결과를 예측하고 모든 결과를 동등하게 보고 취합해서 결과를 얻는 방식

한 가지 분류 모델을 여러 개 만들어서 서로 다른 학습 데이터로 학습시킨 후(bootstrap), 동일한 테스트 데이터에 대한 서로 다른 예측값들을 투표를 통해(aggregation) 가장 높은 예측값으로 최종 결론을 내리는 앙상블 기법

  • 기본 요소로 결정 트리 사용
  • 샘플을 여러 번 뽑아(Bootstrap) 각 모델을 학습시켜 결과물을 집계(Aggregration) 하는 방법
  • 무작위로 훈련 데이터 셋을 잘게 나눈 후 나누어진 훈련 데이터 셋을 여러 개의 모델에 할당하여 학습
  • 중복을 허용하며 훈련 데이터 셋을 나누는데 통계학에서는 이 방법을 부트스트랩, 중복이 허용된 리샘플링이라고 함

 

Random Forest

결정 트리를 배깅해서 예측을 실행하는 모델

  • bagging의 대표적인 모델
  • 성능이 매우 뛰어남
  • 매개 변수 튜닝을 많이 하지 않아도 잘 작동
  • 데이터의 스케일을 맞출 필요 없음

 

 

Random Forest 구성

Random Forest 는 전체 Feature 중 랜덤으로 일부 Feature만 선택해 하나의 결정 트리를 만들고, 또 전체 Feature 중 랜덤으로 일부 Feature를 선택해 또 다른 결정 트리를 만들며, 여러 개의 의사 결정 트리를 만드는 방식으로 구성

  • 의사 결정 트리마다 하나의 예측 값을 내놓음

 

여러 결정 트리들이 내린 예측 값들 중, 가장 많이 나온 값을 최종 예측값으로 정함

  • 다수결의 원칙에 따르는 것
  • 하나의 거대한 (깊이가 깊은) 결정 트리를 만드는 것이 아니라 여러 개의 작은 결정 트리를 만드는 것
  • 여러 개의 작은 결정 트리가 예측한 값들 중, 가장 많이 등장한 값(분류일 경우) 혹은 평균값(회귀일 경우)을 최종 예측 값으로 정하는 것

 

Random Forest의 Random (무작위적)의 의미

  • Random은, 각각의 의사 결정 트리를 만드는데 있어 쓰이는 특징들을 무작위로 선정한다는 의미
  • 예를 들어, 건강 위험도를 30개의 특징들로 설명할 수 있다면, 30개의 특징들 중 무작위로 일부만 선택하여, 가장 건강 위험도를 잘 예측할 수 있는 하나의 트리를 구성한다는 의미

 

Random Forest 장점과 단점

Random Forest 장점

  • 사용 가능한 가장 정확한 learning algorithm 중 하나
  • Classification(분류) 및 Regression(회귀) 문제에 모두 사용 가능
  • 대용량 데이터 처리에 효과적
  • 변수 삭제없이 수천개의 입력 변수를 처리할 수 있다
  • 분류에 중요한 변수를 추정
  • Missing value(결측치)를 다루기 쉬움
  • 모델의 노이즈를 심화시키는 Overfitting(오버피팅) 문제를 회피하여, 모델 정확도를 향상시킴
  • Classification 모델에서 상대적으로 중요한 변수를 선정 및 Ranking 가능

 

Random Forest 단점

  • noise classification/regression이 있는 일부 데이터 세트에 overfitting하는 것으로 관찰됨
  • 레벨 수가 다른 범주형 변주를 포함한 데이터의 경우 랜덤 포레스트는 더 많은 레벨을 가진 속성에 유리하게 편향된다. 따라서 랜덤 포레스트의 변수 importance scores는 이 유형의 데이터에 대해 신뢰할 수 없다

 

Scikit-Learn Random Forest Hyper-parameters

n_estimators: 랜덤 포레스트 안의 결정 트리 갯수

  • n_estimators는 클수록 좋다.
  • 결정 트리가 많을수록 더 깔끔한 Decision Boundary가 가능
  • 하지만 그만큼 메모리와 훈련 시간이 증가
  • Default는 10

 

max_features: 무작위로 선택할 Feature의 개수

  • max_features=n_features이면 30개의 feature 중 30개의 feature 모두를 선택해 결정 트리를 만든다.
  • 단, bootstrap=True이면 30개의 feature에서 복원 추출로 30개를 뽑는다
    • 특성 선택의 무작위성이 없어질 뿐 샘플링의 무작위성은 그대로인 것
    • bootstrap=True는 default 값
  • max_features 값이 크다면 랜덤 포레스트의 트리들이 매우 비슷해지고, 가장 두드러진 특성에 맞게 예측
  • max_features 값이 작다면 랜덤 포레스트의 트리들이 서로 매우 달라지고, 오버피팅이 줄어들 수 있다
  • max_features는 일반적으로 Defalut 값을 사용

 

max_depth : 트리의 깊이

min_samples_leaf : 리프노드가 되기 위한 최소한의 샘플 데이터 수

min_samples_split : 노드를 분할하기 위한 최소한의 데이터 수

max_leaf_nodes : 리프노드의 최대 개수

 


References

반응형