앙상블 기법

앙상블 기법 (Ensemble Methods) #

앙상블 기법(Ensemble Methods)은 여러 개의 기본 학습 알고리즘(base learner)을 결합하여 단일 알고리즘보다 더 좋은 예측 성능을 달성하는 기계학습 방법론이다. “집단 지성"의 원리를 활용하여 개별 모델의 약점을 보완하고 전체적인 안정성과 정확도를 향상시킨다.

앙상블의 기본 원리 #

1. 편향-분산 트레이드오프 #

  • 편향(Bias): 모델의 예측값과 실제값 간의 차이
  • 분산(Variance): 다른 훈련 데이터에 대한 모델 예측의 변동성
  • 노이즈(Noise): 데이터 자체의 불확실성

전체 오차:

$$\text{Error} = \text{Bias}^2 + \text{Variance} + \text{Noise}$$

2. 앙상블의 효과 #

  • 편향 감소: 부스팅 기법을 통해 달성
  • 분산 감소: 배깅 기법을 통해 달성
  • 과적합 방지: 여러 모델의 평균화 효과

앙상블의 종류 #

1. 동질적 앙상블 (Homogeneous Ensemble) #

같은 종류의 알고리즘을 여러 개 사용:

  • 랜덤 포레스트 (Random Forest)
  • 배깅 (Bagging)
  • 부스팅 (Boosting)

2. 이질적 앙상블 (Heterogeneous Ensemble) #

다른 종류의 알고리즘들을 결합:

  • 보팅 (Voting)
  • 스태킹 (Stacking)
  • 블렌딩 (Blending)

배깅 (Bootstrap Aggregating) #

1. 기본 개념 #

부트스트랩 샘플링을 통해 여러 모델을 학습하고 평균내는 방법이다.

부트스트랩 샘플링:

  • 원본 데이터에서 복원 추출로 같은 크기의 샘플 생성
  • 약 36.8%의 데이터가 OOB(Out-of-Bag) 샘플이 됨

2. 배깅 알고리즘 #

  1. 부트스트랩 샘플 생성: 원본 데이터에서 B개의 부트스트랩 샘플 생성
  2. 모델 학습: 각 샘플로 기본 학습기 훈련
  3. 예측 결합: 모든 모델의 예측을 평균(회귀) 또는 투표(분류)

예측 함수:

$$\hat{f}_{bag}(x) = \frac{1}{B} \sum_{b=1}^{B} \hat{f}_b(x)$$

3. 배깅의 장점 #

  • 분산 감소: 개별 모델의 높은 분산을 줄임
  • 과적합 방지: 평균화 효과로 과적합 완화
  • 병렬 처리: 각 모델을 독립적으로 훈련 가능
  • OOB 평가: 별도 검증 데이터 없이 성능 평가 가능

부스팅 (Boosting) #

1. 기본 개념 #

순차적으로 약한 학습기들을 학습하면서 이전 모델의 오류를 보정하는 방법이다.

2. AdaBoost (Adaptive Boosting) #

알고리즘:

  1. 초기화: 모든 샘플에 동일한 가중치 부여
  2. 모델 학습: 가중치가 적용된 데이터로 약한 학습기 훈련
  3. 오차 계산: 가중치 오차율 계산
  4. 모델 가중치: 성능에 따른 모델 가중치 결정
  5. 샘플 가중치 업데이트: 오분류된 샘플의 가중치 증가
  6. 반복: 지정된 횟수만큼 반복

최종 예측:

$$H(x) = \text{sign}\left(\sum_{t=1}^{T} \alpha_t h_t(x)\right)$$

여기서 $\alpha_t$는 모델 가중치, $h_t(x)$는 t번째 약한 학습기이다.

3. Gradient Boosting #

손실 함수의 기울기를 이용해 순차적으로 모델을 개선한다.

알고리즘:

  1. 초기 예측: 평균값으로 초기화
  2. 잔차 계산: 실제값과 예측값의 차이
  3. 모델 학습: 잔차를 예측하는 모델 훈련
  4. 예측 업데이트: 학습률을 적용하여 예측값 업데이트
  5. 반복: 지정된 횟수만큼 반복

예측 업데이트:

$$F_{m+1}(x) = F_m(x) + \nu \cdot h_m(x)$$

여기서 ν는 학습률이다.

4. XGBoost (Extreme Gradient Boosting) #

그래디언트 부스팅의 개선된 버전으로 다음과 같은 특징이 있다:

  • 정규화: L1, L2 정규화 적용
  • 병렬 처리: 트리 구축 과정 병렬화
  • 결측값 처리: 자동 결측값 처리
  • 조기 종료: 과적합 방지

보팅 (Voting) #

1. 하드 보팅 (Hard Voting) #

각 모델의 예측 클래스 중 가장 많이 선택된 클래스를 최종 예측으로 선택한다.

$$\hat{y} = \text{mode}\{h_1(x), h_2(x), ..., h_m(x)\}$$

2. 소프트 보팅 (Soft Voting) #

각 모델의 예측 확률을 평균내어 최종 예측을 결정한다.

$$\hat{y} = \arg\max_c \frac{1}{m} \sum_{i=1}^{m} p_{i,c}(x)$$

여기서 $p_{i,c}(x)$는 모델 i가 클래스 c에 대해 예측한 확률이다.

스태킹 (Stacking) #

1. 기본 개념 #

여러 기본 모델(Level 0)의 예측을 입력으로 하는 메타 모델(Level 1)을 학습하는 방법이다.

