개발로그필름
[ML] 앙상블이란? 본문
728x90
반응형
SMALL
반응형
머신러닝의 핵심 개념 중 하나인 앙상블(Ensemble) 기법
1. 앙상블이란?
여러 개의 모델(약한 모델)을 결합하여 더 강력한 예측 모델을 만드는 방법
- 단일 모델은 편향(bias) 또는 분산(variance)에 문제가 있을 수 있다
- 앙상블은 이런 약점을 다양한 관점에서 보완해서 정확도와 안정성을 높여준다
2. 왜 앙상블이 필요할까?
- 단일 모델은 한계가 있다
- 예를 들어, 결정트리는 과적합되기 쉬움
- 선형 회귀는 너무 단순해서 복잡한 관계를 놓침
- 하지만 여러 모델을 적절히 결합하면,
- 정확도 향상
- 일반화 성능 개선
- 과적합 방지
3. 앙상블의 대표적인 유형
앙상블은 대표적으로 네 가지 방식으로 나눌 수 있다
1) 보팅(Voting) – 모델 다수결 또는 평균
서로 다른 여러 개의 모델을 학습시킨 후, 예측 결과를 결합하여 최종 결과 도출
하드 보팅 (Hard Voting)
- 각 모델이 예측한 클래스에 투표
- 다수결로 최종 결과 결정
소프트 보팅 (Soft Voting)
- 각 모델의 확률 예측값을 평균
- 확률이 가장 높은 클래스를 선택
- 성능이 더 좋은 경우가 많음
특징
- 서로 다른 종류의 모델(Logistic, SVM, Tree 등) 조합 가능
- 주로 분류 문제에 사용
2) 배깅(Bagging) – 병렬 학습 + 평균/투표
같은 모델 여러 개를 사용하되, 데이터 샘플링을 다르게 해서 학습
특징
- 훈련 데이터를 중복 허용(bootstrap) 하여 랜덤 샘플 추출
- 모델은 독립적으로 병렬 학습
- 예측 결과는 평균(회귀) 또는 투표(분류)
대표 모델:
랜덤 포레스트(Random Forest)
- 여러 개의 결정트리를 만들어 평균 또는 투표
장점
- 과적합 방지에 효과적
- 분산(Variance) 감소
단점
- 편향(Bias)은 크게 줄이지 못함
3) 부스팅(Boosting) – 순차적 학습 + 오차 보완
여러 개의 약한 모델(보통 결정트리)을 순차적으로 연결하여 점점 더 정교한 모델을 만듬
작동 원리
- 첫 번째 모델이 학습한 후
- 두 번째 모델이 이전 모델이 틀린 데이터에 집중해서 학습
- 이런 식으로 반복
대표 알고리즘
- Gradient Boosting
- XGBoost
- LightGBM
- AdaBoost
장점
- 편향(Bias)을 줄이는 데 효과적
- 높은 성능
단점
- 학습 시간이 길다
- 과적합 가능성 있음 → 규제 필요
4) 스태킹(Stacking) – 모델 위에 모델을 쌓음
여러 모델들의 예측값을 새로운 피처로 삼아, 다시 메타 모델로 학습
예시 구조
- 기본 모델 1: 로지스틱 회귀
- 기본 모델 2: 결정트리
- 기본 모델 3: SVM
- 메타 모델: 랜덤 포레스트
특징
- 다양한 모델의 장점을 조합
- 일반적으로 성능이 가장 좋지만 복잡함
4. 예제 코드 비교 (scikit-learn)
from sklearn.ensemble import VotingClassifier, BaggingClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
# 보팅 예시
voting = VotingClassifier(
estimators=[('lr', LogisticRegression()), ('dt', DecisionTreeClassifier()), ('svc', SVC(probability=True))],
voting='soft'
)
# 배깅 예시
bagging = BaggingClassifier(base_estimator=DecisionTreeClassifier(), n_estimators=10)
# 부스팅 예시
boosting = GradientBoostingClassifier(n_estimators=100)
voting.fit(X_train, y_train)
bagging.fit(X_train, y_train)
boosting.fit(X_train, y_train)
5. 앙상블 기법 비교 요약표
항목 | Voting | Bagging | Boosting | Stacking |
학습 방식 | 병렬 | 병렬 | 순차적 | 병렬 + 후속 학습 |
모델 조합 | 다른 모델 가능 | 같은 모델 여러 개 | 약한 모델 반복 개선 | 다양한 모델 가능 |
성능 향상 포인트 | 다양성 | 분산 감소 | 편향 감소 | 통합 성능 강화 |
과적합 위험 | 낮음 | 낮음 | 중간~높음 | 중간 |
사용 예시 | VotingClassifier | RandomForest | XGBoost, LightGBM | 모델 앙상블 최종화 |
앙상블의 장점 vs 단점
장점 |
단점 |
예측 성능 향상 | 모델 해석 어려움 |
과적합 방지 가능 | 학습 시간 증가 |
다양한 모델 조합 가능 | 구현 복잡도 증가 (특히 스태킹) |
요약
- 앙상블은 여러 모델을 조합해 예측력을 높이는 방법
- Voting은 다수결, 평균 기반 병렬 조합
- Bagging은 샘플을 다르게 뽑아 같은 모델 여러 개 학습
- Boosting은 이전 모델의 오류를 다음 모델이 보완하는 방식
- Stacking은 여러 모델 예측값을 다시 학습에 활용하는 방법
앙상블은 모델들을 조합하여 단일 모델보다 더 높은 예측 성능과 안정성을 얻기 위한 강력한 머신러닝 기법
반응형
LIST
'ML' 카테고리의 다른 글
[ML] stratify 옵션 이해하기 (0) | 2025.05.26 |
---|---|
[ML] 부트스트랩(복원추출) (0) | 2025.05.26 |
[ML] 결정트리회귀란? (0) | 2025.05.24 |
[ML] 결정나무의 주요 특징 (0) | 2025.05.24 |
[ML] 과소적합 vs 과대적합 (0) | 2025.05.23 |
Comments