4-3. 랜덤포레스트

jwKim·2023년 1월 23일
0

랜덤포레스트

01) 랜덤포레스트 개요

배깅(Bagging) 기법은 앞서 살펴본 보팅(Voting)과 달리 하나의 알고리즘에 다양한 서브 데이터셋을 적용하는 기법이다. 배깅의 대표적인 방식은 랜덤포레스트가 있다.

랜덤포레스트는 이름에서도 알 수 있듯이 결정트리가 기본이 되는 모델이다.(tree가 많으면 forest가 되듯!) 랜덤포레스트는 여러 개의 결정트리가 각각 서브 데이터셋으로 학습을 한 뒤 결과를 종합하는 방식이다.

앞서 상상블 학습 개요에서 잠깐 언급한 것과 같이 랜덤포레스트는 각각의 결정트리가 학습하는 서브 데이터셋은 전체 데이터셋에서 복원추출한 결과이고, 전체 데이터셋에서 복원추출을 통한 서브 데이터셋을 만드는 것을 부트스래핑(Bootstrapping)이라고 한다. 아래는 부트스트래핑의 이해를 돕기 위한 그림이다.

img 1부터 10까지의 데이터가 있다고 가정할 때 서브 데이터셋 1, 2, 3은 전부 복원추출을 통해 만들어진다.(예를 들면 서브 데이터셋 1에 3이 세 번 중복되고, 8이 두 번 중복되는 것을 볼 수 있다.)

< 출처 >
교재

랜덤포레스트는 skleanr.ensemble 모듈 안에 RandomForestClassifier() 클래스로 구현되어 있다. 사용 방법은 다른 sklearn의 모델들과 동일하게 사용 가능하다. 다음 절에서 랜덤포레스트의 하이퍼 파라미터에 대해 살펴보자.

02) 랜덤포레스트 하이퍼파라미터

랜덤포레스트의 하이퍼파라미터는 결정트리에서 사용하는 하이퍼파라미터와 같은 부분이 많다. 아래에서 랜덤포레스트의 주요한 하이퍼파라미터를 확인할 수 있다.

  • n_esimators : 결정트리의 개수를 지정한다. default는 10개이며 개수가 많아질 수록 성능이 높아진다. 하지만 개수가 늘어날 수록 성능이 무조건 높아지는 것도 아니며, 수행 시간이 늘어난다.
  • max_features : 결정트리의 max_features와 동일 하지만 default 값이 결정트리는 'None'인데 비해 랜덤포레스트는 'sqrt'다.(제곱근)
  • max_depth, min_samples_leaf도 동일하게 사용 가능
  • n_job : CPU 병렬처리에 사용할 CPU 코어 개수를 지정한다. -1로 설정 시 사용 가능한 모든 CPU 코어를 사용한다.




랜덤포레스트는 예측성능은 뒤에서 이야기할 부스팅 기법의 모델들보다 성능은 떨어져도 CPU 병렬처리를 지원하여 학습 속도는 빨라 우선적으로 랜덤포레스트 모델을 구축하기도 한다.

0개의 댓글