학습 자료: 파이썬 머신러닝 완벽 가이드(개정2판), 위키북스
개요
여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법
정형 데이터 분류에서 뛰어난 성능을 보인다.
1. 보팅(Voting)
여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식
서로 다른 알고리즘을 가진 분류기를 결합
1) 하드 보팅(Hard Voting)
예측한 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정(다수결 원칙)
2) 소프트 보팅(Soft Voting)
분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정.
일반적으로 적용되는 보팅 방법
사이킷런
VotingClassifier()
- estimators: [('모델1 이름', 모델1), ('모델2 이름', 모델2)] 서로 다른 알고리즘 결합
- voting: 'soft' or 'hard'
2. 배깅(Bagging)
여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식
서로 같은 알고리즘을 기반으로, 데이터 샘플링을 서로 다르게 가져가면서 학습을 수행
개별 분류기에 할당된 학습 데이터는 원본 학습 데이터를 샘플링해 추출하는데, 이를 부트스트래핑(Bootsrapping) 분할 방식이라고 한다.
교차 검증이 데이터 간에 중첩을 허용하지 않는 것과 다르게 배깅 방식은 중첩을 허용한다.
대표 알고리즘: 랜덤 포레스트
랜덤 포레스트
개요
앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있으며, 다양한 영역에서 높은 예측 성능을 보임
기반 알고리즘은 결정 트리(Decision Tree). 랜덤 포레스트는 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정
랜덤 포레스트의 서브셋 데이터는 부트스트래핑을 방식을 통해 임의로 만들어진다.
서브셋의 데이터 건수는 전체 데이터 건수와 동일하지만, 개별 데이터가 중첩되어 만들어진다.
예시) 원본 데이터의 건수가 10개인 학습 데이터셋에 랜덤 포레스트를 3개의 결정 트리 기반으로 학습하기 위해 n_estimators=3으로 하이퍼 파라미터를 부여했을 경우 만들어진 데이터 서브셋
사이킷런
RandomForestClassifier()
- n_estimators: 랜덤 포레스트에서 결정 트리의 개수를 지정. 디폴트는 10개. 많이 설정할수록 성능이 높아지지만, 늘릴수록 학습 수행 시간이 늘어남.
- max_features: 최적의 분할을 위해 고려할 최대 피처 개수. 결정 트리에 사용된 max_features와 같음. 다른 점은 디폴트값이 None이 아니라 auto=sqrt라는 것.
- max_depth, min_samples_leaf, min_samples_split은 결정 트리와 동일
feature_importances_: 피처 중요도
3. 부스팅(Boosting)
여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서는 올바르게 예측할 수 있도록 다음 분류기에서는 가중치(weight)를 부여하면서 학습과 예측을 진행
예측 성능이 뛰어나 앙상블 학습을 주도한다.
대표 알고리즘: 그래디언트 부스트, XGBoost(eXtra Gradient Boost), LightGBM(Light Gradient Boost)
-> 다음 포스트에서 따로 작성
4. 스태킹(Stacking)
여러 가지 다른 모델의 예측 결괏값을 다시 학습 데이터로 만들어서 다른 모델(메타 모델)로 재학습시켜 결과를 예측하는 방식
'ML' 카테고리의 다른 글
[머신러닝/사이킷런] 앙상블 학습(분류): 부스팅(GBM, XGBoost, LightGBM) (0) | 2025.02.17 |
---|---|
[머신러닝/사이킷런] 분류 모델: 결정 트리(Decision Tree) (0) | 2025.02.16 |
[머신러닝/사이킷런] 분류 모델 평가(정확도, 오차행렬, 정밀도, 재현율, F1 Score, ROC AUC) (0) | 2025.02.13 |