랜덤 포레스트


배깅(bagging)은 앞에서 보팅과는 다르게, 같은 알고리즘으로 여러 개의 분류기를 만들어서 보팅으로 최종 결정하는 알고리즘이다. 배깅의 대표적인 알고리즘이 랜덤 포레스트이며 이는 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있고, 다양한 영역에서 높은 예측 성능을 보인다.

 

랜덤 포레스트의 기반 알고리즘은 결정 트리로서, 결정 트리의 쉽고 직관적인 장점을 그대로 가지고 있다.

또한 랜덤 포레스트뿐만 아니라 부스팅 기반의 다양한 앙상블 알고리즘 역시 대부분의 결정 트리 알고리즘을 기반 알고리즘으로 채택하고 있다.

 

랜덤 포레스트는 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측을 결정하게 된다.

 

 

랜덤 포레스트는 개별적인 분류기의 기반 알고리즘은 결정 트리지만 개별 트리가 학습하는 데이터 셋은 전체 데이터에서 일부가 중첩되게 샘플링된 데이터 셋이다.

 

여러 개의 데이터 셋을 중첩되게 분리하는 것을 부트스트래핑(bootstrapping) 분할 방식이라 한다. 그래서 배깅(Bagging)이 bootstrap aggregating의 줄임말이다. 원래 부트스트랩은 통계학에서 여러 개의 작은 데이터 셋을 임의로 만들어 개별 평균 분포도를 측정하는 등의 목적을 위한 샘플링 방식을 지칭한다.

 

랜덤 포레스트의 서브셋(Subset) 데이터는 이러한 부트스트래핑으로 데이터가 임의로 만들어진다. 서브셋 데이터 건수는 전체 데이터 건수와 동일하지만, 개별 데이터가 중첩되어 만들어진다. 원본 데이터의 건수가 10개인 학습 데이터 셋에 랜덤 포레스트를 3개의 결정 트리 기반으로 학습하려고 n_estimators = 3으로 하이퍼 파라미터를 부여하면 다음과 같이 데이터 서브 셋이 만들어진다.

 

 

Reference


[1] 파이썬 머신러닝 완벽가이드

[2] https://yeo0.github.io/data/2018/11/06/6.-랜덤-포레스트/

 

+ Recent posts