개발로그필름

[ML] 앙상블이란? 본문

ML

[ML] 앙상블이란?

yuullog 2025. 5. 25. 15:16
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