배깅(Bagging) - 랜덤 포레스트(Random Forest)
- 배깅의 대표적인 알고리즘은 랜덤 포레스트입니다.
- 랜덤 포레스트는 다재 다능한 알고리즘입니다. 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있으며, 다양한 영역에서 높은 예측 성능을 보이고 있습니다.
- 랜덤 포레스트는 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예즉 결을 하게 됩니다.
랜덤포레스트의 부트스트래핑 분할
- 랜덤 포레스트는 개별적인 분류기의 기반 알고리즘은 결정 트리이지만 개별 트리가 학습하는 데이터 세트는 전세 데이터에서 일부가 중첩되게 샘플링된 데이터 세트입니다. 이렇게 여러 개의 데이터 세트를 중첩되게 분리하는 것을 부트스트래핑 (bootstrapping) 분할 방식이라고 합니다. (그래서 배깅 (Bagging) 이 bootstrap aggregating 의 줄임말입니다.)
- 원본 데이터의 건수가 10개인 학습 데이터 세트에 랜덤 포레스트를 3개의 결정 트리 기반으로 학습하려고 n_estimators= 3 으로 하이퍼 파라미터를 부여하면 다음과 같이 데이터 서브세트가 만들어 집니다.
사이킷런 랜덤 포레스트 하이퍼 파라미터
사이킷런은 랜덤 포레스트 분류를 위해 RandomForestClassifier 클래스틀 제공합니다.
RandomForestClassifier 하이퍼 파라미터
- n_estimators: 랜덤 포레스트에서 결정 트리의 개수를 지정합니다. 디폴트는 10 개입니다. 많이 설정할수록 좋은 성능을 기대할 수 있지만, 계속 증가시킨다고 성능이 무조건 향상되는 것은 아닙니다. 또한 늘릴수록 학습 수행 시간이 오래 걸리는것도 감안해야 합니다.
- max_features는 걸정 트리에 사용된 max_features 파라미터와 같습니다. 하지만 RandomForestClassifier 의 기본max_features는 'None’ 이 아니라 'auto', 즉 'sqrt’와 같습니다. 따라서 랜덤 포레스트의 트리를 분할하는 피쳐를 참조할
때 전체 피쳐가 아니라 sqrt(전체 피처 개수) 만큼 잠조합니다. (전체 피처가 16개라면 분할을 위해 4개 참조). - max_depth나 min_samples_leaf와 같이 결정 트리에서 과적합을 개선하기 위해 사용되는 파라미터가 랜덤 포레스트에도 똑같이 적용될 수 있습니다.
'Machine Learning > 머신러닝 완벽가이드 for Python' 카테고리의 다른 글
ch 4.03_4.05_앙상블, 랜덤포레스트, GBM(실습) (0) | 2022.10.11 |
---|---|
ch. 4.5 앙상블-부스팅 (0) | 2022.10.11 |
ch.4.3 앙상블 - 보팅 (1) | 2022.10.06 |
ch4.2 결정 트리(실습) (1) | 2022.10.06 |
ch.4.1~2. 분류의 종류, 결정 트리 (1) | 2022.10.06 |