이번 글에서는 앙상블 학습 유형 중 하나인 배깅에 대해 소개한다.
- 보팅(Voting)
- 배깅(Bagging)
- 부스팅(Boosting)
Bagging
Bagging은 이전 글에서 소개한 Voting과는 달리 같은 알고리즘으로 여러개의 분류기를 만들고, 보팅으로 최종 결정하는 알고리즘이다. 대표적으로는 랜덤 포레스트(Random Forest) 알고리즘이 있다. 랜덤 포레스트는 결정 트리(Dicision Tree)를 기반 알고리즘으로 사용한다. 랜덤 포레스트는 앙상블 알고리즘 중 비교적 빠른 속도를 가지고 있고, 다양한 영역에서 높은 예측 성능을 보인다.
Bagging이 Voting과 다른 점은 크게 두 가지이다.
- 보팅은 여러가지 종류의 Classifier를 사용하지만, 배깅은 한 종류의 Classifier를 사용한다.
- 보팅은 각각의 Classifier가 전체 데이터셋에 대하여 학습하지만, 배깅은 각각의 Classifier가 부트 스트래핑(Bootstrapping)을 통해 분리된 데이터 셋을 학습한다.
그림을 통해 두 방식의 차이점을 살펴보자. 우선 보팅 방식은 Dicision Tree, K Nearest Kneighbor, Logistic Regression 등 다양한 Classifier를 사용하지만, 배깅 방식은 Decision Tree 한 종류의 Classifier를 여러 개 사용한다. 또한 보팅은 전체 데이터셋을 각각의 Classifier가 동일하게 사용하지만, 배깅 방식은 데이터셋을 분할하여 각각의 Classifier가 서로 다른 서브 데이터셋을 이용하여 학습한다. 이 때 데이터셋을 여러 개의 서브 데이터셋으로 분할하는 방법으로 부트스트래핑(Bootstrapping)을 사용한다(Bagging은 Bootstrap aggregating의 줄임말이다).
Bootstrapping(부트스트래핑)
부트스트래핑 여러 개의 데이터 셋을 중첩되게 분리하는 방식을 일컫는다. 보통 데이터셋을 분할할 때는 하나의 데이터셋 안에 같은 데이터가 중복되어 들어갈 수 없다. 그러나 부트스트래핑 방식을 이용하면 서브 데이터셋에 같은 데이터가 중복되어 들어갈 수 있다. 위의 그림을 보면 첫 번째 서브 데이터셋에 X8이 3개 중복되어 들어간 것을 확인할 수 있다.
부트스트래핑의 특징은 두 가지로 정리할 수 있다.
- 서브 데이터셋에 데이터가 중복되어 들어갈 수 있다.
- 만들어진 서브 데이터셋들은 Original Dataset과 동일한 크기를 가진다.
Random Forest(랜덤 포레스트)
랜덤 포레스트는 배깅의 대표적인 알고리즘으로 Classifier로 Decision Tree를 사용하는 알고리즘이다.
랜덤 포레스트의 중요 하이퍼 파라미터는 다음과 같다.
- n_estimators: 생성할 결정트리의 개수를 지정한다. 결정트리의 개수가 많을수록 성능이 좋아지지만 너무 높은 값을 지정하게 되면 과적합의 문제가 발생하거나, 학습 수행시간이 길어질 수 있다. default = 10
- max_features: 랜덤 포레스트의 트리를 분할하는 피처를 참조할 때 사용하는 피처의 개수를 지정한다. 결정트리의 max_features 하이퍼 파라미터는 default = None 즉, 모든 피처를 참조하지만, 랜덤 포레스트의 max_features는 default = auto(sqrt) 즉, 전체 피처 개수의 루트를 씌운 만큼(16개일 경우 4개)만 피처를 참조하여 결정트리를 분할한다. 모든 피처를 참조하여 결정 트리를 분할하고 싶다면 이 하이퍼 파라미터를 조정해야 한다.
- 랜덤 포레스트도 결정트리 기반 알고리즘이므로 max_depth, min_samples_leaf, min_samples_split과 같은 결정 트리 하이퍼 파라미터들이 동일하게 사용된다.
'Machine Learning > Classification' 카테고리의 다른 글
세 가지 결정 이론(오분류 비율 최소화, 기대 손실 최소화, 거부 옵션) (0) | 2023.01.27 |
---|---|
스태킹 앙상블 (Stacking Ensemble) (0) | 2022.08.05 |
부스팅(Boosting) - XGBoost, LightGBM (0) | 2022.08.04 |
Ensemble Learning - Voting(보팅) (1) | 2022.08.02 |
결정 트리(Decision Tree) (0) | 2022.05.27 |