2. 스태킹 알고리즘 #

  1. 기본 모델 훈련: 여러 다른 알고리즘으로 기본 모델들 훈련
  2. 메타 특성 생성: 기본 모델들의 예측값을 새로운 특성으로 사용
  3. 메타 모델 훈련: 메타 특성을 입력으로 하는 메타 모델 훈련
  4. 최종 예측: 메타 모델의 출력을 최종 예측값으로 사용

3. 블렌딩 (Blending) #

스태킹의 단순화된 버전으로, 홀드아웃 검증 세트를 사용하여 메타 특성을 생성한다.

다양성 확보 방법 #

1. 데이터 다양성 #

  • 부트스트랩 샘플링: 서로 다른 훈련 데이터
  • 특성 부분집합: 서로 다른 특성 조합 사용
  • 교차 검증: 다른 폴드로 훈련

2. 알고리즘 다양성 #

  • 이질적 모델: 다른 종류의 알고리즘 사용
  • 하이퍼파라미터: 같은 알고리즘의 다른 설정
  • 아키텍처: 다른 구조의 신경망

3. 목적 함수 다양성 #

  • 다른 손실 함수: 각각 다른 최적화 목표
  • 가중치: 클래스나 샘플에 다른 가중치 적용

앙상블의 이론적 기반 #

1. 콘도르세 배심원 정리 (Condorcet’s Jury Theorem) #

개별 분류기가 무작위보다 좋다면, 분류기 수가 증가할수록 앙상블의 정확도는 1에 수렴한다.

2. 편향-분산 분해 #

배깅은 주로 분산을 줄이고, 부스팅은 주로 편향을 줄인다.

배깅의 분산 감소:

$$\text{Var}[\bar{f}] = \frac{1}{B} \text{Var}[f]$$

실제 적용 예시 #

1. 캐글 대회 #

  • 상위 랭커들의 필수 기법
  • 다양한 모델의 앙상블
  • 스태킹과 블렌딩 활용

2. 금융 서비스 #

  • 신용 평가 모델
  • 사기 탐지 시스템
  • 리스크 관리

3. 추천 시스템 #

  • 여러 추천 알고리즘의 결합
  • 협업 필터링과 내용 기반 필터링 앙상블

4. 의료 진단 #

  • 여러 진단 모델의 결합
  • 안전성과 정확도 향상

앙상블의 장점과 단점 #

장점 #

  1. 성능 향상: 단일 모델보다 일반적으로 더 좋은 성능
  2. 안정성: 개별 모델의 변동성 감소
  3. 과적합 방지: 여러 모델의 평균화 효과
  4. 견고성: 노이즈나 이상치에 더 강함
  5. 일반화: 다양한 패턴 포착 가능

단점 #

  1. 복잡성: 모델이 복잡해져 해석이 어려움
  2. 계산 비용: 여러 모델을 훈련하고 예측해야 함
  3. 저장 공간: 모든 모델을 저장해야 함
  4. 과적합 위험: 너무 복잡한 앙상블은 과적합 가능
  5. 조율의 어려움: 많은 하이퍼파라미터 조정 필요

성능 최적화 방법 #

1. 모델 선택 #

  • 다양성 확보: 서로 다른 특성을 가진 모델 선택
  • 성능 기준: 개별 성능과 다양성의 균형
  • 계산 효율성: 예측 시간과 성능의 트레이드오프

2. 가중치 최적화 #

  • 성능 기반: 개별 모델의 성능에 따른 가중치
  • 동적 가중치: 입력에 따라 달라지는 가중치
  • 학습 기반: 가중치 자체를 학습

3. 앙상블 크기 최적화 #

  • 성능 포화점: 더 이상 성능 향상이 없는 지점 찾기
  • 다양성 유지: 유사한 모델 제거
  • 계산 제약: 실시간 처리 요구사항 고려

최신 앙상블 기법 #

1. Deep Ensemble #

여러 신경망을 앙상블하여 불확실성 추정과 성능 향상을 동시에 달성

2. Snapshot Ensemble #

하나의 신경망 훈련 과정에서 여러 스냅샷을 저장하여 앙상블 구성

3. Multi-task Ensemble #

여러 관련 작업을 동시에 학습하는 앙상블

4. Adversarial Ensemble #

적대적 공격에 강건한 앙상블 구성

구현 시 고려사항 #

1. 교차 검증 #

  • 중첩 교차 검증: 앙상블의 공정한 평가
  • 시간 분할: 시계열 데이터의 적절한 분할
  • 층화 샘플링: 클래스 불균형 고려

2. 메모리 관리 #

  • 모델 압축: 중요하지 않은 모델 제거
  • 지연 로딩: 필요시에만 모델 로드
  • 분산 처리: 여러 머신에 모델 분산

3. 실시간 처리 #

  • 캐싱: 중간 결과 저장
  • 병렬 처리: 모델 병렬 실행
  • 근사 방법: 정확도를 조금 포기하고 속도 향상

평가 방법 #

1. 개별 기여도 분석 #

  • 제거 분석: 각 모델을 제거했을 때의 성능 변화
  • 샤플리 값: 게임 이론 기반 기여도 측정
  • 순열 중요도: 특성 순열을 통한 중요도 측정

2. 다양성 측정 #

  • 불일치 측정: 모델 간 예측 차이
  • 상관관계: 모델 예측 간 상관관계
  • 정보 이득: 모델 추가로 인한 정보 증가

앙상블 기법은 현대 기계학습에서 필수적인 방법론으로, 단일 모델의 한계를 극복하고 더 나은 성능을 달성할 수 있게 해준다. 적절한 다양성 확보와 모델 결합 방법 선택이 성공적인 앙상블의 핵심이며, 계산 비용과 성능 향상 간의 균형을 잘 맞추는 것이 중요하다.